@@ -340,6 +340,7 @@ def read_benchmark_implementations(
340340
341341 setup_init (config , modules )
342342 set_default_reference_implementation_postfix (config , modules )
343+ set_validate_func (config , modules )
343344
344345 for module in modules :
345346 module_name , postfix = discover_module_name_and_postfix (module , config )
@@ -386,6 +387,49 @@ def read_benchmark_implementations(
386387 )
387388
388389
390+ def set_validate_func (
391+ config : Benchmark ,
392+ modules : set [str ] = None ,
393+ ):
394+ """Read, discover and populate config with validation module and function.
395+
396+ Validation package priority, if found/set:
397+ 1. package specified in config
398+ 2. validation package at <benchmark>/<benchmark>_validate.py
399+ 3. default validation package
400+
401+ Args:
402+ config: Benchmark configuration object where settings should be
403+ populated.
404+ modules: List of available modules for the benchmark to find init.
405+ """
406+ if config .validate_package_path != "" :
407+ if importlib .util .find_spec (config .validate_package_path ) is None :
408+ logging .fatal (
409+ f"validation package path is specified but not found for { config .module_name } "
410+ )
411+ else :
412+ validate_package_path = "dpbench.infrastructure.benchmark_validation"
413+
414+ for module_name in [
415+ config .short_name + "_validate" ,
416+ config .module_name + "_validate" ,
417+ ]:
418+ if module_name in modules :
419+ validate_package_path = config .package_path + "." + module_name
420+ break
421+
422+ config .validate_package_path = validate_package_path
423+
424+ val_mod = importlib .import_module (config .validate_package_path )
425+
426+ if not hasattr (val_mod , config .validate_func_name ):
427+ logging .fatal (
428+ f"validation function '{ config .validate_func_name } ' not found for "
429+ + f"{ config .module_name } at '{ validate_package_path } '"
430+ )
431+
432+
389433def set_default_reference_implementation_postfix (
390434 config : Benchmark ,
391435 modules : set [str ] = None ,
0 commit comments