diff --git a/bfps/_code.py b/bfps/_code.py index fc0a7ee6813efec0f6695c07e8b34a26bd6561f4..594421603a860931de6184155e1928c25cbb1767 100644 --- a/bfps/_code.py +++ b/bfps/_code.py @@ -478,11 +478,23 @@ class _code(_base): assert(nprocesses % self.host_info['deltanprocs'] == 0) tasks_per_node = self.host_info['deltanprocs'] script_file.write('#SBATCH --nodes={0}\n'.format(nodes)) - script_file.write('#SBATCH --ntasks-per-node={0}\n'.format(1)) # tasks_per_node - script_file.write('#SBATCH --cpus-per-task={0}\n'.format(self.host_info['deltanprocs'])) + + nbprocesspernode = int(os.environ['NB_PROC_PER_NODE']) + print('NB_PROC_PER_NODE ', nbprocesspernode) + if (isinstance( nbprocesspernode, int ) and nbprocesspernode == 1) : + script_file.write('#SBATCH --ntasks-per-node=1\n') # tasks_per_node + script_file.write('#SBATCH --cpus-per-task={0}\n'.format(self.host_info['deltanprocs'])) + elif (isinstance( nbprocesspernode, int ) and int(int(self.host_info['deltanprocs'])/nbprocesspernode)*nbprocesspernode == int(self.host_info['deltanprocs'])) : + script_file.write('#SBATCH --ntasks-per-node={0}\n'.format(nbprocesspernode)) + script_file.write('#SBATCH --cpus-per-task={0}\n'.format(int(int(self.host_info['deltanprocs'])/nbprocesspernode))) + else : + print('Bad NB_PROC_PER_NODE ', nbprocesspernode) + exit(99) + script_file.write('#SBATCH --mail-type=none\n') script_file.write('#SBATCH --time={0}:{1:0>2d}:00\n'.format(hours, minutes)) - script_file.write('export OMP_NUM_THREADS={0}\n'.format(self.host_info['deltanprocs'])) + script_file.write('export OMP_NUM_THREADS={0}\n'.format(int(int(self.host_info['deltanprocs'])/nbprocesspernode))) + script_file.write('export OMP_PLACES=cores\n') script_file.write('LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:' + ':'.join([bfps.lib_dir] + bfps.install_info['library_dirs']) + '\n')