diff --git a/scripts/errors/coll/ParamMatchingType.py b/scripts/errors/coll/ParamMatchingType.py index 8680e4f75258dd11d27e88e06344084cd9b970b6..f8757a22a52f2ba5826d359b4395b2cf02f94e40 100644 --- a/scripts/errors/coll/ParamMatchingType.py +++ b/scripts/errors/coll/ParamMatchingType.py @@ -145,23 +145,22 @@ class InvalidComErrorColl(ErrorGenerator): def generate(self, generate_level, real_world_score_table): + types = predefined_types + user_defined_types combinations_to_use = [] for f in self.functions_to_use: - for t1 in predefined_types + user_defined_types: - for t2 in predefined_types + user_defined_types: - for comm in predefined_comms + comm_creators + intercomms: + for comm in predefined_comms + comm_creators + intercomms: + for i, t1 in enumerate(types): + if generate_level == REAL_WORLD_TEST_LEVEL and not is_combination_important(real_world_score_table, + f, datatype=t1.lower(), + communicator=comm): + continue + for t2 in types[i:]: + if generate_level == REAL_WORLD_TEST_LEVEL and not is_combination_important( + real_world_score_table, f, datatype=t2.lower(), communicator=comm): + continue if is_combination_compatible(t1, t2, f): combinations_to_use.append((t1, t2, f, comm)) - if generate_level == REAL_WORLD_TEST_LEVEL: - combinations_to_use = [(t1, t2, f, comm) for (t1, t2, f, comm) in combinations_to_use if - is_combination_important(real_world_score_table, - f, datatype=t1.lower(), - communicator=comm) and - is_combination_important(real_world_score_table, - f, datatype=t2.lower(), - communicator=comm)] - if generate_level == SUFFICIENT_TEST_LEVEL: types_checked = set() combinations_to_use_filtered = []