diff options
| author | 刘畅 <[email protected]> | 2024-11-27 07:25:57 +0000 |
|---|---|---|
| committer | 刘畅 <[email protected]> | 2024-11-27 07:25:57 +0000 |
| commit | 8e6b426537e274126b7cf5ea76a22b50ed337542 (patch) | |
| tree | d2ae2a688abc66a50f7d2ca836caff59ef557697 | |
| parent | 2e73009c3cfd52ef1962dd338c02b323dabe2943 (diff) | |
| parent | 2f6c16c367cd7e7705abcc7dfb1b08dbfe8a74c5 (diff) | |
Feature support aarch64
See merge request tango/shaping-engine!106
| -rw-r--r-- | .gitlab-ci.yml | 250 | ||||
| -rw-r--r-- | CMakeLists.txt | 10 | ||||
| -rw-r--r-- | ci/travis.sh | 8 | ||||
| -rw-r--r-- | common/test/gtest_libavl.cpp | 39 |
4 files changed, 171 insertions, 136 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index aa12c63..ef0d33b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -3,125 +3,18 @@ variables: BUILD_PADDING_PREFIX: /tmp/padding_for_CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX_PREFIX_PREFIX_PREFIX_PREFIX_PREFIX/ INSTALL_PREFIX: "/opt/tsg/shaping_engine" TESTING_VERSION_BUILD: 0 - BUILD_IMAGE_CENTOS7: "git.mesalab.cn:7443/mesa_platform/build-env:master" - BUILD_IMAGE_CENTOS8: "git.mesalab.cn:7443/mesa_platform/build-env:rockylinux" + BUILD_IMAGE_X86_64_ROCKY8: "git.mesalab.cn:7443/mesa_platform/build-env:rockylinux" + BUILD_IMAGE_AARCH64_ROCKY9: "git.mesalab.cn:7443/mesa_platform/build-env:rocky9-aarch64" stages: - build ############################################################################### -# compile use image: build-env:master +# build on x86_64 Rocky8 ############################################################################### -# .build_by_travis_for_centos7: -# image: $BUILD_IMAGE_CENTOS7 -# before_script: -# - mkdir -p $BUILD_PADDING_PREFIX/$CI_PROJECT_NAMESPACE/ -# - ln -s $CI_PROJECT_DIR $BUILD_PADDING_PREFIX/$CI_PROJECT_PATH -# - cd $BUILD_PADDING_PREFIX/$CI_PROJECT_PATH -# - chmod +x ./ci/travis.sh -# script: -# - yum makecache -# - ./ci/travis.sh -# tags: -# - share - -# branch_build_debug_for_centos7: -# stage: build -# extends: .build_by_travis_for_centos7 -# variables: -# BUILD_TYPE: Debug -# except: -# - /^develop-.*$/i -# - /^release-.*$/i -# - tags - -# branch_build_release_for_centos7: -# stage: build -# variables: -# BUILD_TYPE: RelWithDebInfo -# extends: .build_by_travis_for_centos7 -# except: -# - /^develop-.*$/i -# - /^release-.*$/i -# - tags - -# develop_build_debug_for_centos7: -# stage: build -# extends: .build_by_travis_for_centos7 -# variables: -# TESTING_VERSION_BUILD: 1 -# UPLOAD_SYMBOL_FILES: 1 -# BUILD_TYPE: Debug -# # ASAN_OPTION: ADDRESS -# PACKAGE: 1 -# PULP3_REPO_NAME: tsg-testing-x86_64.el7 -# PULP3_DIST_NAME: tsg-testing-x86_64.el7 -# artifacts: -# name: "shaping_engine-develop-$CI_COMMIT_REF_NAME-debug" -# paths: -# - build/*.rpm -# only: -# - /^develop-.*$/i -# - /^release-.*$/i - -# develop_build_release_for_centos7: -# stage: build -# extends: .build_by_travis_for_centos7 -# variables: -# TESTING_VERSION_BUILD: 1 -# UPLOAD_SYMBOL_FILES: 1 -# # ASAN_OPTION: ADDRESS -# BUILD_TYPE: RelWithDebInfo -# PACKAGE: 1 -# PULP3_REPO_NAME: tsg-testing-x86_64.el7 -# PULP3_DIST_NAME: tsg-testing-x86_64.el7 -# artifacts: -# name: "shaping_engine-develop-$CI_COMMIT_REF_NAME-release" -# paths: -# - build/*.rpm -# only: -# - /^develop-.*$/i -# - /^release-.*$/i - -# release_build_debug_for_centos7: -# stage: build -# variables: -# UPLOAD_SYMBOL_FILES: 1 -# BUILD_TYPE: Debug -# PACKAGE: 1 -# PULP3_REPO_NAME: tsg-stable-x86_64.el7 -# PULP3_DIST_NAME: tsg-stable-x86_64.el7 -# extends: .build_by_travis_for_centos7 -# artifacts: -# name: "shaping_engine-install-$CI_COMMIT_REF_NAME-debug" -# paths: -# - build/*.rpm -# only: -# - tags - -# release_build_release_for_centos7: -# stage: build -# variables: -# BUILD_TYPE: RelWithDebInfo -# UPLOAD_SYMBOL_FILES: 1 -# PACKAGE: 1 -# PULP3_REPO_NAME: tsg-stable-x86_64.el7 -# PULP3_DIST_NAME: tsg-stable-x86_64.el7 -# extends: .build_by_travis_for_centos7 -# artifacts: -# name: "shaping_engine-install-$CI_COMMIT_REF_NAME-release" -# paths: -# - build/*.rpm -# only: -# - tags - -############################################################################### -# compile use image: build-env:rockylinux -############################################################################### - -.build_by_travis_for_centos8: - image: $BUILD_IMAGE_CENTOS8 +.build_by_travis_for_x86_64_rocky8: + image: $BUILD_IMAGE_X86_64_ROCKY8 before_script: - mkdir -p $BUILD_PADDING_PREFIX/$CI_PROJECT_NAMESPACE/ - ln -s $CI_PROJECT_DIR $BUILD_PADDING_PREFIX/$CI_PROJECT_PATH @@ -131,11 +24,11 @@ stages: - yum makecache - ./ci/travis.sh tags: - - share + - tsg-os-builder-el8 -branch_build_debug_for_centos8: +branch_build_debug_for_x86_64_rocky8: stage: build - extends: .build_by_travis_for_centos8 + extends: .build_by_travis_for_x86_64_rocky8 variables: BUILD_TYPE: Debug except: @@ -143,19 +36,19 @@ branch_build_debug_for_centos8: - /^release-.*$/i - tags -branch_build_release_for_centos8: +branch_build_release_for_x86_64_rocky8: stage: build variables: BUILD_TYPE: RelWithDebInfo - extends: .build_by_travis_for_centos8 + extends: .build_by_travis_for_x86_64_rocky8 except: - /^develop-.*$/i - /^release-.*$/i - tags -develop_build_debug_for_centos8: +develop_build_debug_for_x86_64_rocky8: stage: build - extends: .build_by_travis_for_centos8 + extends: .build_by_travis_for_x86_64_rocky8 variables: TESTING_VERSION_BUILD: 1 UPLOAD_SYMBOL_FILES: 1 @@ -172,9 +65,9 @@ develop_build_debug_for_centos8: - /^develop-.*$/i - /^release-.*$/i -develop_build_release_for_centos8: +develop_build_release_for_x86_64_rocky8: stage: build - extends: .build_by_travis_for_centos8 + extends: .build_by_travis_for_x86_64_rocky8 variables: TESTING_VERSION_BUILD: 1 UPLOAD_SYMBOL_FILES: 1 @@ -191,7 +84,7 @@ develop_build_release_for_centos8: - /^develop-.*$/i - /^release-.*$/i -release_build_debug_for_centos8: +release_build_debug_for_x86_64_rocky8: stage: build variables: UPLOAD_SYMBOL_FILES: 1 @@ -199,7 +92,7 @@ release_build_debug_for_centos8: PACKAGE: 1 PULP3_REPO_NAME: tsg-stable-x86_64.el8 PULP3_DIST_NAME: tsg-stable-x86_64.el8 - extends: .build_by_travis_for_centos8 + extends: .build_by_travis_for_x86_64_rocky8 artifacts: name: "shaping_engine-install-$CI_COMMIT_REF_NAME-debug" paths: @@ -207,7 +100,7 @@ release_build_debug_for_centos8: only: - tags -release_build_release_for_centos8: +release_build_release_for_x86_64_rocky8: stage: build variables: BUILD_TYPE: RelWithDebInfo @@ -215,7 +108,114 @@ release_build_release_for_centos8: PACKAGE: 1 PULP3_REPO_NAME: tsg-stable-x86_64.el8 PULP3_DIST_NAME: tsg-stable-x86_64.el8 - extends: .build_by_travis_for_centos8 + extends: .build_by_travis_for_x86_64_rocky8 + artifacts: + name: "shaping_engine-install-$CI_COMMIT_REF_NAME-release" + paths: + - build/*.rpm + only: + - tags + +############################################################################### +# build on aarch64 Rocky9 +############################################################################### + +.build_by_travis_for_aarch64_rocky9: + image: $BUILD_IMAGE_AARCH64_ROCKY9 + before_script: + - mkdir -p $BUILD_PADDING_PREFIX/$CI_PROJECT_NAMESPACE/ + - ln -s $CI_PROJECT_DIR $BUILD_PADDING_PREFIX/$CI_PROJECT_PATH + - cd $BUILD_PADDING_PREFIX/$CI_PROJECT_PATH + - chmod +x ./ci/travis.sh + script: + - yum makecache + - ./ci/travis.sh + tags: + - tsg-os-builder-aarch64 + +branch_build_debug_for_aarch64_rocky9: + stage: build + extends: .build_by_travis_for_aarch64_rocky9 + variables: + BUILD_TYPE: Debug + except: + - /^develop-.*$/i + - /^release-.*$/i + - tags + +branch_build_release_for_aarch64_rocky9: + stage: build + variables: + BUILD_TYPE: RelWithDebInfo + extends: .build_by_travis_for_aarch64_rocky9 + except: + - /^develop-.*$/i + - /^release-.*$/i + - tags + +develop_build_debug_for_aarch64_rocky9: + stage: build + extends: .build_by_travis_for_aarch64_rocky9 + variables: + TESTING_VERSION_BUILD: 1 + UPLOAD_SYMBOL_FILES: 1 + BUILD_TYPE: Debug +# ASAN_OPTION: ADDRESS + PACKAGE: 1 + PULP3_REPO_NAME: tsg-testing-aarch64.el9 + PULP3_DIST_NAME: tsg-testing-aarch64.el9 + artifacts: + name: "shaping_engine-develop-$CI_COMMIT_REF_NAME-debug" + paths: + - build/*.rpm + only: + - /^develop-.*$/i + - /^release-.*$/i + +develop_build_release_for_aarch64_rocky9: + stage: build + extends: .build_by_travis_for_aarch64_rocky9 + variables: + TESTING_VERSION_BUILD: 1 + UPLOAD_SYMBOL_FILES: 1 +# ASAN_OPTION: ADDRESS + BUILD_TYPE: RelWithDebInfo + PACKAGE: 1 + PULP3_REPO_NAME: tsg-testing-aarch64.el9 + PULP3_DIST_NAME: tsg-testing-aarch64.el9 + artifacts: + name: "shaping_engine-develop-$CI_COMMIT_REF_NAME-release" + paths: + - build/*.rpm + only: + - /^develop-.*$/i + - /^release-.*$/i + +release_build_debug_for_aarch64_rocky9: + stage: build + variables: + UPLOAD_SYMBOL_FILES: 1 + BUILD_TYPE: Debug + PACKAGE: 1 + PULP3_REPO_NAME: tsg-stable-aarch64.el9 + PULP3_DIST_NAME: tsg-stable-aarch64.el9 + extends: .build_by_travis_for_aarch64_rocky9 + artifacts: + name: "shaping_engine-install-$CI_COMMIT_REF_NAME-debug" + paths: + - build/*.rpm + only: + - tags + +release_build_release_for_aarch64_rocky9: + stage: build + variables: + BUILD_TYPE: RelWithDebInfo + UPLOAD_SYMBOL_FILES: 1 + PACKAGE: 1 + PULP3_REPO_NAME: tsg-stable-aarch64.el9 + PULP3_DIST_NAME: tsg-stable-aarch64.el9 + extends: .build_by_travis_for_aarch64_rocky9 artifacts: name: "shaping_engine-install-$CI_COMMIT_REF_NAME-release" paths: diff --git a/CMakeLists.txt b/CMakeLists.txt index 684e108..e1f2b45 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -67,8 +67,14 @@ add_library(MESA_prof_load SHARED IMPORTED GLOBAL) set_property(TARGET MESA_prof_load PROPERTY IMPORTED_LOCATION ${MESA_FRAMEWORK_LIB_DIR}/libMESA_prof_load.so) set_property(TARGET MESA_prof_load PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${MESA_FRAMEWORK_INCLUDE_DIR}) -set(MRZCPD_LIB_DIR /opt/tsg/mrzcpd/lib) -set(MRZCPD_INCLUDE_DIR /opt/tsg/mrzcpd/include) +if (CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64") + set(MRZCPD_LIB_DIR /opt/tsg/mrzcpd/corei7/lib) + set(MRZCPD_INCLUDE_DIR /opt/tsg/mrzcpd/corei7/include) +elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64") + set(MRZCPD_LIB_DIR /opt/tsg/mrzcpd/aarch64/lib) + set(MRZCPD_INCLUDE_DIR /opt/tsg/mrzcpd/aarch64/include) +endif() + add_library(mrzcpd SHARED IMPORTED GLOBAL) set_property(TARGET mrzcpd PROPERTY IMPORTED_LOCATION ${MRZCPD_LIB_DIR}/libmarsio.so) diff --git a/ci/travis.sh b/ci/travis.sh index 413f024..af97765 100644 --- a/ci/travis.sh +++ b/ci/travis.sh @@ -35,9 +35,7 @@ env | sort # Install dependency from YUM yum install -y libasan yum install -y systemd-devel -yum install -y tsg_master-devel yum install -y framework_env -yum install -y mrzcpd-corei7 yum install -y libfieldstat4-devel yum install -y libmaatframe-devel yum install -y libswarmkv-devel @@ -50,6 +48,12 @@ yum install -y libbreakpad_mini-devel yum install -y msgpack-devel yum install -y librdkafka-devel yum install -y libuuid-devel +if [[ `arch` =~ 'x86_64' ]];then + yum install -y mrzcpd-corei7 +elif [[ `arch` =~ 'aarch64' ]];then + yum install -y mrzcpd +fi + source /etc/profile.d/framework.sh source /etc/profile.d/mrzcpd.sh diff --git a/common/test/gtest_libavl.cpp b/common/test/gtest_libavl.cpp index 818a823..a83ff10 100644 --- a/common/test/gtest_libavl.cpp +++ b/common/test/gtest_libavl.cpp @@ -5,15 +5,40 @@ extern "C" { #include <stdlib.h> #include <string.h> #include <stdio.h> -#include <assert.h> #include <unistd.h> #include <gtest/gtest.h> -#include <x86intrin.h> #define TEST_NUM_COUNT 10000 #define MAX_TREE_NODE_NUM 10000 +#if defined(__x86_64__) || defined(_M_X64) || defined(__i386) || defined(_M_IX86) +#include <x86intrin.h> +#elif defined(__aarch64__) +#include <arm_neon.h> +#elif defined(__arm__) +#include <arm_neon.h> +#else +#error "Unsupported architecture" +#endif + +uint64_t get_cycles() { +#if defined(__x86_64__) || defined(_M_X64) || defined(__i386) || defined(_M_IX86) + return __rdtsc(); +#elif defined(__aarch64__) + uint64_t cntvct; + asm volatile("mrs %0, cntvct_el0" : "=r"(cntvct)); + return cntvct; +#elif defined(__arm__) + uint32_t cntvct; + asm volatile("mrc p15, 0, %0, c9, c13, 0" : "=r"(cntvct)); + return cntvct; +#else +#error "Unsupported architecture" +#endif +} + + static int cmp_long(const void *p1, const void *p2) { @@ -35,7 +60,7 @@ TEST(LibavlTest, EnqueueDequeueInOrder) tree = avl_tree_init(MAX_TREE_NODE_NUM); for (i = 0; i < TEST_NUM_COUNT; i++) { - time_array[i] = _rdtsc(); + time_array[i] = get_cycles(); pnode = avl_tree_node_new(time_array[i], NULL, NULL); EXPECT_TRUE(NULL != pnode); @@ -66,7 +91,7 @@ TEST(LibavlTest, EnqueueDequeueRandom) tree = avl_tree_init(MAX_TREE_NODE_NUM); for (i = 0; i < TEST_NUM_COUNT; i++) { - time_array[i] = _rdtsc(); + time_array[i] = get_cycles(); pnode = avl_tree_node_new(time_array[i], NULL, NULL); EXPECT_TRUE(NULL != pnode); @@ -98,13 +123,13 @@ TEST(LibavlTest, ExceedMaxNumLimit) tree = avl_tree_init(MAX_TREE_NODE_NUM); for (i = 0; i < MAX_TREE_NODE_NUM; i++) { - pnode = avl_tree_node_new(_rdtsc(), NULL, NULL); + pnode = avl_tree_node_new(get_cycles(), NULL, NULL); EXPECT_TRUE(NULL != pnode); EXPECT_TRUE(0 == avl_tree_node_insert(tree, pnode)); } - pnode = avl_tree_node_new(_rdtsc(), NULL, NULL); + pnode = avl_tree_node_new(get_cycles(), NULL, NULL); EXPECT_TRUE(-1 == avl_tree_node_insert(tree, pnode)); avl_tree_node_free(pnode); @@ -120,7 +145,7 @@ TEST(LibavlTest, GetNextInOrder) tree = avl_tree_init(MAX_TREE_NODE_NUM); for (i = 0; i < TEST_NUM_COUNT; i++) { - time_array[i] = _rdtsc(); + time_array[i] = get_cycles(); pnode = avl_tree_node_new(time_array[i], NULL, NULL); EXPECT_TRUE(NULL != pnode); |
