From c29c291c654c943e20eaf87b9ecc3628fc5a4abb Mon Sep 17 00:00:00 2001 From: Arthur Vigan Date: Fri, 4 Oct 2024 09:55:57 +0200 Subject: [PATCH] Implement adapt parallelisation option in global_params --- ForMoSA/adapt/adapt_grid.py | 6 +++--- ForMoSA/main_utilities.py | 14 ++++++++++---- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/ForMoSA/adapt/adapt_grid.py b/ForMoSA/adapt/adapt_grid.py index 5dbab7a..3d58128 100755 --- a/ForMoSA/adapt/adapt_grid.py +++ b/ForMoSA/adapt/adapt_grid.py @@ -112,7 +112,7 @@ def tpool_adapt(idx, global_params, wav_mod_nativ, res_mod_obs_merge, obs_name, grid_photo[(..., ) + idx] = mod_photo -def adapt_grid(global_params, wav_obs_spectro, wav_obs_photo, res_mod_obs_merge, obs_name='', indobs=0, parallel=True): +def adapt_grid(global_params, wav_obs_spectro, wav_obs_photo, res_mod_obs_merge, obs_name='', indobs=0): """ Adapt the synthetic spectra of a grid to make them comparable with the data. @@ -175,8 +175,8 @@ def adapt_grid(global_params, wav_obs_spectro, wav_obs_photo, res_mod_obs_merge, def update(*a): pbar.update() - if parallel: - ncpu = mp.cpu_count() // 2 + if global_params.parallel: + ncpu = mp.cpu_count() with ThreadPool(processes=ncpu, initializer=tpool_adapt_init, initargs=(grid_input_shape, grid_input_data, grid_spectro_shape, grid_spectro_data, grid_photo_shape, grid_photo_data)) as pool: for idx in np.ndindex(shape): pool.apply_async(tpool_adapt, args=(idx, global_params, wav_mod_nativ, res_mod_obs_merge, obs_name, indobs, attr['key'], attr['title'], values), callback=update) diff --git a/ForMoSA/main_utilities.py b/ForMoSA/main_utilities.py index 7562bc2..ee1b7bb 100755 --- a/ForMoSA/main_utilities.py +++ b/ForMoSA/main_utilities.py @@ -51,7 +51,7 @@ def diag_mat(rem=[], result=np.empty((0, 0))): class GlobFile: ''' Class that import all the parameters from the config file and make them GLOBAL FORMOSA VARIABLES. - + Author: Paulina Palma-Bifani ''' @@ -76,7 +76,7 @@ def __init__(self, config_file_path): model_name = model_name[0] self.model_name = model_name - if type(config['config_adapt']['wav_for_adapt']) != list: # Create lists if only one obs in the loop + if type(config['config_adapt']['wav_for_adapt']) != list: # Create lists if only one obs in the loop # [config_adapt] (5) self.wav_for_adapt = [config['config_adapt']['wav_for_adapt']] self.adapt_method = [config['config_adapt']['adapt_method']] @@ -101,6 +101,12 @@ def __init__(self, config_file_path): self.logL_type = config['config_inversion']['logL_type'] self.wav_fit = config['config_inversion']['wav_fit'] + # parallelisation of adapt + try: + self.parallel = config['config_adapt']['parallel'] + except KeyError: + self.parallel = False + self.ns_algo = config['config_inversion']['ns_algo'] self.npoint = config['config_inversion']['npoint'] @@ -121,7 +127,7 @@ def __init__(self, config_file_path): self.bb_R = config['config_parameter']['bb_R'] self.ck = None - + # [config_nestle] (5, some mutually exclusive) (n_ prefix for params) self.n_method = config['config_nestle']['method'] self.n_maxiter = eval(config['config_nestle']['maxiter']) @@ -152,7 +158,7 @@ def __init__(self, config_file_path): # self.p_init_MPI = config['config_pymultinest']['init_MPI'] # self.p_dump_callback = config['config_pymultinest']['dump_callback'] # self.p_use_MPI = config['config_pymultinest']['use_MPI'] - + # [config_dinesty] & [config_ultranest] CHECK THIS # ## create OUTPUTS Sub-Directories: interpolated grids and results