From 54fbafb8bd1a3548c3b8d6e679c43e1400751946 Mon Sep 17 00:00:00 2001 From: max <maksim.levental@gmail.com> Date: Sat, 24 Aug 2024 21:07:06 -0500 Subject: [PATCH] [wip] macos --- .github/workflows/ci-macos.yml | 93 +++++++++++++++++++ build_tools/ci/build_test_cpp.sh | 13 ++- .../plugins/target/AMD-AIE/air/CMakeLists.txt | 1 + iree_compiler_plugin.cmake | 2 +- .../aie_runtime/iree_aie_configure.cc | 16 ++-- 5 files changed, 112 insertions(+), 13 deletions(-) create mode 100644 .github/workflows/ci-macos.yml diff --git a/.github/workflows/ci-macos.yml b/.github/workflows/ci-macos.yml new file mode 100644 index 000000000..f34ece2f4 --- /dev/null +++ b/.github/workflows/ci-macos.yml @@ -0,0 +1,93 @@ +name: CI MacOS + +on: + workflow_call: + workflow_dispatch: + pull_request: + merge_group: + push: + branches: + - main + +concurrency: + # A PR number if a pull request and otherwise the commit hash. This cancels + # queued and in-progress runs for the same PR (presubmit) or commit + # (postsubmit). + group: ci-build-test-cpp-macos-${{ github.event.number || github.sha }} + cancel-in-progress: true + +jobs: + build_and_ctest: + name: Build and Test (${{ matrix.runs-on }}, ASSERTIONS) + runs-on: ${{ matrix.runs-on }} + strategy: + fail-fast: false + matrix: + runs-on: [macos-12, macos-14] + env: + CACHE_DIR: ${{ github.workspace }}/.container-cache + steps: + - name: Set unified TZ + uses: szenius/set-timezone@v2.0 + with: + # this is an arbitrary choice + timezoneLinux: "Asia/Singapore" + timezoneMacos: "Asia/Singapore" + timezoneWindows: "Singapore Standard Time" + + - name: "Checking out repository" + uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # v3.5.0 + with: + submodules: recursive + + - uses: actions/setup-python@v4 + with: + python-version: '3.11' + + - name: Install deps + run: | + brew install ccache ninja + + - name: Sync source deps + run: | + python ./sync_deps.py + + - name: Python deps + run: | + pip install "numpy<2" pyyaml "pybind11[global]==2.10.3" nanobind + + - name: Enable cache + uses: actions/cache/restore@v3 + with: + path: ${{ env.CACHE_DIR }} + # without datetime stamps you'll get collisions for the cache warming runs + # ("Failed to save: Unable to reserve cache with key ..., another job may be creating this cache.") + key: ${{ matrix.runs-on }}-build-test-cpp-asserts-v1-${{ github.sha }}-${{ github.event.repository.updated_at }} + restore-keys: ${{ matrix.runs-on }}-build-test-cpp- + + - name: Build packages + run: | + export cache_dir="${{ env.CACHE_DIR }}" + bash build_tools/ci/build_test_cpp.sh + + - name: Create artifacts + if: ${{ !cancelled() }} + run: | + rm -f iree-install/bin/clang* + rm -f iree-install/bin/llvm-link* + tar cf iree-dist-${{ matrix.runs-on }}.tar -C iree-install . -C ../iree-build tools/testing/e2e/iree-e2e-matmul-test.exe + + - name: Upload artifacts + uses: actions/upload-artifact@v4 + if: ${{ !cancelled() }} + with: + name: ${{ matrix.runs-on }}_release_packages + path: iree-dist-${{ matrix.runs-on }}.tar + if-no-files-found: warn + + - name: Save cache + uses: actions/cache/save@v3 + if: ${{ !cancelled() }} + with: + path: ${{ env.CACHE_DIR }} + key: ${{ matrix.runs-on }}-build-test-cpp-asserts-v1-${{ github.sha }}-${{ github.event.repository.updated_at }} diff --git a/build_tools/ci/build_test_cpp.sh b/build_tools/ci/build_test_cpp.sh index ad6b4e460..cbf9709b8 100644 --- a/build_tools/ci/build_test_cpp.sh +++ b/build_tools/ci/build_test_cpp.sh @@ -56,10 +56,12 @@ echo '{ }' > $iree_dir/CMakeUserPresets.json cd $iree_dir -cmake -S "$iree_dir" -B "$build_dir" \ +CMAKE_ARGS="\ + -S $iree_dir \ + -B $build_dir \ -GNinja \ -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_INSTALL_PREFIX="$install_dir" \ + -DCMAKE_INSTALL_PREFIX=$install_dir \ -DCMAKE_INSTALL_LIBDIR=lib \ -DIREE_ENABLE_ASSERTIONS=ON \ -DIREE_BUILD_SAMPLES=OFF \ @@ -74,8 +76,11 @@ cmake -S "$iree_dir" -B "$build_dir" \ -DIREE_INPUT_STABLEHLO=OFF \ -DIREE_INPUT_TORCH=OFF \ -DCMAKE_OBJECT_PATH_MAX=4096 \ - -DIREE_CMAKE_PLUGIN_PATHS=../iree-amd-aie \ - -DIREE_EXTERNAL_HAL_DRIVERS=xrt + -DIREE_CMAKE_PLUGIN_PATHS=$PWD/../iree-amd-aie" + +if [[ "$OSTYPE" != "darwin"* ]]; then + CMAKE_ARGS="$CMAKE_ARGS -DIREE_EXTERNAL_HAL_DRIVERS=xrt" +fi echo "Building all" echo "------------" diff --git a/compiler/plugins/target/AMD-AIE/air/CMakeLists.txt b/compiler/plugins/target/AMD-AIE/air/CMakeLists.txt index 8d8799d49..764dc66cd 100644 --- a/compiler/plugins/target/AMD-AIE/air/CMakeLists.txt +++ b/compiler/plugins/target/AMD-AIE/air/CMakeLists.txt @@ -164,6 +164,7 @@ iree_cc_library( MLIRTransforms ) +include(iree_aie_utils) replace_string_in_file( ${IREE_MLIR_AIR_SOURCE_DIR}/include/air/Conversion/PassDetail.h "aie/Dialect/AIEX/IR" "aie") diff --git a/iree_compiler_plugin.cmake b/iree_compiler_plugin.cmake index a14b0c094..944829580 100644 --- a/iree_compiler_plugin.cmake +++ b/iree_compiler_plugin.cmake @@ -18,8 +18,8 @@ endif() if(IREE_AMD_AIE_ENABLE_XRT_DRIVER) include(iree_aie_xrt) - include(iree_aie_bootgen) endif() +include(iree_aie_bootgen) add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/compiler/plugins/target/AMD-AIE target/AMD-AIE) add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/tests/samples AMD-AIE/tests/samples) diff --git a/runtime/src/iree-amd-aie/aie_runtime/iree_aie_configure.cc b/runtime/src/iree-amd-aie/aie_runtime/iree_aie_configure.cc index 4aba9c188..44773bfdf 100644 --- a/runtime/src/iree-amd-aie/aie_runtime/iree_aie_configure.cc +++ b/runtime/src/iree-amd-aie/aie_runtime/iree_aie_configure.cc @@ -64,12 +64,12 @@ LogicalResult configureDMABD( if (deviceModel.isShimNOCTile(tileLoc.col, tileLoc.row)) { // TODO(max): revisit these values // write them out like this so they show up with names in debug prints - size_t smid = 0; - size_t burstLen = 16; // (10):BLEN=16 (256Byte) (corresponds to - // 0x800000000 from target) - size_t qOs = 0; - size_t cache = 0; - size_t secure = 0; + uint8_t smid = 0; + uint8_t burstLen = 16; // (10):BLEN=16 (256Byte) (corresponds to + // 0x800000000 from target) + uint8_t qOs = 0; + uint8_t cache = 0; + uint8_t secure = 0; TRY_XAIE_API_LOGICAL_RESULT(XAie_DmaSetAxi, &dmaDesc, smid, burstLen, qOs, cache, secure); } @@ -347,8 +347,8 @@ LogicalResult coreEnable(const AMDAIEDeviceModel &deviceModel, return success(); } -void dmaUpdateBdAddr(const AMDAIEDeviceModel &deviceModel, int col, int row, - size_t addr, size_t bdId) { +void dmaUpdateBdAddr(const AMDAIEDeviceModel &deviceModel, uint8_t col, + uint8_t row, uint8_t addr, uint8_t bdId) { auto tileLoc = XAie_TileLoc(col, row); auto devInst = const_cast<XAie_DevInst *>(&deviceModel.devInst); TRY_XAIE_API_FATAL_ERROR(XAie_DmaUpdateBdAddr, devInst, tileLoc, addr, bdId);