diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 93ef72e..adc8c7d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -45,3 +45,49 @@ jobs: - name: Test run: ./scripts/test.sh --cu --clean + + cuda-compile: + name: CUDA Compile + runs-on: ubuntu-26.04 + container: nvidia/cuda:13.3.1-devel-ubuntu26.04 + timeout-minutes: 30 + + steps: + - uses: actions/checkout@v6 + - name: Install build tools + run: | + apt-get update + apt-get install -y g++-15 ninja-build python3-venv + python3 -m venv /opt/xpu-cmake + /opt/xpu-cmake/bin/python -m pip install --disable-pip-version-check --only-binary=:all: cmake==4.4.2 + echo /opt/xpu-cmake/bin >> "$GITHUB_PATH" + - name: Configure + run: | + cmake --version + cmake -S . -B build-cuda -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_LIBDIR=lib \ + -DCMAKE_CXX_COMPILER=g++-15 \ + -DCMAKE_CUDA_HOST_COMPILER=g++-15 \ + -DCMAKE_CUDA_COMPILER=/usr/local/cuda/bin/nvcc \ + -DCMAKE_CUDA_ARCHITECTURES=80 \ + -DCMAKE_CUDA_FLAGS="--Werror all-warnings" \ + -DXPU_ENABLE_CUDA=ON \ + -DXPU_ENABLE_LINALG=ON \ + -DXPU_BUILD_TESTS=ON \ + -DXPU_ARCH_NATIVE=OFF + - name: Build CUDA tests + run: cmake --build build-cuda --parallel 2 + - name: Install XPU + run: cmake --install build-cuda --prefix "$GITHUB_WORKSPACE/xpu-install" + - name: Build installed-target consumer + run: | + cmake -S tests/consumer -B build-consumer -G Ninja \ + -DXPU_INSTALL_PREFIX="$GITHUB_WORKSPACE/xpu-install" \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_COMPILER=g++-15 \ + -DCMAKE_CUDA_HOST_COMPILER=g++-15 \ + -DCMAKE_CUDA_COMPILER=/usr/local/cuda/bin/nvcc \ + -DCMAKE_CUDA_ARCHITECTURES=80 \ + -DCMAKE_CUDA_FLAGS="--Werror all-warnings" + cmake --build build-consumer --parallel 2 diff --git a/tests/consumer/CMakeLists.txt b/tests/consumer/CMakeLists.txt new file mode 100644 index 0000000..f337390 --- /dev/null +++ b/tests/consumer/CMakeLists.txt @@ -0,0 +1,8 @@ +cmake_minimum_required(VERSION 3.25) +project(xpu_consumer LANGUAGES CXX CUDA) + +find_package(CUDAToolkit REQUIRED) +include("${XPU_INSTALL_PREFIX}/lib/cmake/xpu/xpuTargets.cmake") + +add_executable(xpu_consumer main.cu) +target_link_libraries(xpu_consumer PRIVATE xpu::xpu xpu::linalg) diff --git a/tests/consumer/main.cu b/tests/consumer/main.cu new file mode 100644 index 0000000..d71546f --- /dev/null +++ b/tests/consumer/main.cu @@ -0,0 +1,15 @@ +#include + +#ifndef XPU_CUDA + #error "The installed xpu::xpu target must enable the CUDA backend" +#endif + +__global__ void copy_second_array(xpu::soa_view view) { + if (threadIdx.x == 0) { + view[1][0] = view[0][0]; + } +} + +int main() { + return 0; +}