diff --git a/scripts/errors/coll/LocalConcurrency.py b/scripts/errors/coll/LocalConcurrency.py new file mode 100644 index 0000000000000000000000000000000000000000..c3209915aab698c3f4611c287d42b414354c5161 --- /dev/null +++ b/scripts/errors/coll/LocalConcurrency.py @@ -0,0 +1,37 @@ +#! /usr/bin/python3 + +from scripts.Infrastructure.ErrorGenerator import ErrorGenerator +from scripts.Infrastructure.Instruction import Instruction +from scripts.Infrastructure.MPICallFactory import MPICallFactory, CorrectMPICallFactory +from scripts.Infrastructure.CorrectParameter import CorrectParameterFactory, get_matching_recv +from scripts.Infrastructure.Template import TemplateManager +from scripts.Infrastructure.TemplateFactory import get_collective_template + +class InvalidRankErrorColl(ErrorGenerator): + nbfunc_to_use = ["mpi_ibarrier", "mpi_iallreduce", "mpi_ialltoall", "mpi_ibcast", "mpi_ireduce", "mpi_iscatter", "mpi_igather", "mpi_iscan" ] + + def __init__(self): + pass + + + def get_feature(self): + return ["COLL"] + + + def generate(self, generate_full_set): + + for func_to_use in self.nbfunc_to_use: + tm = get_collective_template(func_to_use) + + tm.set_description("LocalConcurrency-"+func_to_use, "Usage of buffer before operation is completed") + + conflicting_inst = Instruction("buf[2]=1;") + conflicting_inst.set_has_error() + wait = tm.get_instruction("WAIT", return_list=True) + tm.insert_instruction(conflicting_inst,before_instruction=wait) + + + yield tm + + if not generate_full_set: + return \ No newline at end of file diff --git a/scripts/errors/coll/ParamMatching.py b/scripts/errors/coll/ParamMatching.py index 27c448807cdd4b271de4c8e73e8a5790a25284ef..6bfb81352a638dea46b09055f2d5ace025388352 100644 --- a/scripts/errors/coll/ParamMatching.py +++ b/scripts/errors/coll/ParamMatching.py @@ -86,7 +86,6 @@ class InvalidComErrorColl(ErrorGenerator): yield tm - # only check for one comm if not generate_full_set: return