@@ -39,17 +39,43 @@ class QuantumESPRESSOCpuCheck(QuantumESPRESSOCheck):
3939 def __init__ (self , scale , variant ):
4040 super ().__init__ ()
4141 self .descr = f'QuantumESPRESSO CPU check (version: { scale } , { variant } )'
42- self .valid_systems = ['daint:mc' ]
42+ self .valid_systems = ['daint:mc' , 'eiger:mc' ]
4343 self .modules = ['QuantumESPRESSO' ]
4444 if scale == 'small' :
4545 self .valid_systems += ['dom:mc' ]
46- self .num_tasks = 216
4746 energy_reference = - 11427.09017218
47+ if self .current_system .name in ['daint' , 'dom' ]:
48+ self .num_tasks = 216
49+ self .num_tasks_per_node = 36
50+ elif self .current_system .name == 'eiger' :
51+ self .num_tasks = 96
52+ self .num_tasks_per_node = 16
53+ self .num_cpus_per_task = 16
54+ self .num_tasks_per_core = 1
55+ self .use_multithreading = False
56+ self .variables = {
57+ 'MPICH_OFI_STARTUP_CONNECT' : '1' ,
58+ 'OMP_NUM_THREADS' : '8' ,
59+ 'OMP_PLACES' : 'cores' ,
60+ 'OMP_PROC_BIND' : 'close'
61+ }
4862 else :
49- self .num_tasks = 576
5063 energy_reference = - 11427.09017152
51-
52- self .num_tasks_per_node = 36
64+ if self .current_system .name in ['daint' ]:
65+ self .num_tasks = 576
66+ self .num_tasks_per_node = 36
67+ elif self .current_system .name in ['eiger' ]:
68+ self .num_tasks = 256
69+ self .num_tasks_per_node = 16
70+ self .num_cpus_per_task = 16
71+ self .num_tasks_per_core = 1
72+ self .use_multithreading = False
73+ self .variables = {
74+ 'MPICH_OFI_STARTUP_CONNECT' : '1' ,
75+ 'OMP_NUM_THREADS' : '8' ,
76+ 'OMP_PLACES' : 'cores' ,
77+ 'OMP_PROC_BIND' : 'close'
78+ }
5379
5480 energy = sn .extractsingle (r'!\s+total energy\s+=\s+(?P<energy>\S+) Ry' ,
5581 self .stdout , 'energy' , float )
@@ -65,26 +91,37 @@ def __init__(self, scale, variant):
6591 'maint' : {
6692 'small' : {
6793 'dom:mc' : {'time' : (115.0 , None , 0.05 , 's' )},
68- 'daint:mc' : {'time' : (115.0 , None , 0.10 , 's' )}
94+ 'daint:mc' : {'time' : (115.0 , None , 0.10 , 's' )},
95+ 'eiger:mc' : {'time' : (66.0 , None , 0.10 , 's' )}
6996 },
7097 'large' : {
71- 'daint:mc' : {'time' : (115.0 , None , 0.10 , 's' )}
98+ 'daint:mc' : {'time' : (115.0 , None , 0.10 , 's' )},
99+ 'eiger:mc' : {'time' : (53.0 , None , 0.10 , 's' )}
72100 }
73101 },
74102 'prod' : {
75103 'small' : {
76104 'dom:mc' : {'time' : (115.0 , None , 0.05 , 's' )},
77- 'daint:mc' : {'time' : (115.0 , None , 0.10 , 's' )}
105+ 'daint:mc' : {'time' : (115.0 , None , 0.10 , 's' )},
106+ 'eiger:mc' : {'time' : (66.0 , None , 0.10 , 's' )}
78107 },
79108 'large' : {
80- 'daint:mc' : {'time' : (115.0 , None , 0.10 , 's' )}
109+ 'daint:mc' : {'time' : (115.0 , None , 0.10 , 's' )},
110+ 'eiger:mc' : {'time' : (53.0 , None , 0.10 , 's' )}
81111 }
82112 }
83113 }
84114
85115 self .reference = references [variant ][scale ]
86116 self .tags |= {'maintenance' if variant == 'maint' else 'production' }
87117
118+ @rfm .run_before ('run' )
119+ def set_task_distribution (self ):
120+ self .job .options = ['--distribution=block:block' ]
121+
122+ @rfm .run_before ('run' )
123+ def set_cpu_binding (self ):
124+ self .job .launcher .options = ['--cpu-bind=cores' ]
88125
89126@rfm .parameterized_test (* ([s , v ]
90127 for s in ['small' , 'large' ]
0 commit comments