Hi all, as the title suggest I am involved in a project which may involve parallelising the code of Giza++ so that it will run on supercomputers scalably on n number of processors. This would have obvious benefits to any researchers making regular use of Giza++ who would like it to finish in minutes rather than hours.
The first step of such a project was profiling Giza++ to see where the executable spends most of its time on a typical run. Such profiling indicated a number of candidate functions. One of which was model1::em_loop found in the model1.cpp file. In order to parallelise such a function (using OpenMPI) it is necessary to first come up with some kind of data decomposition strategy which minimizes the latency of interprocessor communication but ensures that the parallelisation has no side effects other than running faster on a number of processors up to some optimal number of processors where the latency of communication begins to outweigh the benefits of throwing more processors at the job. In order to do this I am trying to gain an understanding of the logic in the model1::em_loop function. However, intuitive comments are lacking in the code. Does anyone on this list have a good internal knowledge of this function? Enough to give a rough outline of the logic it contains in some kind of readable pseudocode? Thanks P.S. Apologies to anybody to whom this email was not of interest. -- The University of Edinburgh is a charitable body, registered in Scotland, with registration number SC005336. _______________________________________________ Moses-support mailing list [email protected] http://mailman.mit.edu/mailman/listinfo/moses-support
