Sorry, complicated_computation() and f() are simplified too much. They do take more inputs.
Among the inputs to complicated_computation(), some is passed from the main() to f() by address since it is a big array, some is passed by value, some are created inside f() before the call to complicated_computation(). so actually (although not exactly) the code is like: int main(int argc, char ** argv) { int size; double *feature = new double[1000]; // compute values of elements of "feature" // some operations f(size, feature); // some operations delete [] feature; return 0; } void f(int size, double *feature) { vector<double> coeff; // read from a file into elements of coeff MyClass myobj; double * array = new double [coeff.size()]; for (int i = 0; i < coeff.size(); i++) // need to speed up by MPI. { array[i] = myobj.complicated_computation(size, coeff[i], feature); // time consuming } // some operations using all elements in array delete [] array; } --- On Thu, 1/28/10, Eugene Loh <eugene....@sun.com> wrote: > From: Eugene Loh <eugene....@sun.com> > Subject: Re: [OMPI users] speed up this problem by MPI > To: "Open MPI Users" <us...@open-mpi.org> > Date: Thursday, January 28, 2010, 11:40 PM > Tim wrote: > > > Thanks Eugene! > > > > My case, after simplified, is to speed up the > time-consuming computation in the loop below by assigning > iterations to several nodes in a cluster by MPI. Each > iteration of the loop computes each element of an array. The > computation of each element is independent of others in the > array. > > int main(int argc, char > ** argv) { > // some operations > f(size); > // some > operations > return 0; > } > void f(int size) > { // some > operations > int i; > double * array = new double > [size]; > for (i = 0; i < size; i++) // need to > speed up by MPI. > > { > array[i] = complicated_computation(); // > time consuming > What are the inputs to complicated_computation()? > Does each process know what the inputs are? Or, do > they need to come from the master process? Are there > many inputs? > > > } > // some operations using all > elements in array > delete [] array; > } > > > _______________________________________________ > users mailing list > us...@open-mpi.org > http://www.open-mpi.org/mailman/listinfo.cgi/users >