From: velho Date: Fri, 19 Jan 2007 15:53:43 +0000 (+0000) Subject: Adding tests for sdp. X-Git-Tag: v3.3~2283 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/6187b89265acef8d6004b67e70c4508f46fb1def?hp=ee5ba64df41bb3f6540616ac2ba157951d79245b Adding tests for sdp. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@3076 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- diff --git a/testsuite/Makefile.am b/testsuite/Makefile.am index 3f6f0976b0..067041a237 100644 --- a/testsuite/Makefile.am +++ b/testsuite/Makefile.am @@ -35,6 +35,9 @@ RL_tests = \ SG_tests = \ surf/maxmin_usage surf/maxmin_bench \ surf/trace_usage surf/surf_usage surf/surf_usage2 +if HAVE_SDP + SG_tests+=surf/sdp_usage surf/sdp_bench +endif simdag_tests = simdag/sd_test @@ -64,6 +67,10 @@ surf_maxmin_bench_LDADD= $(LDADD_SG) surf_trace_usage_LDADD= $(LDADD_SG) surf_surf_usage_LDADD= $(LDADD_SG) surf_surf_usage2_LDADD= $(LDADD_SG) +if HAVE_SDP +surf_sdp_usage_LDADD= $(LDADD_SG) +surf_sdp_bench_LDADD= $(LDADD_SG) +endif gras_trp_tcp_client_LDADD= $(LDADD_RL) gras_trp_tcp_server_LDADD= $(LDADD_RL) diff --git a/testsuite/surf/sdp_bench.c b/testsuite/surf/sdp_bench.c new file mode 100644 index 0000000000..3ebef77032 --- /dev/null +++ b/testsuite/surf/sdp_bench.c @@ -0,0 +1,93 @@ +/* $Id$ */ + +/* A crash few tests for the maxmin library */ + +/* Copyright (c) 2004 Arnaud Legrand. 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. */ + +#ifdef __BORLANDC__ +#pragma hdrstop +#endif + + +#include +#include +#include "xbt/xbt_portability.h" +#include "surf/maxmin.h" +#include "xbt/xbt_portability.h" +#include "xbt/sysdep.h" /* time manipulation for benchmarking */ + +double date; + +double float_random(double max); +double float_random(double max) +{ + return ((max * rand()) / (RAND_MAX + 1.0)); +} + +int int_random(int max); +int int_random(int max) +{ + return (int) (((max * 1.0) * rand()) / (RAND_MAX + 1.0)); +} + +void test(int nb_cnst, int nb_var, int nb_elem); +void test(int nb_cnst, int nb_var, int nb_elem) +{ + lmm_system_t Sys = NULL; + lmm_constraint_t *cnst = calloc(nb_cnst, sizeof(lmm_constraint_t)); + lmm_variable_t *var = calloc(nb_var, sizeof(lmm_variable_t)); + int *used = calloc(nb_cnst, sizeof(int)); + int i, j, k; + + Sys = lmm_system_new(); + + for (i = 0; i < nb_cnst; i++) { + cnst[i] = lmm_constraint_new(Sys, NULL, float_random(10.0)); + } + + for (i = 0; i < nb_var; i++) { + var[i] = lmm_variable_new(Sys, NULL, 1.0, -1.0, nb_elem); + for (j = 0; j < nb_cnst; j++) + used[j] = 0; + for (j = 0; j < nb_elem; j++) { + k = int_random(nb_cnst); + if (used[k]) { + j--; + continue; + } + lmm_expand(Sys, cnst[k], var[i], float_random(1.0)); + used[k] = 1; + } + } + + printf("Starting to solve\n"); + date = xbt_os_time() * 1000000; + sdp_solve(Sys); + date = xbt_os_time() * 1000000 - date; + + lmm_system_free(Sys); + free(cnst); + free(var); + free(used); +} + +#ifdef __BORLANDC__ +#pragma argsused +#endif + + +int main(int argc, char **argv) +{ +/* int nb_cnst = 20000; */ +/* int nb_var = 20000; */ +/* int nb_elem = 80; */ +/* date = xbt_os_time() * 1000000; */ +/* test(nb_cnst, nb_var, nb_elem); */ +/* printf("One shot execution time for a total of %d constraints, " */ +/* "%d variables with %d active constraint each : %g microsecondes \n", */ +/* nb_cnst, nb_var, nb_elem, date); */ + return 0; +} diff --git a/testsuite/surf/sdp_usage.c b/testsuite/surf/sdp_usage.c new file mode 100644 index 0000000000..5a87354e1d --- /dev/null +++ b/testsuite/surf/sdp_usage.c @@ -0,0 +1,108 @@ +/* $Id$ */ + +/* A few tests for the maxmin library */ + +/* Copyright (c) 2004 Arnaud Legrand. 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. */ + +#ifdef __BORLANDC__ +#pragma hdrstop +#endif + +#include +#include +#include "surf/maxmin.h" + +#include "xbt/log.h" +#include "xbt/module.h" +XBT_LOG_NEW_DEFAULT_CATEGORY(surf_test,"Messages specific for surf example"); + +#define PRINT_VAR(var) DEBUG1(#var " = %g\n",lmm_variable_getvalue(var)); + +/* */ +/* ______ */ +/* ==l1== L2 ==L3== */ +/* ------ */ +/* */ + +void test(void); +void test(void) +{ + lmm_system_t Sys = NULL ; + lmm_constraint_t L1 = NULL; + lmm_constraint_t L2 = NULL; + lmm_constraint_t L3 = NULL; + + lmm_variable_t R_1_2_3 = NULL; + lmm_variable_t R_1 = NULL; + lmm_variable_t R_2 = NULL; + lmm_variable_t R_3 = NULL; + + Sys = lmm_system_new(); + L1 = lmm_constraint_new(Sys, (void *) "L1", 1.0); + L2 = lmm_constraint_new(Sys, (void *) "L2", 10.0); + L3 = lmm_constraint_new(Sys, (void *) "L3", 1.0); + + R_1_2_3 = lmm_variable_new(Sys, (void *) "R 1->2->3", 1.0 , -1.0 , 3); + R_1 = lmm_variable_new(Sys, (void *) "R 1", 1.0 , -1.0 , 1); + R_2 = lmm_variable_new(Sys, (void *) "R 2", 1.0 , -1.0 , 1); + R_3 = lmm_variable_new(Sys, (void *) "R 3", 1.0 , -1.0 , 1); + + lmm_expand(Sys, L1, R_1_2_3, 1.0); + lmm_expand(Sys, L2, R_1_2_3, 1.0); + lmm_expand(Sys, L3, R_1_2_3, 1.0); + + lmm_expand(Sys, L1, R_1, 1.0); + + lmm_expand(Sys, L2, R_2, 1.0); + + lmm_expand(Sys, L3, R_3, 1.0); + + PRINT_VAR(R_1_2_3); + PRINT_VAR(R_1); + PRINT_VAR(R_2); + PRINT_VAR(R_3); + + DEBUG0("\n"); + lmm_solve(Sys); + + PRINT_VAR(R_1_2_3); + PRINT_VAR(R_1); + PRINT_VAR(R_2); + PRINT_VAR(R_3); + DEBUG0("\n"); + + + lmm_update_variable_weight(Sys,R_1_2_3,.5); + sdp_solve(Sys); + + PRINT_VAR(R_1_2_3); + PRINT_VAR(R_1); + PRINT_VAR(R_2); + PRINT_VAR(R_3); + + lmm_system_free(Sys); +} + +void test2(void); +void test2(void) +{ +} + +#ifdef __BORLANDC__ +#pragma argsused +#endif + +int main(int argc, char **argv) +{ + xbt_init(&argc,argv); + + DEBUG0("***** Test 1 ***** \n"); + test(); +/* DEBUG0("***** Test 2 ***** \n"); */ +/* test2(); */ + + return 0; +}