Add logs for ran2c and fix fourt doc

improvement-remove_generate_array-logs
chortas 3 years ago
parent 04f00afeee
commit ab2b81e569

@ -71,9 +71,7 @@
/* IFRWD IS AN INTEGER USED TO INDICATE THE DIRECTION OF THE FOURIER */ /* IFRWD IS AN INTEGER USED TO INDICATE THE DIRECTION OF THE FOURIER */
/* TRANSFORM. IT IS NON-ZERO TO INDICATE A FORWARD TRANSFORM */ /* TRANSFORM. IT IS NON-ZERO TO INDICATE A FORWARD TRANSFORM */
/* (EXPONENTIAL SIGN IS -) AND ZERO TO INDICATE AN INVERSE TRANSFORM */ /* (EXPONENTIAL SIGN IS -) AND ZERO TO INDICATE AN INVERSE TRANSFORM */
/* (SI /* (SIGN IS +). ICPLX IS AN INTEGER TO INDICATE WHETHER THE DATA */
#include "log.h"
#include "memory.h"GN IS +). ICPLX IS AN INTEGER TO INDICATE WHETHER THE DATA */
/* ARE REAL OR COMPLEX. IT IS NON-ZERO FOR COMPLEX, ZERO FOR REAL. */ /* 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 */ /* 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 */ /* TO BE ZERO, AND NEED NOT BE EXPLICITLY SET TO ZERO. AS EXPLAINED */

@ -24,15 +24,15 @@ double gasdev(long* idum, long* idum2, long* iy, long iv[NTAB], int cores) {
get_stats(&initial[i], i - 1); 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 int iset = 0;
static double gset; static double gset;
double fac, rsq, v1, v2; double fac, rsq, v1, v2;
if (iset == 0) { if (iset == 0) {
do { do {
v1 = 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) - 1.0; v2 = 2.0 * ran2(idum, idum2, iy, iv, cores) - 1.0;
rsq = v1 * v1 + v2 * v2; rsq = v1 * v1 + v2 * v2;
} while (rsq >= 1.0 || rsq == 0.0); } while (rsq >= 1.0 || rsq == 0.0);

@ -543,7 +543,7 @@ double power(double h, double alpha);
/*generates uniform deviates between 0 and 1*/ /*generates uniform deviates between 0 and 1*/
/*idum: seed */ /*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 */ /*calculates bt.b */
/* b : vector, bi, i = [0...n-1] */ /* b : vector, bi, i = [0...n-1] */

@ -18,10 +18,24 @@
#define EPS 1.2e-7 #define EPS 1.2e-7
#define RNMX (1.0 - EPS) #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; int j;
long k; long k;
double temp; 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 <= 0) {
if (-(*idum) < 1) if (-(*idum) < 1)
@ -54,10 +68,30 @@ double ran2(long* idum, long* idum2, long* iy, long iv[NTAB]) {
if (*iy < 1) if (*iy < 1)
(*iy) += IMM1; (*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) { 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); return (RNMX);
} }
else { 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; return temp;
} }
} }

Loading…
Cancel
Save