Skip to content

Commit

Permalink
Merge pull request #2568 from camelto2/nexus_snl
Browse files Browse the repository at this point in the history
update SNL machines
  • Loading branch information
prckent committed Jul 2, 2020
2 parents 99711ab + 56c1f41 commit 45a53d8
Show file tree
Hide file tree
Showing 2 changed files with 91 additions and 334 deletions.
306 changes: 44 additions & 262 deletions nexus/lib/machines.py
Original file line number Diff line number Diff line change
Expand Up @@ -1499,7 +1499,7 @@ def process_job_options(self,job):
envs = envs
)
elif launcher=='srun': # Amos contribution from Ryan McAvoy
None # anything needed here?
None
elif launcher=='ibrun': # Lonestar contribution from Paul Young
job.run_options.add(
np = '-n '+str(job.processes),
Expand Down Expand Up @@ -2598,11 +2598,7 @@ def write_job_header(self,job):
#end class Amos



# SANDIA test
class Chama(Supercomputer):
name = 'chama'

class SnlMachine(Supercomputer):
requires_account = True
batch_capable = True
#executable_subfile = True
Expand All @@ -2616,284 +2612,70 @@ def write_job_header(self,job):
job.queue='batch'
#end if

job.total_hours = job.days*24 + job.hours + job.minutes/60.0 + job.seconds/3600.0
if job.total_hours > 96: # warn if job will take more than 96 hrs.
self.warn('!!! ATTENTION !!!\n the maximum runtime on {0} should not be more than {1}\n you requested: {2}'.format(job.queue,max_time,job.total_hours))
job.hours = max_time
job.minutes =0
job.seconds =0
#end if

#end if
c='#!/bin/bash\n'
c+='#SBATCH --job-name '+str(job.name)+'\n'
c+='#SBATCH --account='+str(job.account)+'\n'
c+='#SBATCH -N '+str(job.nodes)+'\n'
c+='#SBATCH --ntasks-per-node={0}\n'.format(job.processes_per_node)
c+='#SBATCH --cpus-per-task={0}\n'.format(job.threads)
c+='#SBATCH -t {0}:{1}:{2}\n'.format(str(job.hours+24*job.days).zfill(2),str(job.minutes).zfill(2),str(job.seconds).zfill(2))
#c+='#SBATCH --export=ALL\n' # equiv to PBS -V
c+='#SBATCH -o {0}\n'.format(job.outfile)
c+='#SBATCH -e {0}\n'.format(job.errfile)
c+='\n'
c+='module purge\n'
c+='module add intel/intel-16.0.1.150\n'
c+='module add libraries/intel-mkl-16.0.1.150\n'
c+='module add mvapich2-intel-psm/1.7\n'
return c
#end def write_job_header
#end class Chama
##### SANDIA test



class Uno(Supercomputer):
name = 'uno'

requires_account = True
batch_capable = True
#executable_subfile = True

prefixed_output = True
outfile_extension = '.output'
errfile_extension = '.error'

def write_job_header(self,job):
if job.queue is None:
job.queue='batch'
#end if

job.total_hours = job.days*24 + job.hours + job.minutes/60.0 + job.seconds/3600.0
if job.total_hours > 96: # warn if job will take more than 96 hrs.
self.warn('!!! ATTENTION !!!\n the maximum runtime on {0} should not be more than {1}\n you requested: {2}'.format(job.queue,max_time,job.total_hours))
job.hours = max_time
job.minutes =0
job.seconds =0
#end if

#end if
c='#!/bin/bash\n'
c+='#SBATCH --job-name '+str(job.name)+'\n'
c+='#SBATCH --account='+str(job.account)+'\n'
c+='#SBATCH -N '+str(job.nodes)+'\n'
c+='#SBATCH --ntasks-per-node={0}\n'.format(job.processes_per_node)
c+='#SBATCH --cpus-per-task={0}\n'.format(job.threads)
c+='#SBATCH -t {0}:{1}:{2}\n'.format(str(job.hours+24*job.days).zfill(2),str(job.minutes).zfill(2),str(job.seconds).zfill(2))
#c+='#SBATCH --export=ALL\n' # equiv to PBS -V
c+='#SBATCH -o {0}\n'.format(job.outfile)
c+='#SBATCH -e {0}\n'.format(job.errfile)
c+='#SBATCH -p quad\n'
c+='\n'
c+='module purge\n'
c+='module add intel/intel-16.0.1.150\n'
c+='module add libraries/intel-mkl-16.0.1.150\n'
c+='module add mvapich2-intel-psm/1.7\n'
return c
#end def write_job_header
#end class Uno
##### SANDIA test




## Added 09/23/2016 by JP Townsend
class Serrano(Supercomputer):
name = 'serrano'
cpus_per_task = int(floor(float(self.cores_per_node)/job.processes_per_node))

requires_account = True
batch_capable = True
#executable_subfile = True

prefixed_output = True
outfile_extension = '.output'
errfile_extension = '.error'

def write_job_header(self,job):
if job.queue is None:
job.queue='batch'
if job.qos == 'long':
max_time = 96
elif 'short' in job.queue:
max_time = 4
else:
max_time = 48
#end if

job.total_hours = job.days*24 + job.hours + job.minutes/60.0 + job.seconds/3600.0
if job.total_hours > 96: # warn if job will take more than 96 hrs.
self.warn('!!! ATTENTION !!!\n the maximum runtime on {0} should not be more than {1}\n you requested: {2}'.format(job.queue,max_time,job.total_hours))
if job.total_hours > max_time: # warn if job will take more than 48 hrs.
if job.qos == 'long':
self.warn('!!! ATTENTION !!!\n the maximum runtime on {0} should not be more than {1} with --qos=\'long\'\n you requested: {2}'.format(job.queue,max_time,job.total_hours))
elif 'short' in job.queue:
self.warn('!!! ATTENTION !!!\n the maximum runtime on {0} should not be more than {1} with -p short[,batch]\n you requested: {2}'.format(job.queue,max_time,job.total_hours))
else:
self.warn('!!! ATTENTION !!!\n the maximum runtime on {0} should not be more than {1}\n you requested: {2}'.format(job.queue,max_time,job.total_hours))
#end if
job.hours = max_time
job.minutes =0
job.seconds =0
job.minutes = 0
job.seconds = 0
#end if

#end if
c='#!/bin/bash\n'
c+='#SBATCH -p '+str(job.queue)+'\n'
c+='#SBATCH --job-name '+str(job.name)+'\n'
c+='#SBATCH --account='+str(job.account)+'\n'
c+='#SBATCH -N '+str(job.nodes)+'\n'
c+='#SBATCH --ntasks-per-node={0}\n'.format(job.processes_per_node)
c+='#SBATCH --cpus-per-task={0}\n'.format(job.threads)
c+='#SBATCH --cpus-per-task={0}\n'.format(cpus_per_task)
c+='#SBATCH -t {0}:{1}:{2}\n'.format(str(job.hours+24*job.days).zfill(2),str(job.minutes).zfill(2),str(job.seconds).zfill(2))
#c+='#SBATCH --export=ALL\n' # equiv to PBS -V
c+='#SBATCH -o {0}\n'.format(job.outfile)
c+='#SBATCH -e {0}\n'.format(job.errfile)
#c+='#SBATCH -p quad\n'
if job.qos:
c+='#SBATCH --qos={}\n'.format(job.qos)
c+='\n'
c+='module purge\n'
c+='module add intel/16.0.3\n'
c+='module add mkl/16.0\n'
c+='module add mvapich2-intel-psm2/2.2rc1\n'
return c
#end def write_job_header
#end class Serrano
##### SANDIA test


#end class SnlMachine

class Chama(SnlMachine):
name = 'chama'
#end class Chama

## Added 09/23/2016 by JP Townsend
class Skybridge(Supercomputer):
class Skybridge(SnlMachine):
name = 'skybridge'

requires_account = True
batch_capable = True
#executable_subfile = True

prefixed_output = True
outfile_extension = '.output'
errfile_extension = '.error'

def write_job_header(self,job):
if job.queue is None:
job.queue='batch'
#end if

job.total_hours = job.days*24 + job.hours + job.minutes/60.0 + job.seconds/3600.0
if job.total_hours > 96: # warn if job will take more than 96 hrs.
self.warn('!!! ATTENTION !!!\n the maximum runtime on {0} should not be more than {1}\n you requested: {2}'.format(job.queue,max_time,job.total_hours))
job.hours = max_time
job.minutes =0
job.seconds =0
#end if

#end if
c='#!/bin/bash\n'
c+='#SBATCH --job-name '+str(job.name)+'\n'
c+='#SBATCH --account='+str(job.account)+'\n'
c+='#SBATCH -N '+str(job.nodes)+'\n'
c+='#SBATCH --ntasks-per-node={0}\n'.format(job.processes_per_node)
c+='#SBATCH --cpus-per-task={0}\n'.format(job.threads)
c+='#SBATCH -t {0}:{1}:{2}\n'.format(str(job.hours+24*job.days).zfill(2),str(job.minutes).zfill(2),str(job.seconds).zfill(2))
#c+='#SBATCH --export=ALL\n' # equiv to PBS -V
c+='#SBATCH -o {0}\n'.format(job.outfile)
c+='#SBATCH -e {0}\n'.format(job.errfile)
#c+='#SBATCH -p quad\n'
c+='\n'
c+='module purge\n'
c+='module add intel/intel-16.0.1.150\n'
c+='module add libraries/intel-mkl-16.0.1.150\n'
c+='module add mvapich2-intel-psm/1.7\n'
return c
#end def write_job_header
#end class Skybridge
##### SANDIA test




## Added 09/23/2016 by JP Townsend
class Redsky(Supercomputer):
name = 'redsky'

requires_account = True
batch_capable = True
#executable_subfile = True

prefixed_output = True
outfile_extension = '.output'
errfile_extension = '.error'

def write_job_header(self,job):
if job.queue is None:
job.queue='batch'
#end if

job.total_hours = job.days*24 + job.hours + job.minutes/60.0 + job.seconds/3600.0
if job.total_hours > 96: # warn if job will take more than 96 hrs.
self.warn('!!! ATTENTION !!!\n the maximum runtime on {0} should not be more than {1}\n you requested: {2}'.format(job.queue,max_time,job.total_hours))
job.hours = max_time
job.minutes =0
job.seconds =0
#end if

#end if
c='#!/bin/bash\n'
c+='#SBATCH --job-name '+str(job.name)+'\n'
c+='#SBATCH --account='+str(job.account)+'\n'
c+='#SBATCH -N '+str(job.nodes)+'\n'
c+='#SBATCH --ntasks-per-node={0}\n'.format(job.processes_per_node)
c+='#SBATCH --cpus-per-task={0}\n'.format(job.threads)
c+='#SBATCH -t {0}:{1}:{2}\n'.format(str(job.hours+24*job.days).zfill(2),str(job.minutes).zfill(2),str(job.seconds).zfill(2))
#c+='#SBATCH --export=ALL\n' # equiv to PBS -V
c+='#SBATCH -o {0}\n'.format(job.outfile)
c+='#SBATCH -e {0}\n'.format(job.errfile)
#c+='#SBATCH -p quad\n'
c+='\n'
c+='module purge\n'
c+='module add intel/intel-16.0.1.150\n'
c+='module add libraries/intel-mkl-16.0.1.150\n'
c+='module add mvapich2-intel-psm/1.7\n'
return c
#end def write_job_header
#end class Redsky
##### SANDIA test

class Eclipse(SnlMachine):
name = 'eclipse'
#end class Eclipse

class Attaway(SnlMachine):
name = 'attaway'
#end class Attaway

class Uno(SnlMachine):
name = 'uno'
#end class Uno

## Added 09/23/2016 by JP Townsend
class Solo(Supercomputer):
class Solo(SnlMachine):
name = 'solo'

requires_account = True
batch_capable = True
#executable_subfile = True

prefixed_output = True
outfile_extension = '.output'
errfile_extension = '.error'

def write_job_header(self,job):
if job.queue is None:
job.queue='batch'
#end if

job.total_hours = job.days*24 + job.hours + job.minutes/60.0 + job.seconds/3600.0
if job.total_hours > 96: # warn if job will take more than 96 hrs.
self.warn('!!! ATTENTION !!!\n the maximum runtime on {0} should not be more than {1}\n you requested: {2}'.format(job.queue,max_time,job.total_hours))
job.hours = max_time
job.minutes =0
job.seconds =0
#end if

#end if
c='#!/bin/bash\n'
c+='#SBATCH --job-name '+str(job.name)+'\n'
c+='#SBATCH --account='+str(job.account)+'\n'
c+='#SBATCH -N '+str(job.nodes)+'\n'
c+='#SBATCH --ntasks-per-node={0}\n'.format(job.processes_per_node)
c+='#SBATCH --cpus-per-task={0}\n'.format(job.threads)
c+='#SBATCH -t {0}:{1}:{2}\n'.format(str(job.hours+24*job.days).zfill(2),str(job.minutes).zfill(2),str(job.seconds).zfill(2))
#c+='#SBATCH --export=ALL\n' # equiv to PBS -V
c+='#SBATCH -o {0}\n'.format(job.outfile)
c+='#SBATCH -e {0}\n'.format(job.errfile)
#c+='#SBATCH -p quad\n'
c+='\n'
c+='module purge\n'
c+='module add intel/16.0.3\n'
c+='module add mkl/16.0\n'
c+='module add mvapich2-intel-psm2/2.2rc1\n'
return c
#end def write_job_header
#end class Solo
##### SANDIA test



# machines at LRZ https://www.lrz.de/english/
class SuperMUC(Supercomputer):
Expand Down Expand Up @@ -3413,12 +3195,12 @@ def write_job_header(self,job):
Matisse( 20, 2, 8, 64, 2, 'mpirun', 'sbatch', 'sacct', 'scancel')
Komodo( 24, 2, 6, 48, 2, 'mpirun', 'sbatch', 'sacct', 'scancel')
Amos( 5120, 1, 16, 16, 128, 'srun', 'sbatch', 'sacct', 'scancel')
Chama( 1220, 2, 16, 64, 1000, 'srun', 'sbatch', 'squeue', 'scancel')
Uno( 4, 4, 32, 128, 1000, 'srun', 'sbatch', 'squeue', 'scancel')
Serrano( 1122, 2, 18, 128, 1000, 'srun', 'sbatch', 'squeue', 'scancel')
Skybridge( 1848, 2, 16, 64, 1000, 'srun', 'sbatch', 'squeue', 'scancel')
Redsky( 2302, 2, 8, 12, 1000, 'srun', 'sbatch', 'squeue', 'scancel')
Solo( 187, 2, 18, 128, 1000, 'srun', 'sbatch', 'squeue', 'scancel')
Chama( 1232, 2, 8, 64, 1000, 'srun', 'sbatch', 'squeue', 'scancel')
Uno( 168, 2, 8, 128, 1000, 'srun', 'sbatch', 'squeue', 'scancel')
Eclipse( 1488, 2, 18, 128, 1000, 'srun', 'sbatch', 'squeue', 'scancel')
Attaway( 1488, 2, 18, 192, 1000, 'srun', 'sbatch', 'squeue', 'scancel')
Skybridge( 1848, 2, 8, 64, 1000, 'srun', 'sbatch', 'squeue', 'scancel')
Solo( 374, 2, 18, 128, 1000, 'srun', 'sbatch', 'squeue', 'scancel')
SuperMUC( 512, 1, 28, 256, 8,'mpiexec', 'llsubmit', 'llq','llcancel')
Stampede2( 4200, 1, 68, 96, 50, 'ibrun', 'sbatch', 'squeue', 'scancel')
CadesMoab( 156, 2, 18, 128, 100, 'mpirun', 'qsub', 'qstat', 'qdel')
Expand Down

0 comments on commit 45a53d8

Please sign in to comment.