@@ -148,12 +148,17 @@ def main():
148148
149149 queue = Queue (args .queueName , CLUSTER_NAME , args .walltime , args .coresPerNode , args .gpusPerNode , args .memPerNode , args .modules )
150150
151- # Check that requested core number does not exceed node total
151+ # Check that requested per command resources do not exceed node total
152152 if args .coresPerCommand > queue .nb_cores_per_node :
153153 sys .stderr .write ("smart-dispatch: error: coresPerCommand exceeds nodes total: asked {req_cores} cores, nodes have {node_cores}\n "
154154 .format (req_cores = args .coresPerCommand , node_cores = queue .nb_cores_per_node ))
155155 sys .exit (2 )
156156
157+ if args .memPerCommand > queue .mem_per_node :
158+ sys .stderr .write ("smart-dispatch: error: memPerCommand exceeds nodes total: asked {req_mem} Gb, nodes have {node_mem} Gb\n "
159+ .format (req_mem = args .memPerCommand , node_mem = queue .mem_per_node ))
160+ sys .exit (2 )
161+
157162 command_params = {'nb_cores_per_command' : args .coresPerCommand ,
158163 'nb_gpus_per_command' : args .gpusPerCommand ,
159164 'mem_per_command' : None # args.memPerCommand
@@ -223,7 +228,9 @@ def parse_arguments():
223228 if args .queueName not in AVAILABLE_QUEUES and ((args .coresPerNode is None and args .gpusPerNode is None ) or args .walltime is None ):
224229 parser .error ("Unknown queue, --coresPerNode/--gpusPerNode and --walltime must be set." )
225230 if args .coresPerCommand < 1 :
226- parser .error ("coresPerNode must be at least 1" )
231+ parser .error ("coresPerCommand must be at least 1" )
232+ if args .memPerCommand is not None and args .memPerCommand < 0 :
233+ parser .error ("memPerCommand must be positive" )
227234
228235 return args
229236
0 commit comments