Skip to content
Snippets Groups Projects

P2P

Open
Jammer, Timrequested to merge
p2p into main
1 file
+ 54
0
Compare changes
  • Side-by-side
  • Inline
+ 54
0
#! /usr/bin/python3
from scripts.Infrastructure.ErrorGenerator import ErrorGenerator
from scripts.Infrastructure.Template import TemplateManager
from scripts.Infrastructure.TemplateFactory import get_send_recv_template
@@ -55,3 +56,56 @@ class UnmatchedP2Pcall(ErrorGenerator):
return
for func in self.send_funcs:
yield from self.generate_impl(func, False)
class ComplexMissmach(ErrorGenerator):
def __init__(self):
pass
def get_feature(self):
return ["P2P"]
def generate(self, generate_full_set):
code = """
#define MSG_TAG_A 124523
#define N 10
#define EVEN 0
int buffer[N];
int i;
MPI_Request request;
MPI_Status status;
int countEvenNumbers = 0;
for (i = 0; i < 10; i++) {
if (rank == 0) {
int tag_sender = i * N;
MPI_Isend(buffer, 1, MPI_INT, 1, tag_sender, MPI_COMM_WORLD, &request);
MPI_Wait(&request, &status);
}
else if (rank == 1) {
int tag_receiver = i * N;
if (i % 2 == EVEN) {
(countEvenNumbers)++;
}
if ((countEvenNumbers) == (N / 2)) {
tag_receiver++; // mismatch
}
printf(\"Count Even Numbers: %d \\n\", countEvenNumbers);
MPI_Irecv(buffer, 1, MPI_INT, 0, tag_receiver, MPI_COMM_WORLD, &request);
MPI_Wait(&request, &status);
}
}
"""
tm = TemplateManager()
tm.register_instruction(code)
tm.set_description("Matching-tag-mpi_send", "Missmatching message tags in iteration 10")
yield tm
Loading