Hi Folks,
We are currently running on SLURM 20.11.6 with cgroups constraints for
memory and CPU/Core. Can the scheduler only expose the requested number of
CPU/Core resources to a job? We have some users that employ python scripts
with the multi processing modules, and the scripts apparently use all of
the CPU/Cores in a node, despite using options to constraint a task to just
a given number of CPUs. We would like several multiprocessing jobs to
run simultaneously on the nodes, but not step on each other.
The sample script I use for testing is below; I'm looking for something
similar to what can be done with the GPU Gres configuration where only the
number of GPUs requested are exposed to the job requesting them.
#!/usr/bin/env python3
import multiprocessing
def worker():
print("Worker on CPU #%s" % multiprocessing.current_process
().name)
result=0
for j in range(20):
result += j**2
print ("Result on CPU {} is {}".format(multiprocessing.curr
ent_process().name,result))
return
if __name__ == '__main__':
pool = multiprocessing.Pool()
jobs = []
print ("This host exposed {} CPUs".format(multiprocessing.c
pu_count()))
for i in range(multiprocessing.cpu_count()):
p = multiprocessing.Process(target=worker, name=i).star
t()
Thanks,
--
----------------------------------------
Luis R. Torres