Running Fix GCMC Parallelized

Hi All,
I am trying to run a fix GCMC with the full energy option in parallel in a super computing environment. I am getting an error that fix GCMC does not currently support full_energy option with molecules on more than 1 MPI process. Could you please give me advice fixing this issue?
Regards,
Peter

Hi All,
I am trying to run a fix GCMC with the full energy option in parallel in a super computing environment. I am getting an error that fix GCMC does not currently support full_energy option with molecules on more than 1 MPI process. Could you please give me advice fixing this issue?

there is no simple fix. this has been discussed here on the mailing list before (please search the archives) and also on github at https://github.com/lammps/lammps/issues/467

you can obtain some moderate degree of parallelization by using either GPUs or Xeon Phi or multi-threading, provided the styles you are using support those.

axel.

Hi Axel,
Thank you. Would you mind explaining to me why fix GCMC with full energy does not work when I am trying to run the program on several cores but it would partially work by using multi-threading? How do these two approaches perform the command differently? I just think this might help me to better understand a possible solution.
thanks,
Peter

Hi Axel,
Thank you. Would you mind explaining to me why fix GCMC with full energy does not work when I am trying to run the program on several cores but it would partially work by using multi-threading? How do these two approaches perform the command differently? I just think this might help me to better understand a possible solution.

please read the discussions in the mailing list archives and the github issue. that explains the issue better than i could do.

Hi All,
Based on reading the GitHub discussion https://github.com/lammps/lammps/issues/467 , it seems as if inaccuracies occur when sharing tasks among processors. Instead of allowing inaccurate results, the lammps code was changed to error whenever one is sharing a specific task of fix GCMC with full energy among processors. In the computing environment I am using I have the ability to bind tasks to specific processors, shouldn’t this ensure that the calculations are done correctly? And if so, is there anyway to bypass this error manually?

Regards,
Peter

Hi All,
Based on reading the GitHub discussion https://github.com/lammps/lammps/issues/467 , it seems as if inaccuracies occur when sharing tasks among processors. Instead of allowing inaccurate results, the lammps code was changed to error whenever one is sharing a specific task of fix GCMC with full energy among processors. In the computing environment I am using I have the ability to bind tasks to specific processors, shouldn’t this ensure that the calculations are done correctly?

no. not at all. this is a principal issue due to MPI parallelization being based on domain decomposition.

And if so, is there anyway to bypass this error manually?

you can comment out the error message, but that will result in incorrect trajectories, so that is not really an option. the solution to this requires even programming an additional communication pattern into LAMMPS or using an elaborate buffering scheme. considering that the full_energy option to fix gcmc is horribly inefficient in the first place, you’d be better off using a proper monte carlo code instead of LAMMPS. but then again, domain decomposition in MC is a non-trivial thing in general.

axel.