Dear developers
I wish run multiple LAMMPS (Windows 10 version AUg 2023) jobs in parallel using Python.
I use Python multiprocessing package. All LAMMPS jobs run successfully but not in parallele but one after each other.
the Python code is:
import os
from lammps import lammps
import multiprocessing
# import random
# create multiple lammps jobs
# a=[]
# for i in range(30):
# a.append(random.randint(10000,50000))
# print(a)
args0 = ["-var", "myfile", "pubchem2256_atrazine", "-var", "seed1", "100001", "-var", "seed2", "100002", "-var", "seed3", "100003"]
args1 = ["-var", "myfile", "pubchem2256_atrazine", "-var", "seed1", "200001", "-var", "seed2", "200002", "-var", "seed3", "200003"]
args2 = ["-var", "myfile", "pubchem2256_atrazine", "-var", "seed1", "300001", "-var", "seed2", "300002", "-var", "seed3", "300003"]
args3 = ["-var", "myfile", "pubchem2256_atrazine", "-var", "seed1", "400001", "-var", "seed2", "400002", "-var", "seed3", "400003"]
args4 = ["-var", "myfile", "pubchem2256_atrazine", "-var", "seed1", "500001", "-var", "seed2", "500002", "-var", "seed3", "500003"]
args5 = ["-var", "myfile", "pubchem2256_atrazine", "-var", "seed1", "600001", "-var", "seed2", "600002", "-var", "seed3", "600003"]
args6 = ["-var", "myfile", "pubchem2256_atrazine", "-var", "seed1", "700001", "-var", "seed2", "700002", "-var", "seed3", "700003"]
args7 = ["-var", "myfile", "pubchem2256_atrazine", "-var", "seed1", "800001", "-var", "seed2", "800002", "-var", "seed3", "800003"]
args8 = ["-var", "myfile", "pubchem2256_atrazine", "-var", "seed1", "900001", "-var", "seed2", "900002", "-var", "seed3", "900003"]
args9 = ["-var", "myfile", "pubchem2256_atrazine", "-var", "seed1", "910001", "-var", "seed2", "910002", "-var", "seed3", "910003"]
lmp0 = lammps(cmdargs=args0)
lmp1 = lammps(cmdargs=args1)
lmp2 = lammps(cmdargs=args2)
lmp3 = lammps(cmdargs=args3)
lmp4 = lammps(cmdargs=args4)
lmp5 = lammps(cmdargs=args5)
lmp6 = lammps(cmdargs=args6)
lmp7 = lammps(cmdargs=args7)
lmp8 = lammps(cmdargs=args8)
lmp9 = lammps(cmdargs=args9)
# creating multiple processes
proc0 = multiprocessing.Process(target=lmp0.file("Organochloride_HO-H2O.lammps"))
proc1 = multiprocessing.Process(target=lmp1.file("Organochloride_HO-H2O.lammps"))
proc2 = multiprocessing.Process(target=lmp2.file("Organochloride_HO-H2O.lammps"))
proc3 = multiprocessing.Process(target=lmp3.file("Organochloride_HO-H2O.lammps"))
proc4 = multiprocessing.Process(target=lmp4.file("Organochloride_HO-H2O.lammps"))
proc5 = multiprocessing.Process(target=lmp5.file("Organochloride_HO-H2O.lammps"))
proc6 = multiprocessing.Process(target=lmp6.file("Organochloride_HO-H2O.lammps"))
proc7 = multiprocessing.Process(target=lmp7.file("Organochloride_HO-H2O.lammps"))
proc8 = multiprocessing.Process(target=lmp9.file("Organochloride_HO-H2O.lammps"))
proc9 = multiprocessing.Process(target=lmp9.file("Organochloride_HO-H2O.lammps"))
# Initiating process 1 to n
proc0.start()
proc1.start()
proc2.start()
proc3.start()
proc4.start()
proc5.start()
proc6.start()
proc7.start()
proc8.start()
proc9.start()
# Waiting until proc 0 to n finishes
# proc0.join()
# proc1.join()
# proc2.join()
# proc3.join()
# proc4.join()
# proc5.join()
# proc6.join()
# proc7.join()
# proc8.join()
# proc9.join()
# Processes finished
print("Both Processes Completed!")
This a rather simple procedure. But I do not understand why processes are ran one after each other, instead simultaneously. I ave also activated proc0.join(), … But nothing different. Because thee is no more instructions in Python code, calling Lammps.
Is there something wrong ?
Thanks a lot for help
Kindest regards
Pascal