@@ -86,13 +86,6 @@ def strtobool(text):
86
86
# shorten to an unreasonably small number to reduce test time.
87
87
max_steps = 256
88
88
89
- # TODO: Update once tracking loop is implemented
90
- optical_options = {
91
- 'buffer_capacity' : 3 * max_steps * num_tracks ,
92
- 'primary_capacity' : num_tracks ,
93
- 'auto_flush' : 2 ** 31 , # Large enough to never launch optical loop
94
- }
95
-
96
89
inp = {
97
90
'use_device' : use_device ,
98
91
'geometry_file' : geometry_filename ,
@@ -102,7 +95,7 @@ def strtobool(text):
102
95
'seed' : 12345 ,
103
96
'num_track_slots' : num_tracks ,
104
97
'max_steps' : max_steps ,
105
- 'initializer_capacity' : 100 * max ([ num_tracks , num_primaries ]) ,
98
+ 'initializer_capacity' : 100 * num_tracks ,
106
99
'secondary_stack_factor' : 3 ,
107
100
'action_diagnostic' : True ,
108
101
'step_diagnostic' : True ,
@@ -115,10 +108,19 @@ def strtobool(text):
115
108
'brem_combined' : True ,
116
109
'physics_options' : physics_options ,
117
110
'field' : None ,
118
- 'optical' : optical_options ,
119
111
'slot_diagnostic_prefix' : f"slot-diag-{ run_name } -" ,
120
112
}
121
113
114
+ if "lar" in geometry_filename :
115
+ inp ['optical' ] = {
116
+ 'buffer_capacity' : 3 * max_steps * num_tracks ,
117
+ 'primary_capacity' : num_tracks ,
118
+ 'auto_flush' : 2 ** 31 , # Large enough to never launch optical loop
119
+ }
120
+
121
+ if physics_filename :
122
+ inp ['physics_file' ] = physics_filename
123
+
122
124
inp_file = f'{ run_name } .inp.json'
123
125
with open (inp_file , 'w' ) as f :
124
126
json .dump (inp , f , indent = 1 )
@@ -159,14 +161,36 @@ def strtobool(text):
159
161
json .dump (j , f , indent = 1 )
160
162
print ("Results written to" , out_file , file = stderr )
161
163
162
- run_output = j ['result' ]['runner' ]
164
+ run_output = j ['result' ]['runner' ]
163
165
time = run_output ['time' ].copy ()
164
166
steps = time .pop ('steps' )
165
167
if use_device :
166
168
assert steps
167
- assert len (steps [0 ]) == run_output ['num_step_iterations' ][0 ]
169
+ assert len (steps [0 ]) == run_output ['num_step_iterations' ][0 ], steps [ 0 ]
168
170
else :
169
171
# Step times disabled on CPU from input
170
- assert steps is None
172
+ assert steps is None , steps
173
+
174
+ internal = j ["internal" ]
175
+ if "lar" in geometry_filename and not use_device :
176
+ core_sizes = internal ["core-sizes" ].copy ()
177
+ num_streams = internal ["core-sizes" ].pop ("streams" )
178
+ if "openmp" not in j ["system" ]["build" ]["config" ]["use" ]:
179
+ assert num_streams == 1
180
+ assert internal ["core-sizes" ] == {
181
+ "events" : 4 ,
182
+ "initializers" : 3200 ,
183
+ "processes" : 1 ,
184
+ "secondaries" : 96 ,
185
+ "tracks" : 32
186
+ }, core_sizes
187
+
188
+ opt_sizes = internal ["optical-sizes" ].copy ()
189
+ assert num_streams == opt_sizes .pop ("streams" )
190
+ assert opt_sizes == {
191
+ "generators" : 24576 * num_streams ,
192
+ "initializers" : 32 * num_streams ,
193
+ "tracks" : 0 ,
194
+ }, opt_sizes
171
195
172
196
print (json .dumps (time , indent = 1 ))
0 commit comments