From 858e3eb65a4eedc936072f23aa390155e019e9d9 Mon Sep 17 00:00:00 2001 From: "Mulas, Giacomo" <gmulas@oa-cagliari.inaf.it> Date: Mon, 9 Jun 2025 14:16:45 +0200 Subject: [PATCH] set up for gpu offload --- src/trapping/cfrfme.cpp | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/src/trapping/cfrfme.cpp b/src/trapping/cfrfme.cpp index 5d55db9..8432ca9 100644 --- a/src/trapping/cfrfme.cpp +++ b/src/trapping/cfrfme.cpp @@ -60,6 +60,10 @@ #include <nvtx3/nvToolsExt.h> #endif +#ifdef USE_TARGET_OFFLOAD +#pragma omp requires unified_shared_memory +#endif + using namespace std; /*! \brief C++ implementation of FRFME @@ -377,11 +381,14 @@ void frfme(string data_file, string output_path) { #ifdef USE_NVTX nvtxRangePush("j80 loop"); #endif -#pragma omp parallel for +#pragma omp target parallel for for (int j80 = jlmf; j80 <= jlml; j80++) { - dcomplex *vec_w = new dcomplex[nkv * nkv](); - dcomplex **w = new dcomplex*[nkv]; - dcomplex *wk_local = new dcomplex[nlmmt](); + // dcomplex *vec_w = new dcomplex[nkv * nkv](); + // dcomplex **w = new dcomplex*[nkv]; + // dcomplex *wk_local = new dcomplex[nlmmt](); + dcomplex *vec_w = (dcomplex *) calloc(nkv * nkv, sizeof(dcomplex)); + dcomplex **w = (dcomplex **) calloc(nkv, sizeof(dcomplex *)); + dcomplex *wk_local = (dcomplex *) calloc(nlmmt, sizeof(dcomplex)); for (int wi = 0; wi < nkv; wi++) w[wi] = vec_w + wi * nkv; int wk_index = 0; for (int jy50 = 0; jy50 < nkv; jy50++) { @@ -421,9 +428,12 @@ void frfme(string data_file, string output_path) { } // ix65 loop } // iy70 loop } // iz75 loop - delete[] vec_w; - delete[] w; - delete[] wk_local; + // delete[] vec_w; + // delete[] w; + // delete[] wk_local; + free(vec_w); + free(w); + free(wk_local); } // j80 loop #ifdef USE_NVTX nvtxRangePop(); -- GitLab