Select Git revision
-
Rene Ebeling authoredRene Ebeling authored
LocalConcurrency.py 1.34 KiB
#! /usr/bin/python3
from Infrastructure.ErrorGenerator import ErrorGenerator
from Infrastructure.Instruction import Instruction
from Infrastructure.MPICallFactory import MPICallFactory, CorrectMPICallFactory
from Infrastructure.CorrectParameter import CorrectParameterFactory, get_matching_recv
from Infrastructure.Template import TemplateManager
from Infrastructure.TemplateFactory import get_collective_template
from Infrastructure.Variables import *
class LocalConcurrencyErrorColl(ErrorGenerator):
nbfunc_to_use = ["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_level, real_world_score_table):
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 generate_level <= BASIC_TEST_LEVEL:
return