Multiprocessor support

Forums

I was looking through the code for frealign_v8.f in version 8.08 to learn more about the OpenMP support and found that either OMP_NUM_THREADS or NCPUS can be used to set the number of OpenMP threads desired.

I just had a couple of rather simple questions about this...

First - Is there any difference in performance between the MP version with NCPUS set to 1 and the non-MP version?

Second - I noticed the cluster/qsub mrefine* scripts reference the non-MP version. Does the MP version not work here, or is that simply undesirable, i.e. because your cluster queueing system treats each processor as a separate "slot"?

If the latter, would the MP version work here with NCPUS fixed at 1?

I don't think there is a performance difference between the MP version with NCPUS set to 1 and the non-MP version. But I found that if you
do not set the NCPUS/OMP_NUM_THREADS variable, the program sometimes enters into a funny state where it never finishes.

You can use the mp version for the mrefine scripts. However, it only makes sense for the reconstructions (mode=0) since the code for the refinement is not parallelized. For refinement, it is more efficient to run several frealign jobs, each working on a part of the data set.