summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author刘畅 <[email protected]>2024-11-27 07:25:57 +0000
committer刘畅 <[email protected]>2024-11-27 07:25:57 +0000
commit8e6b426537e274126b7cf5ea76a22b50ed337542 (patch)
treed2ae2a688abc66a50f7d2ca836caff59ef557697
parent2e73009c3cfd52ef1962dd338c02b323dabe2943 (diff)
parent2f6c16c367cd7e7705abcc7dfb1b08dbfe8a74c5 (diff)
Merge branch 'feature-support-aarch64' into 'rel'HEADv3.2.3rel
Feature support aarch64 See merge request tango/shaping-engine!106
-rw-r--r--.gitlab-ci.yml250
-rw-r--r--CMakeLists.txt10
-rw-r--r--ci/travis.sh8
-rw-r--r--common/test/gtest_libavl.cpp39
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);