From 08b963a7afc1e87b4be2a6d2839a56ebb23833e3 Mon Sep 17 00:00:00 2001 From: Maksim Levental Date: Wed, 21 Aug 2024 19:56:01 -0500 Subject: [PATCH] add E2E Test windows --- .github/workflows/ci-windows.yml | 42 ++++++++++++++++++- cmake/iree_aie_xrt.cmake | 13 +++--- .../AMD-AIE/iree-amd-aie/Target/XCLBinGen.cpp | 20 +++++---- tests/matmul/requirements.txt | 3 +- 4 files changed, 60 insertions(+), 18 deletions(-) diff --git a/.github/workflows/ci-windows.yml b/.github/workflows/ci-windows.yml index bf2ff55da..0bc7377fa 100644 --- a/.github/workflows/ci-windows.yml +++ b/.github/workflows/ci-windows.yml @@ -51,7 +51,7 @@ jobs: - name: Setup Cpp uses: aminya/setup-cpp@v1 with: - compiler: msvc + compiler: llvm vcvarsall: true cmake: true ninja: true @@ -104,3 +104,43 @@ jobs: with: path: ${{ env.CACHE_DIR }} key: windows-build-test-cpp-asserts-v1-${{ github.sha }}-${{ github.event.repository.updated_at }} + + test_windows: + name: E2E Test windows + runs-on: mlevental-win11-pro + needs: build_and_ctest + strategy: + fail-fast: true + env: + XILINXD_LICENSE_FILE: /home/svcnod/Xilinx.lic + steps: + - name: "Checking out repository" # for test scripts + uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # v3.5.0 + with: + submodules: false # not required for testbench + + - name: Download artifacts + uses: actions/download-artifact@v4 + with: + name: windows_x86_64_release_packages + + - name: Extract artifact + run: | + mkdir iree-install + tar -xf iree-dist-windows.tar -C iree-install + bash build_tools/download_peano.sh + + - name: Create venv and install dependencies + run: | + python -m venv .venv + source .venv/Scripts/activate + pip install -r tests/matmul/requirements.txt + + - name : E2E comparison of AIE to llvm-cpu + run: | + source .venv/Scripts/activate + python build_tools/ci/cpu_comparison/run_test.py \ + /c/test_aie_vs_cpu \ + $PWD/iree-install \ + $PWD/llvm-aie \ + /c/Users/maksim/dev_projects/XRT-MCDM/build/WDebug/xilinx/xrt -v diff --git a/cmake/iree_aie_xrt.cmake b/cmake/iree_aie_xrt.cmake index 99539ebf3..2db2521fa 100644 --- a/cmake/iree_aie_xrt.cmake +++ b/cmake/iree_aie_xrt.cmake @@ -185,10 +185,9 @@ foreach(_core_lib IN LISTS _core_libs) $<$:/EHsc /GR>) target_link_libraries(${_core_lib} PUBLIC $) endforeach() -if (WIN32) - install( - TARGETS xrt_coreutil - EXPORT IREEExported-Runtime - COMPONENT IREETools-Runtime - LIBRARY DESTINATION ${CMAKE_INSTALL_BINDIR}) -endif() + +install( + TARGETS xrt_coreutil + EXPORT IREEExported-Runtime + COMPONENT IREETools-Runtime + LIBRARY DESTINATION ${CMAKE_INSTALL_BINDIR}) diff --git a/compiler/plugins/target/AMD-AIE/iree-amd-aie/Target/XCLBinGen.cpp b/compiler/plugins/target/AMD-AIE/iree-amd-aie/Target/XCLBinGen.cpp index 8bd202708..05f961004 100644 --- a/compiler/plugins/target/AMD-AIE/iree-amd-aie/Target/XCLBinGen.cpp +++ b/compiler/plugins/target/AMD-AIE/iree-amd-aie/Target/XCLBinGen.cpp @@ -11,6 +11,8 @@ #include #include #include +// ReSharper disable once CppUnusedIncludeDirective +#include #include #include "AMDAIETargets.h" @@ -317,7 +319,7 @@ LogicalResult runTool( program = program_ + ".exe"; } #else - program = programs_; + program = program_; #endif // _WIN32 if (verbose) { llvm::outs() << "\nRun: "; @@ -351,25 +353,25 @@ LogicalResult runTool( } } - std::string temporaryPathStr = - std::string(temporaryPath.begin(), temporaryPath.size()); - StringRef temporaryPathRef(temporaryPathStr); - llvm::SmallVector envSmallVec; - if (env) envSmallVec.append(env->begin(), env->end()); - SmallVector> redirects; #ifdef _WIN32 redirects = {{}, {}, {}}; + std::optional> envSmallVec = std::nullopt; #else auto tp = std::optional(temporaryPathRef); redirects = {tp, tp, tp}; + std::string temporaryPathStr = + std::string(temporaryPath.begin(), temporaryPath.size()); + StringRef temporaryPathRef(temporaryPathStr); + llvm::SmallVector envSmallVec; + if (env) envSmallVec.append(env->begin(), env->end()); #endif bool executionFailed; std::string errMsg; sys::ProcessStatistics stats; std::optional optStats(stats); - int result = sys::ExecuteAndWait(program, pArgs, std::nullopt, + int result = sys::ExecuteAndWait(program, pArgs, envSmallVec, /* redirects */ redirects, /*SecondsToWait*/ 10, /*MemoryLimit*/ 0, &errMsg, &executionFailed, &optStats); @@ -1091,7 +1093,7 @@ static LogicalResult generateUnifiedObject( } llvm::LLVMContext llvmContext; - auto llvmModule = translateModuleToLLVMIR(moduleOpcopy, llvmContext); + auto llvmModule = translateModuleToLLVMIR(moduleOpCopy, llvmContext); if (!llvmModule) { llvm::errs() << "Failed to translate module to LLVMIR"; return failure(); diff --git a/tests/matmul/requirements.txt b/tests/matmul/requirements.txt index 62116914f..4b216f9a8 100644 --- a/tests/matmul/requirements.txt +++ b/tests/matmul/requirements.txt @@ -1,3 +1,4 @@ PyYAML>=5.4.1 requests>=2.28.0 -enum_tools==0.6.4 \ No newline at end of file +enum_tools==0.6.4 +numpy<2 \ No newline at end of file