From b9f6783fa6bdcad1824d5b3c75f8fc73d057588e Mon Sep 17 00:00:00 2001 From: Giovanni La Mura <giovanni.lamura@inaf.it> Date: Tue, 3 Jun 2025 18:12:05 +0200 Subject: [PATCH] Implement an embarrasingly OMP parallel strategy for j80 loop --- src/trapping/cfrfme.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/trapping/cfrfme.cpp b/src/trapping/cfrfme.cpp index 5901be1..24a780c 100644 --- a/src/trapping/cfrfme.cpp +++ b/src/trapping/cfrfme.cpp @@ -374,14 +374,15 @@ void frfme(string data_file, string output_path) { #ifdef USE_NVTX nvtxRangePop(); #endif - dcomplex *vec_w = new dcomplex[nkv * nkv](); - dcomplex **w = new dcomplex*[nkv]; - for (int wi = 0; wi < nkv; wi++) w[wi] = vec_w + wi * nkv; #ifdef USE_NVTX nvtxRangePush("j80 loop"); #endif +#pragma omp parallel for for (int j80 = jlmf; j80 <= jlml; j80++) { - int wk_index = 0; + dcomplex *vec_w = new dcomplex[nkv * nkv](); + dcomplex **w = new dcomplex*[nkv]; + for (int wi = 0; wi < nkv; wi++) w[wi] = vec_w + wi * nkv; + int wk_index = (j80 - jlmf) * nkv * nkv; for (int jy50 = 0; jy50 < nkv; jy50++) { for (int jx50 = 0; jx50 < nkv; jx50++) { for (int wi = 0; wi < nlmmt; wi++) wk[wi] = tt1->vec_wk[wk_index++]; @@ -419,9 +420,9 @@ void frfme(string data_file, string output_path) { } // ix65 loop } // iy70 loop } // iz75 loop + delete[] vec_w; + delete[] w; } // j80 loop - delete[] vec_w; - delete[] w; #ifdef USE_NVTX nvtxRangePop(); #endif -- GitLab