X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/d451c4179815683bdf2303edea68709a65155988..d568c1c940444f6645e297f9c09e0bba96fce8cf:/teshsuite/surf/maxmin_bench/maxmin_bench.c diff --git a/teshsuite/surf/maxmin_bench/maxmin_bench.c b/teshsuite/surf/maxmin_bench/maxmin_bench.c index 6b1ca7f12f..78e9222a02 100644 --- a/teshsuite/surf/maxmin_bench/maxmin_bench.c +++ b/teshsuite/surf/maxmin_bench/maxmin_bench.c @@ -11,33 +11,43 @@ #include "xbt/xbt_os_time.h" #include "xbt/sysdep.h" /* time manipulation for benchmarking */ +#define MYRANDMAX 1000 + #include #include +#include double date; +int64_t seedx= 0; + +static int myrand(void) { + seedx=seedx * 16807 % 2147483647; + return (int32_t) seedx%1000; +} -double float_random(double max); -double float_random(double max) +static double float_random(double max) { - return ((max * rand()) / (RAND_MAX + 1.0)); + return ((max * myrand()) / (MYRANDMAX + 1.0)); } -int int_random(int max); -int int_random(int max) +static unsigned int int_random(int max) { - return (int) (((max * 1.0) * rand()) / (RAND_MAX + 1.0)); + return (uint32_t) (((max * 1.0) * myrand()) / (MYRANDMAX + 1.0)); } -void test(int nb_cnst, int nb_var, int nb_elem, int pw_base_limit, int pw_max_limit, float rate_no_limit, int max_share, int mode); -void test(int nb_cnst, int nb_var, int nb_elem, int pw_base_limit, int pw_max_limit, float rate_no_limit, int max_share, int mode) +static void test(int nb_cnst, int nb_var, int nb_elem, unsigned int pw_base_limit, unsigned int pw_max_limit, + float rate_no_limit, int max_share, int mode) { lmm_system_t Sys = NULL; lmm_constraint_t *cnst = xbt_new0(lmm_constraint_t, nb_cnst); lmm_variable_t *var = xbt_new0(lmm_variable_t, nb_var); int *used = xbt_new0(int, nb_cnst); - int i, j, k,l; + int i; + int j; + int k; + int l; int concurrency_share; - + Sys = lmm_system_new(1); for (i = 0; i < nb_cnst; i++) { @@ -48,16 +58,16 @@ void test(int nb_cnst, int nb_var, int nb_elem, int pw_base_limit, int pw_max_li else //Badly logarithmically random concurrency limit in [2^pw_base_limit+1,2^pw_base_limit+2^pw_max_limit] l=(1<l) - l=j; - printf("(%i):%i/%i ",i,j,k); + l=j; + fprintf(stderr,"(%i):%i/%i ",i,j,k); lmm_constraint_concurrency_maximum_reset(cnst[i]); xbt_assert(!lmm_constraint_concurrency_maximum_get(cnst[i])); if(i%10==9) - printf("\n"); + fprintf(stderr,"\n"); } - printf("\nTotal maximum concurrency is %i\n",l); + fprintf(stderr,"\nTotal maximum concurrency is %i\n",l); lmm_print(Sys); } - + for (i = 0; i < nb_var; i++) lmm_variable_free(Sys, var[i]); lmm_system_free(Sys); free(cnst); free(var); free(used); - } -int TestClasses [][4]= +unsigned int TestClasses [][4]= //Nbcnst Nbvar Baselimit Maxlimit {{ 10 ,10 ,1 ,2 }, //small { 100 ,100 ,3 ,6 }, //medium @@ -116,14 +125,13 @@ int TestClasses [][4]= int main(int argc, char **argv) { - int nb_cnst, nb_var,nb_elem,pw_base_limit,pw_max_limit,max_share; float rate_no_limit=0.2; - float acc_date=0,acc_date2=0; - int testclass,mode,testcount; - int i; - + float acc_date=0; + float acc_date2=0; + int testclass; + if(argc<3) { - printf("Syntax: [test|debug|perf]\n"); + fprintf(stderr, "Syntax: [test|debug|perf]\n"); return -1; } @@ -137,15 +145,15 @@ int main(int argc, char **argv) else if(!strcmp(argv[1],"huge")) testclass=3; else { - printf("Unknown class \"%s\", aborting!\n",argv[1]); + fprintf(stderr, "Unknown class \"%s\", aborting!\n",argv[1]); return -2; } //How many times? - testcount=atoi(argv[2]); - + int testcount=atoi(argv[2]); + //Show me everything (debug or performance)! - mode=0; + int mode=0; if(argc>=4 && strcmp(argv[3],"test")==0) mode=1; if(argc>=4 && strcmp(argv[3],"debug")==0) @@ -153,28 +161,29 @@ int main(int argc, char **argv) if(argc>=4 && strcmp(argv[3],"perf")==0) mode=3; - if(mode==1) xbt_log_control_set("surf/maxmin.threshold:DEBUG surf/maxmin.fmt:\'[%r]: [%c/%p] %m%n\'\ surf.threshold:DEBUG surf.fmt:\'[%r]: [%c/%p] %m%n\' "); - + if(mode==2) xbt_log_control_set("surf/maxmin.threshold:DEBUG surf.threshold:DEBUG"); - - nb_cnst= TestClasses[testclass][0]; - nb_var= TestClasses[testclass][1]; - pw_base_limit= TestClasses[testclass][2]; - pw_max_limit= TestClasses[testclass][3]; - max_share=2; //1<<(pw_base_limit/2+1); + + unsigned int nb_cnst= TestClasses[testclass][0]; + unsigned int nb_var= TestClasses[testclass][1]; + unsigned int pw_base_limit= TestClasses[testclass][2]; + unsigned int pw_max_limit= TestClasses[testclass][3]; + unsigned int max_share=2; //1<<(pw_base_limit/2+1); //If you want to test concurrency, you need nb_elem >> 2^pw_base_limit: - nb_elem= (1<