Xilinx / mlir-aie

An MLIR-based toolchain for AMD AI Engine-enabled devices.
Other
297 stars 84 forks source link

test_utils target does not appear to be set correctly #1849

Open hunhoffe opened 1 day ago

hunhoffe commented 1 day ago

I have been trying to do some debugging of tests in test/npu-xrt and I have been running into some troubles.

This is true as of main at 4799ad3f.

I setup my environment like so:

source /opt/xilinx/xrt/setup.sh
source setup.sh
git clone --recurse-submodules https://github.com/Xilinx/mlir-aie.git
cd mlir-aie
source utils/setup_python_packages.sh
./utils/clone-llvm.sh
./utils/build-llvm-local.sh
./utils/build-mlir-aie.sh llvm/build/
source utils/env_setup.sh install/ llvm/install/

I get ready to run tests:

cd build
ninja install

Then I try to run some tests (chosen at random, I see similar errors for all I tried, here are two examples for the purpose of replication):

lit -sv test/npu-xrt/add_blockwrite
lit -sv test/npu-xrt/memtile_repeat

The error I get is:

/usr/bin/ld: cannot find -ltest_utils: No such file or directory

I realized that for some reason, in test/lit.site.cfg.py.in, my config.aieHostTarget was getting set to aarch64 instead of x86_64, so (as a hack) I manually changed

config.aieHostTarget = "@AIE_RUNTIME_TEST_TARGET@"

to

config.aieHostTarget = "x86_64"

Previously, I had another error after this, but after the change to Peano, the tests worked for me after this point!

hunhoffe commented 1 day ago

I noticed a potentially related issue. From 4799ad3, I tried to build from scratch after I updated which vitis version I was using. I ran

./utils/build-mlir-aie.sh llvm/build/

The end of the output of that command is:

ninja: build stopped: subcommand failed.
[618/625] Completed 'xaiengine_aarch64'
FAILED: runtime_lib/test_libTmp/x86_64/src/test_lib_x86_64-stamp/test_lib_x86_64-build /scratch/ehunhoff/mlir-aie/build/runtime_lib/test_libTmp/x86_64/src/test_lib_x86_64-stamp/test_lib_x86_64-build 
cd /scratch/ehunhoff/mlir-aie/build/runtime_lib/x86_64/test_lib/lib && /scratch/ehunhoff/mlir-aie/sandbox/lib/python3.10/site-packages/cmake/data/bin/cmake --build .
ninja: build stopped: subcommand failed.

I tried to instead build/run with quick_setup.sh, e.g.,

source utils/quick_setup.sh 
# quick setup drops you in programming examples, so need to go up a dir
cd .. 
./utils/build-mlir-aie-from-wheels.sh ./my_install/mlir

But I also see errors in the output here. I believe the originating error is here:

FAILED: CMakeFiles/test_lib.dir/test_library.cpp.o 
/usr/bin/c++  -I/proj/xbuilds/2024.2_INT_daily_latest/installs/lin64/Vitis/2024.2/aietools/include/drivers/aiengine -O3 -DNDEBUG -fPIC -MD -MT CMakeFiles/test_lib.dir/test_library.cpp.o -MF CMakeFiles/test_lib.dir/test_library.cpp.o.d -o CMakeFiles/test_lib.dir/test_library.cpp.o -c /scratch/ehunhoff/mlir-aie/runtime_lib/test_lib/test_library.cpp
hunhoffe commented 22 hours ago

Even with changes to the build scripts to make x86 the default (diff below) I still see the same build errors:

diff --git a/utils/build-llvm-local.sh b/utils/build-llvm-local.sh
index 6b914cb4..2df912ac 100755
--- a/utils/build-llvm-local.sh
+++ b/utils/build-llvm-local.sh
@@ -15,12 +15,14 @@
 # <llvm dir>    - optional, default is 'llvm'
 # <build dir>   - optional, default is 'build' (for llvm/build)
 # <install dir> - optional, default is 'install' (for llvm/install)
+# <target>      - optional, default is 'X86'
 #
 ##===----------------------------------------------------------------------===##

 LLVM_DIR=${1:-"llvm"}
 BUILD_DIR=${2:-"build"}
 INSTALL_DIR=${3:-"install"}
+BUILD_TARGET=${4:-"X86"}

 mkdir -p $LLVM_DIR/$BUILD_DIR
 mkdir -p $LLVM_DIR/$INSTALL_DIR
@@ -44,7 +46,7 @@ CMAKE_CONFIGS="\
   -DMLIR_ENABLE_BINDINGS_PYTHON=ON \
   -DCMAKE_INSTALL_PREFIX=../$INSTALL_DIR \
   -DLLVM_ENABLE_PROJECTS=mlir \
-  -DLLVM_TARGETS_TO_BUILD:STRING=X86;ARM;AArch64 \
+  -DLLVM_TARGETS_TO_BUILD:STRING=$BUILD_TARGET \
   -DCMAKE_BUILD_TYPE=Release \
   -DCMAKE_PLATFORM_NO_VERSIONED_SONAME=ON \
   -DCMAKE_VISIBILITY_INLINES_HIDDEN=ON \
diff --git a/utils/build-mlir-aie.sh b/utils/build-mlir-aie.sh
index f395d3ae..e2093cd8 100755
--- a/utils/build-mlir-aie.sh
+++ b/utils/build-mlir-aie.sh
@@ -15,6 +15,7 @@
 #
 # <build dir>    - optional, mlir-aie/build dir name, default is 'build'
 # <install dir>  - optional, mlir-aie/install dir name, default is 'install'
+# <target>       - optional, build target, default is 'x86_64'
 #
 ##===----------------------------------------------------------------------===##

@@ -31,6 +32,7 @@ echo "LLVM BUILD DIR: $LLVM_BUILD_DIR"

 BUILD_DIR=${2:-"build"}
 INSTALL_DIR=${3:-"install"}
+BUILD_TARGET=${4:-"x86_64"}
 LLVM_ENABLE_RTTI=${LLVM_ENABLE_RTTI:OFF}

 mkdir -p $BUILD_DIR
@@ -52,9 +54,9 @@ CMAKE_CONFIGS="\
     -DCMAKE_CXX_VISIBILITY_PRESET=hidden \
     -DLLVM_ENABLE_ASSERTIONS=ON \
     -DLLVM_ENABLE_RTTI=$LLVM_ENABLE_RTTI \
-    -DAIE_RUNTIME_TARGETS=x86_64;aarch64 \
+    -DAIE_RUNTIME_TARGETS=$BUILD_TARGET \
     -DAIE_ENABLE_PYTHON_PASSES=OFF \
-    -DAIE_RUNTIME_TEST_TARGET=aarch64"
+    -DAIE_RUNTIME_TEST_TARGET=$BUILD_TARGET"

 if [ -x "$(command -v lld)" ]; then
   CMAKE_CONFIGS="${CMAKE_CONFIGS} -DLLVM_USE_LINKER=lld"