X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/4e03f78d2ffac18f4e8ffa7016a3cec61bbad03a..adbc0b061fbbd97f0f803730b8b640de19eb3d92:/teshsuite/smpi/MBI/CollComGenerator.py diff --git a/teshsuite/smpi/MBI/CollComGenerator.py b/teshsuite/smpi/MBI/CollComGenerator.py index b72574f5a5..7ecfd2acd6 100755 --- a/teshsuite/smpi/MBI/CollComGenerator.py +++ b/teshsuite/smpi/MBI/CollComGenerator.py @@ -1,7 +1,7 @@ #! /usr/bin/python3 import os import sys -from generator_utils import * +import generator_utils as gen template = """// @{generatedby}@ /* ///////////////////////// The MPI Bugs Initiative //////////////////////// @@ -11,17 +11,17 @@ template = """// @{generatedby}@ Description: @{shortdesc}@ @{longdesc}@ - Version of MPI: Conforms to MPI 1.1, does not require MPI 2 implementation + Version of MPI: Conforms to MPI 1.1, does not require MPI 2 implementation BEGIN_MPI_FEATURES - P2P!basic: Lacking - P2P!nonblocking: Lacking - P2P!persistent: Lacking - COLL!basic: @{collfeature}@ - COLL!nonblocking: @{icollfeature}@ - COLL!persistent: Lacking - COLL!tools: Yes - RMA: Lacking + P2P!basic: Lacking + P2P!nonblocking: Lacking + P2P!persistent: Lacking + COLL!basic: @{collfeature}@ + COLL!nonblocking: @{icollfeature}@ + COLL!persistent: Lacking + COLL!tools: Yes + RMA: Lacking END_MPI_FEATURES BEGIN_MBI_TESTS @@ -40,7 +40,7 @@ END_MBI_TESTS int main(int argc, char **argv) { int nprocs = -1; int rank = -1; - int root = 0; + int root = 0; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &nprocs); @@ -49,23 +49,23 @@ int main(int argc, char **argv) { if (nprocs < 2) printf("MBI ERROR: This test needs at least 2 processes to produce a bug!\\n"); - + MPI_Op op = MPI_SUM; MPI_Datatype type = MPI_INT; - MPI_Comm newcom; + MPI_Comm newcom; MPI_Comm_split(MPI_COMM_WORLD, 0, nprocs - rank, &newcom); @{change_com}@ - int dbs = sizeof(int)*nprocs; /* Size of the dynamic buffers for alltoall and friends */ + int dbs = sizeof(int)*nprocs; /* Size of the dynamic buffers for alltoall and friends */ @{init}@ @{start}@ - @{operation}@ /* MBIERROR */ - @{fini}@ - @{free}@ + @{operation}@ /* MBIERROR */ + @{fini}@ + @{free}@ - if(newcom != MPI_COMM_NULL && newcom != MPI_COMM_WORLD) - MPI_Comm_free(&newcom); + if(newcom != MPI_COMM_NULL && newcom != MPI_COMM_WORLD) + MPI_Comm_free(&newcom); MPI_Finalize(); printf("Rank %d finished normally\\n", rank); @@ -75,18 +75,18 @@ int main(int argc, char **argv) { # Generate code with one collective -for c in coll + icoll + ibarrier: +for c in gen.coll + gen.icoll + gen.ibarrier: patterns = {} patterns = {'c': c} patterns['generatedby'] = f'DO NOT EDIT: this file was generated by {os.path.basename(sys.argv[0])}. DO NOT EDIT.' - patterns['collfeature'] = 'Yes' if c in coll else 'Lacking' - patterns['icollfeature'] = 'Yes' if c in icoll + ibarrier else 'Lacking' + patterns['collfeature'] = 'Yes' if c in gen.coll else 'Lacking' + patterns['icollfeature'] = 'Yes' if c in gen.icoll + gen.ibarrier else 'Lacking' patterns['c'] = c - patterns['init'] = init[c]("1") - patterns['start'] = start[c]("1") - patterns['fini'] = fini[c]("1") - patterns['free'] = free[c]("1") - patterns['operation'] = operation[c]("1") + patterns['init'] = gen.init[c]("1") + patterns['start'] = gen.start[c]("1") + patterns['fini'] = gen.fini[c]("1") + patterns['free'] = gen.free[c]("1") + patterns['operation'] = gen.operation[c]("1") # Generate the correct code => to remove? replace = patterns @@ -95,22 +95,22 @@ for c in coll + icoll + ibarrier: replace['outcome'] = 'OK' replace['errormsg'] = '' replace['change_com'] = '/* No error injected here */' - make_file(template, f'ParamMatching_Com_{c}_ok.c', replace) + gen.make_file(template, f'ParamMatching_Com_{c}_ok.c', replace) # Generate the incorrect communicator matching replace = patterns replace['shortdesc'] = 'Collective @{c}@ with a communicator mismatch' - replace['longdesc'] = f'Odd ranks call the collective on newcom while even ranks call the collective on MPI_COMM_WORLD' + replace['longdesc'] = 'Odd ranks call the collective on newcom while even ranks call the collective on MPI_COMM_WORLD' replace['outcome'] = 'ERROR: CommunicatorMatching' replace['errormsg'] = 'Communicator mistmatch in collectives. @{c}@ at @{filename}@:@{line:MBIERROR}@ has newcom or MPI_COMM_WORLD as a communicator.' replace['change_com'] = 'if (rank % 2)\n newcom = MPI_COMM_WORLD; /* MBIERROR */' - make_file(template, f'ParamMatching_Com_{c}_nok.c', replace) + gen.make_file(template, f'ParamMatching_Com_{c}_nok.c', replace) # Generate the coll with newcom=MPI_COMM_NULL replace = patterns - replace['shortdesc'] = f'Collective @{c}@ with newcom=MPI_COMM_NULL' + replace['shortdesc'] = f'Collective @{c}@ with newcom=MPI_COMM_NULL' replace['longdesc'] = f'Collective @{c}@ with newcom=MPI_COMM_NULL' replace['outcome'] = 'ERROR: InvalidCommunicator' replace['errormsg'] = 'Invalid communicator. @{c}@ at @{filename}@:@{line:MBIERROR}@ has MPI_COMM_NULL as a communicator.' replace['change_com'] = 'newcom = MPI_COMM_NULL; /* MBIERROR */' - make_file(template, f'InvalidParam_ComNull_{c}_nok.c', replace) + gen.make_file(template, f'InvalidParam_ComNull_{c}_nok.c', replace)