Background
SOCRATES is written in FORTRAN and designed for running on x86_64 (AMD64) CPU architectures. Each call to l_run_cdf or radiance_calc() use a single thread. This limits the performance of the code since, each spectral band calculation can (in principle) be performed in dependently, and therefore parallelised.
Suggestion
Loops over spectral bands can potentially be parallelised with minimal modifications to core SOCRATES code, using OpenMP. This would improve model performance on CPUs.
We can potentially extend this further by performing calculations on GPUs. Refer to this recent paper showing the feasibility of adapting "standard" FORTRAN codes for running on GPU hardware: https://arxiv.org/abs/2608.20586. This could work on both AMD (ROCm) and Nvidia (CUDA) architectures.
People
@egpbos @timlichtenberg @maraattia
Background
SOCRATES is written in FORTRAN and designed for running on x86_64 (AMD64) CPU architectures. Each call to
l_run_cdforradiance_calc()use a single thread. This limits the performance of the code since, each spectral band calculation can (in principle) be performed in dependently, and therefore parallelised.Suggestion
Loops over spectral bands can potentially be parallelised with minimal modifications to core SOCRATES code, using OpenMP. This would improve model performance on CPUs.
We can potentially extend this further by performing calculations on GPUs. Refer to this recent paper showing the feasibility of adapting "standard" FORTRAN codes for running on GPU hardware: https://arxiv.org/abs/2608.20586. This could work on both AMD (ROCm) and Nvidia (CUDA) architectures.
People
@egpbos @timlichtenberg @maraattia