#include #include #include #include #include #include #include "ff/farm.hpp" using namespace std; using namespace ff; float **a; int n; float calc(float x) { long iter = (long) x; for(long i=0; ifrom; ito; i++) { for(int j=0; jsum += a[i][j]; } } return (t); } }; class Emitter : public ff_node { private: int chunk; public: Emitter(int c): chunk(c) {} void * svc(void * t) { a = new float * [n]; for(int i=0; ifrom = sent; c->to = (sent + chunk < n ? sent + chunk : n); sent = c->to; ff_send_out((void *) c); } return(EOS); } }; class Collector : public ff_node { private: float sum; public: int svc_init() { sum = 0.0; return(0); } void svc_end() { cout << "sum is " << sum << endl; return; } void * svc(void * t) { CHUNK * x = ((CHUNK *) t) ; sum += x->sum; return GO_ON; } }; int main(int argc, char * argv[]) { if(argc == 1) { cout << "Usage is:\n" << argv[0] << " veclen chunk [T(1)] numthread " << end l; return(0); } n = atoi(argv[1]); int chunk = atoi(argv[2]); int nw; float tc1; if(argc == 4) { nw = atoi(argv[3]); } if(argc == 5) { nw = atoi(argv[4]); tc1 = atof(argv[3]); } float sum = 0.0; ff_farm<> farm; vector workers; for(int i=0;i