Skip to content
Snippets Groups Projects
Verified Commit d1581c55 authored by Simon Schwitanski's avatar Simon Schwitanski :slight_smile:
Browse files

Reduce number of RMA tests for level 1

parent 93cadbed
No related branches found
No related tags found
1 merge request!20Parsing and tools updates
...@@ -20,7 +20,12 @@ class EpochLifeCycleRMA(ErrorGenerator): ...@@ -20,7 +20,12 @@ class EpochLifeCycleRMA(ErrorGenerator):
return ["RMA"] return ["RMA"]
def generate(self, generate_level, real_world_score_table): def generate(self, generate_level, real_world_score_table):
for sync_mode in ["fence", "winlockall", "winlock"]: if generate_level <= BASIC_TEST_LEVEL:
sync_modes = ["fence"]
else:
sync_modes = ["fence", "winlockall", "winlock"]
for sync_mode in sync_modes:
for rma_func in ["mpi_get", "mpi_put", "mpi_accumulate"]: for rma_func in ["mpi_get", "mpi_put", "mpi_accumulate"]:
# epoch is not closed # epoch is not closed
tm = get_rma_template(rmaop_func=rma_func, sync_mode=sync_mode) tm = get_rma_template(rmaop_func=rma_func, sync_mode=sync_mode)
......
...@@ -223,7 +223,20 @@ class GlobalConcurrencyErrorRMA(ErrorGenerator): ...@@ -223,7 +223,20 @@ class GlobalConcurrencyErrorRMA(ErrorGenerator):
cf = CorrectParameterFactory() cf = CorrectParameterFactory()
# possible combinations of local buffer accesses (hasconflict = True | False)
if generate_level <= BASIC_TEST_LEVEL:
# possible combinations of remote / local accesses (hasconflict = True | False)
remote_access_combinations: List[Tuple[List[str], List[str], bool]] = [
(remote_read, ["bufwrite", "localbufwrite"], True),
(remote_read, remote_write, True),
(remote_write, remote_write, True),
# atomics
(remote_atomic_update, remote_atomic_update, False),
(remote_atomic_update, remote_write, True),
]
sync_modes = [self.fence, self.lockall, self.lock]
else:
# possible combinations of remote / local accesses (hasconflict = True | False)
remote_access_combinations: List[Tuple[List[str], List[str], bool]] = [ remote_access_combinations: List[Tuple[List[str], List[str], bool]] = [
(remote_read, remote_read, False), (remote_read, remote_read, False),
(remote_read, ["bufread", "localbufread"], False), (remote_read, ["bufread", "localbufread"], False),
...@@ -239,7 +252,6 @@ class GlobalConcurrencyErrorRMA(ErrorGenerator): ...@@ -239,7 +252,6 @@ class GlobalConcurrencyErrorRMA(ErrorGenerator):
(remote_atomic_update, ["bufread", "localbufread"], True), (remote_atomic_update, ["bufread", "localbufread"], True),
(remote_atomic_update, ["bufwrite", "localbufwrite"], True), (remote_atomic_update, ["bufwrite", "localbufwrite"], True),
] ]
sync_modes = [self.fence, self.lockall, self.lock, self.rmarequest] sync_modes = [self.fence, self.lockall, self.lock, self.rmarequest]
if generate_level <= SUFFICIENT_TEST_LEVEL: if generate_level <= SUFFICIENT_TEST_LEVEL:
......
...@@ -18,9 +18,11 @@ class InvalidBufferErrorRMA(ErrorGenerator): ...@@ -18,9 +18,11 @@ class InvalidBufferErrorRMA(ErrorGenerator):
return ["RMA"] return ["RMA"]
def generate(self, generate_level, real_world_score_table): def generate(self, generate_level, real_world_score_table):
if generate_level <= BASIC_TEST_LEVEL:
rma_funcs = ["mpi_get"]
else:
rma_funcs = ["mpi_get", "mpi_rget", "mpi_put", "mpi_rput", "mpi_accumulate", "mpi_raccumulate", rma_funcs = ["mpi_get", "mpi_rget", "mpi_put", "mpi_rput", "mpi_accumulate", "mpi_raccumulate",
"mpi_get_accumulate", "mpi_rget_accumulate", "mpi_fetch_and_op", "mpi_compare_and_swap"] "mpi_get_accumulate", "mpi_rget_accumulate", "mpi_fetch_and_op", "mpi_compare_and_swap"]
# go through alloc functions (Win_alloc, Win_create) and set NULL # go through alloc functions (Win_alloc, Win_create) and set NULL
for alloc_call in ["mpi_win_allocate", "mpi_win_create"]: for alloc_call in ["mpi_win_allocate", "mpi_win_create"]:
tm = get_rma_template(win_alloc_func=alloc_call) tm = get_rma_template(win_alloc_func=alloc_call)
......
...@@ -19,7 +19,7 @@ class InvalidDatatypeErrorRMA(ErrorGenerator): ...@@ -19,7 +19,7 @@ class InvalidDatatypeErrorRMA(ErrorGenerator):
def generate(self, generate_level, real_world_score_table): def generate(self, generate_level, real_world_score_table):
rma_funcs = [] rma_funcs = []
if generate_level <= BASIC_TEST_LEVEL: if generate_level <= BASIC_TEST_LEVEL:
rma_funcs = ["mpi_get", "mpi_put", "mpi_accumulate"] rma_funcs = ["mpi_get"]
else: else:
rma_funcs = ["mpi_get", "mpi_rget", "mpi_put", "mpi_rput", "mpi_accumulate", "mpi_raccumulate", rma_funcs = ["mpi_get", "mpi_rget", "mpi_put", "mpi_rput", "mpi_accumulate", "mpi_raccumulate",
"mpi_get_accumulate", "mpi_rget_accumulate", "mpi_fetch_and_op", "mpi_compare_and_swap"] "mpi_get_accumulate", "mpi_rget_accumulate", "mpi_fetch_and_op", "mpi_compare_and_swap"]
......
...@@ -21,7 +21,7 @@ class InvalidRankErrorRMA(ErrorGenerator): ...@@ -21,7 +21,7 @@ class InvalidRankErrorRMA(ErrorGenerator):
def generate(self, generate_level, real_world_score_table): def generate(self, generate_level, real_world_score_table):
rma_funcs = [] rma_funcs = []
if generate_level <= BASIC_TEST_LEVEL: if generate_level <= BASIC_TEST_LEVEL:
rma_funcs = ["mpi_get", "mpi_put", "mpi_accumulate"] rma_funcs = ["mpi_get"]
else: else:
rma_funcs = ["mpi_get", "mpi_rget", "mpi_put", "mpi_rput", "mpi_accumulate", "mpi_raccumulate", rma_funcs = ["mpi_get", "mpi_rget", "mpi_put", "mpi_rput", "mpi_accumulate", "mpi_raccumulate",
"mpi_get_accumulate", "mpi_rget_accumulate", "mpi_fetch_and_op", "mpi_compare_and_swap"] "mpi_get_accumulate", "mpi_rget_accumulate", "mpi_fetch_and_op", "mpi_compare_and_swap"]
......
...@@ -269,6 +269,22 @@ class LocalConcurrencyErrorRMA(ErrorGenerator): ...@@ -269,6 +269,22 @@ class LocalConcurrencyErrorRMA(ErrorGenerator):
cf = CorrectParameterFactory() cf = CorrectParameterFactory()
if generate_level <= BASIC_TEST_LEVEL:
# possible combinations of local buffer accesses (hasconflict = True | False)
local_access_combinations: List[Tuple[List[str], List[str], bool]] = [
# buffer access before RMA access, no conflict
(["bufread"], local_origin_addr_write, False),
# buffer access after RMA access, conflict depends on combination
(local_origin_addr_read, ["bufread"], False),
(["mpi_rget"], ["bufwrite"], True),
(["mpi_get"], ["bufwrite"], True),
# combinations of RMA reads / writes
(local_origin_addr_read, local_origin_addr_write, True),
(local_origin_addr_write, local_origin_addr_write, True),
]
sync_modes = [self.lockallflush, self.fence, self.rmarequest, self.lockunlock]
else:
# possible combinations of local buffer accesses (hasconflict = True | False) # possible combinations of local buffer accesses (hasconflict = True | False)
local_access_combinations: List[Tuple[List[str], List[str], bool]] = [ local_access_combinations: List[Tuple[List[str], List[str], bool]] = [
# buffer access before RMA access, no conflict # buffer access before RMA access, no conflict
...@@ -287,9 +303,9 @@ class LocalConcurrencyErrorRMA(ErrorGenerator): ...@@ -287,9 +303,9 @@ class LocalConcurrencyErrorRMA(ErrorGenerator):
(local_origin_addr_write, local_origin_addr_read, True), (local_origin_addr_write, local_origin_addr_read, True),
(local_origin_addr_write, local_origin_addr_write, True), (local_origin_addr_write, local_origin_addr_write, True),
] ]
sync_modes = [self.fence, self.lockallflush, self.lockallflushlocal, self.lockflush, self.lockflushlocal, self.lockunlock, self.rmarequest] sync_modes = [self.fence, self.lockallflush, self.lockallflushlocal, self.lockflush, self.lockflushlocal, self.lockunlock, self.rmarequest]
if generate_level <= SUFFICIENT_TEST_LEVEL: if generate_level <= SUFFICIENT_TEST_LEVEL:
# go through all sync modes, but only one access combination per sync mode # go through all sync modes, but only one access combination per sync mode
combos = [(comb, sync_modes[i % len(sync_modes)]) for (i, comb) in enumerate(local_access_combinations)] combos = [(comb, sync_modes[i % len(sync_modes)]) for (i, comb) in enumerate(local_access_combinations)]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment