From 010618f5607be3cecfa2da3ae193b3a1ae27b746 Mon Sep 17 00:00:00 2001 From: Arjun Date: Tue, 18 Feb 2025 04:49:59 +0530 Subject: [PATCH 1/5] Added get-aocc --- script/get-aocc/customize.py | 108 +++++++++++++++++++++++++++++++++++ script/get-aocc/meta.yaml | 44 ++++++++++++++ script/get-aocc/run.bat | 3 + script/get-aocc/run.sh | 8 +++ 4 files changed, 163 insertions(+) create mode 100644 script/get-aocc/customize.py create mode 100644 script/get-aocc/meta.yaml create mode 100644 script/get-aocc/run.bat create mode 100644 script/get-aocc/run.sh diff --git a/script/get-aocc/customize.py b/script/get-aocc/customize.py new file mode 100644 index 000000000..84c4b75e4 --- /dev/null +++ b/script/get-aocc/customize.py @@ -0,0 +1,108 @@ +from mlc import utils +import os + + +def predeps(i): + os_info = i['os_info'] + + env = i['env'] + if env.get('MLC_AOCC_TAR_FILE_PATH', '') != '': + env['MLC_AOCC_NEEDS_TAR'] = 'yes' + + return {'return': 0} + +def preprocess(i): + + os_info = i['os_info'] + + env = i['env'] + + exe_c = 'clang.exe' if os_info['platform'] == 'windows' else 'clang' + + if env.get('MLC_AOCC_DIR_PATH', '') != '' and env.get('MLC_AOCC_BIN_WITH_PATH','') == '': + for f in os.listdir(env['MLC_AOCC_DIR_PATH']): + if os.path.exists(os.path.join(env['MLC_AOCC_DIR_PATH'], f, "bin", exe_c)): + env['MLC_AOCC_BIN_WITH_PATH'] = os.path.join(env['MLC_AOCC_DIR_PATH'], f, "bin", exe_c) + + if env.get('MLC_HOST_OS_FLAVOR', '') == 'rhel': + if "12" in env.get('MLC_VERSION', '') or "12" in env.get( + 'MLC_VERSION_MIN', ''): + if env.get('MLC_TMP_PATH', '') == '': + env['MLC_TMP_PATH'] = '' + env['MLC_TMP_PATH'] += "/opt/rh/aocc/root/usr/bin" + env['MLC_TMP_PATH_IGNORE_NON_EXISTANT'] = 'yes' + + if 'MLC_AOCC_BIN_WITH_PATH' not in env: + r = i['automation'].find_artifact({'file_name': exe_c, + 'env': env, + 'os_info': os_info, + 'default_path_env_key': 'PATH', + 'detect_version': True, + 'env_path_key': 'MLC_AOCC_BIN_WITH_PATH', + 'run_script_input': i['run_script_input'], + 'recursion_spaces': i['recursion_spaces']}) + if r['return'] > 0: + + return r + + return {'return': 0} + + +def detect_version(i): + r = i['automation'].parse_version({'match_text': r'AMD\s+clang\sversion\s([\d.]+)', + 'group_number': 1, + 'env_key': 'MLC_AOCC_VERSION', + 'which_env': i['env']}) + if r['return'] > 0: + return r + version = r['version'] + + print(i['recursion_spaces'] + ' Detected version: {}'.format(version)) + + return {'return': 0, 'version': version} + + +def postprocess(i): + + env = i['env'] + r = detect_version(i) + if r['return'] > 0: + return r + + env['MLC_COMPILER_FAMILY'] = 'AOCC' + version = r['version'] + env['MLC_COMPILER_VERSION'] = env['MLC_AOCC_VERSION'] + env['MLC_AOCC_CACHE_TAGS'] = 'version-' + version + env['MLC_COMPILER_CACHE_TAGS'] = 'version-' + version + ',family-aocc' + + found_file_path = env['MLC_AOCC_BIN_WITH_PATH'] + + found_path = os.path.dirname(found_file_path) + + env['MLC_AOCC_INSTALLED_PATH'] = found_path + + file_name_c = os.path.basename(found_file_path) + file_name_cpp = file_name_c.replace('clang', 'clang++') + env['FILE_NAME_CPP'] = file_name_cpp + + env['MLC_AOCC_BIN'] = file_name_c + + # General compiler for general program compilation + env['MLC_C_COMPILER_BIN'] = file_name_c + env['MLC_C_COMPILER_FLAG_OUTPUT'] = '-o ' + env['MLC_C_COMPILER_WITH_PATH'] = found_file_path + env['MLC_C_COMPILER_FLAG_VERSION'] = '--version' + + env['MLC_CXX_COMPILER_BIN'] = file_name_cpp + env['MLC_CXX_COMPILER_WITH_PATH'] = os.path.join(found_path, file_name_cpp) + env['MLC_CXX_COMPILER_FLAG_OUTPUT'] = '-o ' + env['MLC_CXX_COMPILER_FLAG_VERSION'] = '--version' + + env['MLC_COMPILER_FLAGS_FAST'] = "-O3" + env['MLC_LINKER_FLAGS_FAST'] = "-O3" + env['MLC_COMPILER_FLAGS_DEBUG'] = "-O0" + env['MLC_LINKER_FLAGS_DEBUG'] = "-O0" + env['MLC_COMPILER_FLAGS_DEFAULT'] = "-O2" + env['MLC_LINKER_FLAGS_DEFAULT'] = "-O2" + + return {'return': 0, 'version': version} diff --git a/script/get-aocc/meta.yaml b/script/get-aocc/meta.yaml new file mode 100644 index 000000000..80a21d311 --- /dev/null +++ b/script/get-aocc/meta.yaml @@ -0,0 +1,44 @@ +alias: get-aocc +automation_alias: script +automation_uid: 5b4e0237da074764 +cache: true +category: Compiler automation +clean_files: [] +deps: +- tags: detect,os +- tags: extract,file + update_tags_from_env_with_prefix: + _path.: + - MLC_AOCC_TAR_FILE_PATH + force_cache: true + env: + MLC_EXTRACT_FINAL_ENV_NAME: MLC_AOCC_DIR_PATH + MLC_EXTRACT_TO_FOLDER: aocc_install + enable_if_env: + MLC_AOCC_NEEDS_TAR: + - yes + +input_mapping: + tar_file_path: MLC_AOCC_TAR_FILE_PATH + +name: Detect or install AOCC compiler +new_env_keys: +- MLC_AOCC_* +- MLC_C_COMPILER_* +- MLC_CXX_COMPILER_* +- MLC_COMPILER_* +- MLC_LINKER_* +- + CFLAGS +- + CXXFLAGS +- + FFLAGS +- + LDFLAGS +- +MLC_HOST_OS_DEFAULT_INCLUDE_PATH +- +PATH +post_depsq: +- tags: get,compiler-flags +sort: 500 +tags: +- compiler +- get +- aocc +uid: 1ceb0656e99a44ec diff --git a/script/get-aocc/run.bat b/script/get-aocc/run.bat new file mode 100644 index 000000000..5a08d5b62 --- /dev/null +++ b/script/get-aocc/run.bat @@ -0,0 +1,3 @@ +%MLC_AOCC_BIN_WITH_PATH% --version > tmp-ver.out +IF %ERRORLEVEL% NEQ 0 EXIT %ERRORLEVEL% + diff --git a/script/get-aocc/run.sh b/script/get-aocc/run.sh new file mode 100644 index 000000000..fe19b6c8d --- /dev/null +++ b/script/get-aocc/run.sh @@ -0,0 +1,8 @@ +#!/bin/bash +aocc_bin=${MLC_AOCC_BIN_WITH_PATH} +echo "${aocc_bin} --version" + +${aocc_bin} --version > tmp-ver.out +test $? -eq 0 || exit $? + +cat tmp-ver.out From 8ba24e1fdee02f027939a2b89b66338be1b4fe32 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 17 Feb 2025 23:21:59 +0000 Subject: [PATCH 2/5] [Automated Commit] Format Codebase [skip ci] --- script/get-aocc/customize.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/script/get-aocc/customize.py b/script/get-aocc/customize.py index 84c4b75e4..383cac39f 100644 --- a/script/get-aocc/customize.py +++ b/script/get-aocc/customize.py @@ -11,6 +11,7 @@ def predeps(i): return {'return': 0} + def preprocess(i): os_info = i['os_info'] @@ -18,12 +19,15 @@ def preprocess(i): env = i['env'] exe_c = 'clang.exe' if os_info['platform'] == 'windows' else 'clang' - - if env.get('MLC_AOCC_DIR_PATH', '') != '' and env.get('MLC_AOCC_BIN_WITH_PATH','') == '': + + if env.get('MLC_AOCC_DIR_PATH', '') != '' and env.get( + 'MLC_AOCC_BIN_WITH_PATH', '') == '': for f in os.listdir(env['MLC_AOCC_DIR_PATH']): - if os.path.exists(os.path.join(env['MLC_AOCC_DIR_PATH'], f, "bin", exe_c)): - env['MLC_AOCC_BIN_WITH_PATH'] = os.path.join(env['MLC_AOCC_DIR_PATH'], f, "bin", exe_c) - + if os.path.exists(os.path.join( + env['MLC_AOCC_DIR_PATH'], f, "bin", exe_c)): + env['MLC_AOCC_BIN_WITH_PATH'] = os.path.join( + env['MLC_AOCC_DIR_PATH'], f, "bin", exe_c) + if env.get('MLC_HOST_OS_FLAVOR', '') == 'rhel': if "12" in env.get('MLC_VERSION', '') or "12" in env.get( 'MLC_VERSION_MIN', ''): From 458eecd23f7e95511cc16cbd0e3af65cd6b5512b Mon Sep 17 00:00:00 2001 From: Arjun Suresh Date: Tue, 18 Feb 2025 18:12:47 +0000 Subject: [PATCH 3/5] Update customize.py --- script/app-mlperf-inference/customize.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/script/app-mlperf-inference/customize.py b/script/app-mlperf-inference/customize.py index 34bd3e046..ab421f248 100644 --- a/script/app-mlperf-inference/customize.py +++ b/script/app-mlperf-inference/customize.py @@ -254,7 +254,7 @@ def postprocess(i): measurements['starting_weights_filename'] = env.get( 'MLC_ML_MODEL_STARTING_WEIGHTS_FILENAME', env.get( 'MLC_ML_MODEL_FILE', measurements.get( - 'starting_weights_filename', ''))) + 'starting_weights_filename', 'TBD'))) measurements['retraining'] = env.get( 'MLC_ML_MODEL_RETRAINING', measurements.get( 'retraining', 'no')) From 3e54e6267acf4d4a6a4c9102830ae98ab1ced39c Mon Sep 17 00:00:00 2001 From: Arjun Suresh Date: Tue, 18 Feb 2025 18:13:11 +0000 Subject: [PATCH 4/5] Update meta.yaml --- script/app-mlperf-inference/meta.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/script/app-mlperf-inference/meta.yaml b/script/app-mlperf-inference/meta.yaml index 867b5e6c8..846936234 100644 --- a/script/app-mlperf-inference/meta.yaml +++ b/script/app-mlperf-inference/meta.yaml @@ -27,7 +27,7 @@ default_env: MLC_MLPERF_RUN_STYLE: test MLC_TEST_QUERY_COUNT: '10' MLC_MLPERF_QUANTIZATION: off - MLC_GET_PLATFORM_DETAILS: yes + MLC_GET_PLATFORM_DETAILS: no env: MLC_MLPERF_PRINT_SUMMARY: "no" From 8156987fcc652281bcf3b93c139f1ec445758ba3 Mon Sep 17 00:00:00 2001 From: Arjun Suresh Date: Tue, 18 Feb 2025 18:17:39 +0000 Subject: [PATCH 5/5] Update meta.yaml --- script/app-mlperf-inference-mlcommons-python/meta.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/script/app-mlperf-inference-mlcommons-python/meta.yaml b/script/app-mlperf-inference-mlcommons-python/meta.yaml index 011e46b99..0eadfa0ff 100644 --- a/script/app-mlperf-inference-mlcommons-python/meta.yaml +++ b/script/app-mlperf-inference-mlcommons-python/meta.yaml @@ -885,6 +885,7 @@ variations: ENQUEUE_NUM_THREADS: 2 MLC_MLPERF_LOADGEN_MAX_BATCHSIZE: 16 MLC_MLPERF_VISION_DATASET_OPTION: imagenet_pytorch + MLC_ML_MODEL_STARTING_WEIGHTS_FILENAME: <<>> tvm-onnx: