X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/d20f024dba9ff1e9c8822237caaf963b9e913889..0b17dd5e179f8d30e76445c121d88c0a0df24c2b:/teshsuite/surf/maxmin_bench/maxmin_bench.cpp diff --git a/teshsuite/surf/maxmin_bench/maxmin_bench.cpp b/teshsuite/surf/maxmin_bench/maxmin_bench.cpp deleted file mode 100644 index d3408b10fe..0000000000 --- a/teshsuite/surf/maxmin_bench/maxmin_bench.cpp +++ /dev/null @@ -1,196 +0,0 @@ -/* A crash few tests for the maxmin library */ - -/* Copyright (c) 2004-2017. The SimGrid Team. - * All rights reserved. */ - -/* This program is free software; you can redistribute it and/or modify it - * under the terms of the license (GNU LGPL) which comes with this package. */ - -#include "surf/maxmin.hpp" -#include "simgrid/msg.h" -#include "xbt/module.h" -#include "xbt/sysdep.h" /* time manipulation for benchmarking */ -#include "xbt/xbt_os_time.h" - -#define MYRANDMAX 1000 - -#include -#include -#include - -double date; -int64_t seedx = 0; - -static int myrand() { - seedx=seedx * 16807 % 2147483647; - return static_cast(seedx%1000); -} - -static double float_random(double max) -{ - return ((max * myrand()) / (MYRANDMAX + 1.0)); -} - -static unsigned int int_random(int max) -{ - return static_cast(((max * 1.0) * myrand()) / (MYRANDMAX + 1.0)); -} - -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_constraint_t cnst[nb_cnst]; - lmm_variable_t var[nb_var]; - int used[nb_cnst]; - - lmm_system_t Sys = lmm_system_new(1); - - for (int i = 0; i < nb_cnst; i++) { - cnst[i] = lmm_constraint_new(Sys, NULL, float_random(10.0)); - int l; - if(rate_no_limit>float_random(1.0)) - //Look at what happens when there is no concurrency limit - l=-1; - else - //Badly logarithmically random concurrency limit in [2^pw_base_limit+1,2^pw_base_limit+2^pw_max_limit] - l=(1<=concurrency_share) { - j--; - continue; - } - lmm_expand(Sys, cnst[k], var[i], float_random(1.5)); - lmm_expand_add(Sys, cnst[k], var[i], float_random(1.5)); - used[k]++; - } - } - - fprintf(stderr,"Starting to solve(%i)\n",myrand()%1000); - date = xbt_os_time() * 1000000; - lmm_solve(Sys); - date = xbt_os_time() * 1000000 - date; - - if(mode==2){ - fprintf(stderr,"Max concurrency:\n"); - int l=0; - for (int i = 0; i < nb_cnst; i++) { - int j=lmm_constraint_concurrency_maximum_get(cnst[i]); - int k=lmm_constraint_concurrency_limit_get(cnst[i]); - xbt_assert(k<0 || j<=k); - if(j>l) - l=j; - fprintf(stderr,"(%i):%i/%i ",i,j,k); - lmm_constraint_concurrency_maximum_reset(cnst[i]); - xbt_assert(not lmm_constraint_concurrency_maximum_get(cnst[i])); - if(i%10==9) - fprintf(stderr,"\n"); - } - fprintf(stderr,"\nTotal maximum concurrency is %i\n",l); - - lmm_print(Sys); - } - - for (int i = 0; i < nb_var; i++) - lmm_variable_free(Sys, var[i]); - lmm_system_free(Sys); -} - -unsigned int TestClasses [][4]= - //Nbcnst Nbvar Baselimit Maxlimit - {{ 10 ,10 ,1 ,2 }, //small - { 100 ,100 ,3 ,6 }, //medium - { 2000,2000 ,5 ,8 }, //big - { 20000,20000 ,7 ,10} //huge - }; - -int main(int argc, char **argv) -{ - MSG_init(&argc, argv); - - float rate_no_limit=0.2; - float acc_date=0; - float acc_date2=0; - int testclass; - - if(argc<3) { - fprintf(stderr, "Syntax: [test|debug|perf]\n"); - return -1; - } - - //what class? - if (not strcmp(argv[1], "small")) - testclass = 0; - else if (not strcmp(argv[1], "medium")) - testclass = 1; - else if (not strcmp(argv[1], "big")) - testclass = 2; - else if (not strcmp(argv[1], "huge")) - testclass = 3; - else { - fprintf(stderr, "Unknown class \"%s\", aborting!\n",argv[1]); - return -2; - } - - //How many times? - int testcount=atoi(argv[2]); - - //Show me everything (debug or performance)! - int mode=0; - if(argc>=4 && strcmp(argv[3],"test")==0) - mode=1; - if(argc>=4 && strcmp(argv[3],"debug")==0) - mode=2; - 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"); - - 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: - unsigned int nb_elem= (1<