Skip to content

Commit e48412e

Browse files
authored
add timing of backwards pass (#39)
1 parent 12a025f commit e48412e

File tree

3 files changed

+8
-0
lines changed

3 files changed

+8
-0
lines changed

agile1d/core/cost_function.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -324,8 +324,10 @@ def cost_fct(unknown_parameters, data_logger):
324324
c = c_terms.mean() + cost_lambda * reg_terms.mean()
325325

326326
log.debug('gradient calculation')
327+
start_time_gradient_calc = time.time()
327328
# calculate the gradient for the control variables
328329
c.backward()
330+
gradient_calc_time = time.time() - start_time_gradient_calc
329331

330332
log.debug('get gradients')
331333
# get gradient/s as numpy array
@@ -351,6 +353,8 @@ def cost_fct(unknown_parameters, data_logger):
351353
unknown_parameters_descaled)
352354
data_logger.save_data_in_datalogger('time_needed',
353355
time.time() - data_logger.start_time)
356+
data_logger.save_data_in_datalogger('gradient_time_needed',
357+
gradient_calc_time)
354358

355359
data_logger.fct_calls = np.append(data_logger.fct_calls,
356360
data_logger.fct_calls[-1] + 1)

agile1d/core/data_logging.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,7 @@ def __init__(self, gdir, fls_init, inversion_input, climate_filename,
138138
self.reg_terms = None
139139
self.c_terms_description = None
140140
self.time_needed = None
141+
self.gradient_time_needed = None
141142
self.grads = None
142143
self.flowlines = None
143144
self.initial_flux = None
@@ -248,6 +249,7 @@ def filter_data_from_optimization(self):
248249
self.c_terms = self.c_terms[index]
249250
self.reg_terms = self.reg_terms[index]
250251
self.time_needed = self.squeeze_generic(self.time_needed[index])
252+
self.gradient_time_needed = self.squeeze_generic(self.gradient_time_needed[index])
251253
self.flowlines = self.squeeze_generic(self.flowlines[index])
252254
self.initial_flux = self.squeeze_generic(self.initial_flux[index])
253255
self.sfc_h_start = self.squeeze_generic(self.sfc_h_start[index])
@@ -279,6 +281,7 @@ def create_and_save_dataset(self):
279281
ds['reg_terms'] = (['iteration', 'nr_reg_terms'], self.reg_terms)
280282
ds['c_terms_description'] = (['iteration'], self.c_terms_description)
281283
ds['time_needed'] = (['iteration'], self.time_needed)
284+
ds['gradient_time_needed'] = (['iteration'], self.gradient_time_needed)
282285
ds['fct_calls'] = (['iteration'], self.fct_calls)
283286
ds['unknown_parameters'] = (['iteration', 'nr_unknown_parameters'],
284287
self.unknown_parameters)

agile1d/tests/test_inversion.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,7 @@ def test_agile_inversion(self, hef_gdir, control_vars, spinup_options,
145145
assert data_logger.reg_terms is not None
146146
assert data_logger.c_terms_description is not None
147147
assert data_logger.time_needed is not None
148+
assert data_logger.gradient_time_needed is not None
148149
assert data_logger.grads is not None
149150
assert data_logger.flowlines is not None
150151
assert data_logger.end_time is not None

0 commit comments

Comments
 (0)