Skip to content
Snippets Groups Projects
Commit abea8076 authored by Giovanni La Mura's avatar Giovanni La Mura
Browse files

Update OpenMP implementation of frfme()

parent 0b7e3963
No related branches found
No related tags found
No related merge requests found
......@@ -129,19 +129,19 @@ void frfme(string data_file, string output_path) {
if (tt2 != NULL) {
vkv = tt2->get_vector();
vkzm = tt2->get_matrix();
apfafa = tt2->get_param("apfafa");
pmf = tt2->get_param("pmf");
spd = tt2->get_param("spd");
rir = tt2->get_param("rir");
ftcn = tt2->get_param("ftcn");
fshmx = tt2->get_param("fshmx");
vxyzmx = tt2->get_param("vxyzmx");
delxyz = tt2->get_param("delxyz");
vknmx = tt2->get_param("vknmx");
delk = tt2->get_param("delk");
delks = tt2->get_param("delks");
nlmmt = (int)tt2->get_param("nlmmt");
nrvc = (int)tt2->get_param("nrvc");
apfafa = tt2->apfafa;
pmf = tt2->pmf;
spd = tt2->spd;
rir = tt2->rir;
ftcn = tt2->ftcn;
fshmx = tt2->fshmx;
vxyzmx = tt2->vxyzmx;
delxyz = tt2->delxyz;
vknmx = tt2->vknmx;
delk = tt2->delk;
delks = tt2->delks;
nlmmt = tt2->nlmmt;
nrvc = tt2->nrvc;
} else {
printf("ERROR: could not open TEMPTAPE2 file.\n");
}
......@@ -273,10 +273,10 @@ void frfme(string data_file, string output_path) {
long swap1_size, swap2_size, tfrfme_size;
double size_mb;
printf("INFO: calculating memory requirements\n");
swap1_size = Swap1::get_memory_requirement(lm, nkv);
swap1_size = Swap1::get_size(lm, nkv);
size_mb = 1.0 * swap1_size / 1024.0 / 1024.0;
printf("Swap 1: %.2lg MB\n", size_mb);
swap2_size = Swap2::get_memory_requirement(nkv);
swap2_size = Swap2::get_size(nkv);
size_mb = 1.0 * swap2_size / 1024.0 / 1024.0;
printf("Swap 2: %.2lg MB\n", size_mb);
tt2 = new Swap2(nkv);
......@@ -374,13 +374,14 @@ 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++) {
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 = 0;
for (int jy50 = 0; jy50 < nkv; jy50++) {
for (int jx50 = 0; jx50 < nkv; jx50++) {
......@@ -419,9 +420,9 @@ void frfme(string data_file, string output_path) {
} // ix65 loop
} // iy70 loop
} // iz75 loop
} // j80 loop
delete[] vec_w;
delete[] w;
} // j80 loop
#ifdef USE_NVTX
nvtxRangePop();
#endif
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment