diff --git a/fftma_module/gen/lib_src/fourt.c b/fftma_module/gen/lib_src/fourt.c index b12bc74..551ebe4 100644 --- a/fftma_module/gen/lib_src/fourt.c +++ b/fftma_module/gen/lib_src/fourt.c @@ -71,9 +71,7 @@ /* IFRWD IS AN INTEGER USED TO INDICATE THE DIRECTION OF THE FOURIER */ /* TRANSFORM. IT IS NON-ZERO TO INDICATE A FORWARD TRANSFORM */ /* (EXPONENTIAL SIGN IS -) AND ZERO TO INDICATE AN INVERSE TRANSFORM */ -/* (SI -#include "log.h" -#include "memory.h"GN IS +). ICPLX IS AN INTEGER TO INDICATE WHETHER THE DATA */ +/* (SIGN IS +). ICPLX IS AN INTEGER TO INDICATE WHETHER THE DATA */ /* ARE REAL OR COMPLEX. IT IS NON-ZERO FOR COMPLEX, ZERO FOR REAL. */ /* IF IT IS ZERO (REAL) THE CONTENTS OF ARRAY DATAI WILL BE ASSUMED */ /* TO BE ZERO, AND NEED NOT BE EXPLICITLY SET TO ZERO. AS EXPLAINED */ diff --git a/fftma_module/gen/lib_src/gasdev.c b/fftma_module/gen/lib_src/gasdev.c index 4222be6..5078c72 100644 --- a/fftma_module/gen/lib_src/gasdev.c +++ b/fftma_module/gen/lib_src/gasdev.c @@ -24,15 +24,15 @@ double gasdev(long* idum, long* idum2, long* iy, long iv[NTAB], int cores) { get_stats(&initial[i], i - 1); } - double ran2(long* idum, long* idum2, long* iy, long iv[NTAB]); + double ran2(long* idum, long* idum2, long* iy, long iv[NTAB], int cores); static int iset = 0; static double gset; double fac, rsq, v1, v2; if (iset == 0) { do { - v1 = 2.0 * ran2(idum, idum2, iy, iv) - 1.0; - v2 = 2.0 * ran2(idum, idum2, iy, iv) - 1.0; + v1 = 2.0 * ran2(idum, idum2, iy, iv, cores) - 1.0; + v2 = 2.0 * ran2(idum, idum2, iy, iv, cores) - 1.0; rsq = v1 * v1 + v2 * v2; } while (rsq >= 1.0 || rsq == 0.0); diff --git a/fftma_module/gen/lib_src/geostat.h b/fftma_module/gen/lib_src/geostat.h index ddc578a..fc41bae 100644 --- a/fftma_module/gen/lib_src/geostat.h +++ b/fftma_module/gen/lib_src/geostat.h @@ -543,7 +543,7 @@ double power(double h, double alpha); /*generates uniform deviates between 0 and 1*/ /*idum: seed */ -double ran2(long* idum, long* idum2, long* iy, long* iv); +double ran2(long* idum, long* idum2, long* iy, long* iv, int cores); /*calculates bt.b */ /* b : vector, bi, i = [0...n-1] */ diff --git a/fftma_module/gen/lib_src/ran2.c b/fftma_module/gen/lib_src/ran2.c index a978c95..51ca314 100644 --- a/fftma_module/gen/lib_src/ran2.c +++ b/fftma_module/gen/lib_src/ran2.c @@ -18,10 +18,24 @@ #define EPS 1.2e-7 #define RNMX (1.0 - EPS) -double ran2(long* idum, long* idum2, long* iy, long iv[NTAB]) { +double ran2(long* idum, long* idum2, long* iy, long iv[NTAB], int cores) { + double* used_ram_t0 = malloc(sizeof(double)); + getVirtualMemUsed(used_ram_t0); + + clock_t t = clock(); + int j; long k; double temp; + + log_info("RESULT = in progress, idum = %f, idum2 = %f, iy = %f", *idum, *idum2, *iy); + + struct cpustat initial[cores]; + struct cpustat final[cores]; + + for (int i = 0; i < cores; i++) { + get_stats(&initial[i], i - 1); + } if (*idum <= 0) { if (-(*idum) < 1) @@ -54,10 +68,30 @@ double ran2(long* idum, long* idum2, long* iy, long iv[NTAB]) { if (*iy < 1) (*iy) += IMM1; + t = clock() - t; + double time_taken = ((double)t)/CLOCKS_PER_SEC; // calculate the elapsed time + + for (int i = 0; i < cores; i++) { + get_stats(&final[i], i - 1); + } + + for (int i = 0; i < cores; i++) { + log_info("CPU %d: %lf%%", i, calculate_load(&initial[i], &final[i])); + } + + double* used_ram_tf = malloc(sizeof(double)); + getVirtualMemUsed(used_ram_tf); + if ((temp = AM * (*iy)) > RNMX) { + log_info("RESULT = success, RNMX = %f, ELAPSED = %f, DIF USED VIRTUAL MEM = %5.1f MB", RNMX, time_taken, *used_ram_tf - *used_ram_t0); + free(used_ram_t0); + free(used_ram_tf); return (RNMX); } else { + log_info("RESULT = success, RNMX = %f, ELAPSED = %f, DIF USED VIRTUAL MEM = %5.1f MB", RNMX, time_taken, *used_ram_tf - *used_ram_t0); + free(used_ram_t0); + free(used_ram_tf); return temp; } }