Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
93 commits
Select commit Hold shift + click to select a range
8c627c0
port weights to SYCL
abagusetty Sep 8, 2020
f868206
SYCL 2020, barrier() -> group_barrier()
abagusetty Sep 8, 2020
811d4e4
port SYCL extensions
abagusetty Sep 8, 2020
9400fc0
port zmat functions
abagusetty Sep 8, 2020
17eec14
port pack_density functions
abagusetty Sep 8, 2020
90bd17a
port inc_potential
abagusetty Sep 8, 2020
ca24c84
port eval_denvars
abagusetty Sep 9, 2020
53e37fb
port collocation functions
abagusetty Sep 9, 2020
d395e02
mkl extensions
abagusetty Sep 9, 2020
419c6b6
change namespace from cl::sycl:: to sycl:: to comply with SYCL 2020
abagusetty Sep 9, 2020
1fc88bf
pushback SYCL-2020 for now and revert to SYCL 1.2
abagusetty Sep 10, 2020
204e00b
add GAUXC_SYCL_ERROR macro for SYCL error handling
abagusetty Sep 10, 2020
637031a
SYCL utils
abagusetty Sep 11, 2020
f611ff3
minor house cleaning, xc_sycl_utils, xc_sycl_data
abagusetty Sep 11, 2020
fbd63ad
WIP for batched dgemm using oneMKL
abagusetty Sep 12, 2020
9ff2412
wrap up sycl onemkl gemm and syr2k
abagusetty Sep 12, 2020
210b962
SYCL tests
abagusetty Sep 13, 2020
fb6720a
WIP SYCL build
abagusetty Sep 14, 2020
2e3dfec
build complete with addressing some warnings
abagusetty Sep 14, 2020
1115587
Merge branch 'master' into sycl_integrators
wavefunction91 Sep 21, 2020
26ede13
Added SYCL propagation / check against ExchCXX installation + build
wavefunction91 Sep 21, 2020
b86b623
Got SYCL build to complete
wavefunction91 Sep 21, 2020
3483e9a
SYCL impl now compilable and linkable
wavefunction91 Sep 21, 2020
e994305
Hard code SYCL work item for Iris max size
wavefunction91 Sep 21, 2020
b53b5b2
Validated SYCL XC Integrator
wavefunction91 Sep 22, 2020
1c35200
support onemkl::syr2k, minor cleanup
abagusetty Sep 22, 2020
c73e3b5
Merge branch 'master' into sycl_integrators
Sep 23, 2020
910ded1
Pascify pessimizing move
wavefunction91 Sep 23, 2020
899a3e4
Merge branch 'sycl_integrators' of https://github.com/abagusetty/GauX…
wavefunction91 Sep 23, 2020
0662078
cleanup of SYCL kernel launch lambdas
abagusetty Sep 24, 2020
183a9c9
Merge branch 'sycl_integrators' of https://github.com/abagusetty/GauX…
abagusetty Sep 24, 2020
e18a482
fix left over changes
abagusetty Sep 24, 2020
262a92a
Replaced SYR2K with 2x GEMM in SYCL integrator
wavefunction91 Sep 24, 2020
c8c57bc
Merge branch 'master' into sycl_integrators
wavefunction91 Sep 25, 2020
2c63d96
Merge branch 'sycl_integrators' into perf_port/sycl
wavefunction91 Sep 25, 2020
76d8b46
Merge branch 'master' into perf_port/sycl
wavefunction91 Sep 28, 2020
e19a1ae
Merge branch 'master' into perf_port/sycl
wavefunction91 Sep 29, 2020
6f9335d
Merge branch 'master' into perf_port/sycl
wavefunction91 Sep 29, 2020
999a564
[HOST] Added option to disable Host integrator
wavefunction91 Sep 30, 2020
e01e905
Merge branch 'feature/disable_host_integrator' into feature/disable_h…
wavefunction91 Sep 30, 2020
140e3d1
[HOST] Ensure GAUXC_ENABLE_DEVICE is set to FALSE when Device APIs ar…
wavefunction91 Sep 30, 2020
9128455
Merge branch 'feature/disable_host_integrator' into feature/disable_h…
wavefunction91 Sep 30, 2020
d9d0fba
[SYCL] Handle the case when HOST is disabled but we still need oneMKL
wavefunction91 Sep 30, 2020
bedfada
Update SYCL with MPI disable
wavefunction91 Sep 30, 2020
b85d2e6
[SYCL] Missing ");"
wavefunction91 Sep 30, 2020
95a0894
Merge branch 'master' into perf_port/sycl
wavefunction91 Sep 30, 2020
677b5fd
[SYCL] Insulate SYCL code from host code
wavefunction91 Sep 30, 2020
55961e9
[CI] Disable SYCL in CI
wavefunction91 Oct 1, 2020
6fe4d91
[ALL] Disable auto shared lib
wavefunction91 Oct 1, 2020
e64c942
Merge branch 'master' into perf_port/sycl
wavefunction91 Oct 6, 2020
0e6b96d
Revert "fix left over changes"
abagusetty Sep 25, 2020
b3014d2
Revert "cleanup of SYCL kernel launch lambdas"
abagusetty Sep 25, 2020
4bc568a
clean up kernels
abagusetty Sep 29, 2020
da15b80
address PR comments
abagusetty Sep 29, 2020
1cf4f65
SYCL warp info
abagusetty Sep 30, 2020
1062ed8
fix warp info
abagusetty Sep 30, 2020
16530cb
add async_handler property to queue construction
abagusetty Oct 5, 2020
6e8117a
[SYCL] Remove asserts in SYCL code to avoid missing __assert_failed
wavefunction91 Oct 6, 2020
beac2a8
[ALL] Added missing header to pacify CI
wavefunction91 Oct 6, 2020
344500e
[SYCL] Changed memory access to row major, disabled collocation UTs
wavefunction91 Oct 7, 2020
642550b
[SYCL] Check for unique GEMM dims
wavefunction91 Oct 15, 2020
ff775e3
Merge branch 'master' into perf_port/sycl
wavefunction91 Oct 15, 2020
d166a76
[SYCL] Propagated component timers to SYCL impl
wavefunction91 Oct 15, 2020
09c7cdb
Merge branch 'master' into feature/sycl/opt_mem_access
wavefunction91 Oct 15, 2020
b0a40bc
Merge branch 'perf_port/sycl' into feature/sycl/opt_mem_access
wavefunction91 Oct 15, 2020
ad4f36e
Merge branch 'master' into perf_port/sycl
wavefunction91 Oct 15, 2020
7b4118a
[SYCL][UT] Update collocation checks to use API functions
wavefunction91 Oct 15, 2020
5db86c2
Merge branch 'perf_port/sycl' into feature/sycl/opt_mem_access
wavefunction91 Oct 15, 2020
b73988a
[SYCL][UT] Reenable collocation tests for transposed operations
wavefunction91 Oct 15, 2020
cc50531
Merge branch 'master' into perf_port/sycl
wavefunction91 Oct 21, 2020
3abdedb
Merge branch 'perf_port/sycl' into feature/sycl/opt_mem_access
wavefunction91 Oct 21, 2020
a27a51d
fix build issues for oneAPI beta10
abagusetty Oct 16, 2020
c7a528b
turn off blas gemm_batch for SYCL builds
abagusetty Oct 20, 2020
8f131df
Merge branch 'perf_port/sycl' into feature/sycl/opt_mem_access
wavefunction91 Oct 21, 2020
516364c
Merge branch 'master' into perf_port/sycl
wavefunction91 Nov 10, 2020
85ec57a
[SYCL] Misc
wavefunction91 Jan 13, 2021
7eb8872
Merge branch 'master' into merge-master
wavefunction91 Jan 13, 2021
8d99d20
[SYCL] Update SYCL cmake to use new linalg modules, propagate changes…
wavefunction91 Jan 14, 2021
3c3963d
Merge branch 'perf_port/sycl' into feature/sycl/opt_mem_access
wavefunction91 Jan 14, 2021
2db084c
Merge pull request #18 from wavefunction91/feature/sycl/opt_mem_access
wavefunction91 Jan 14, 2021
3a8325f
Merge branch 'perf_port/sycl' into merge-master
wavefunction91 Jan 14, 2021
4834024
Revert "Merge pull request #18 from wavefunction91/feature/sycl/opt_m…
wavefunction91 Jan 14, 2021
6b85931
[SYCL] Fix kernel launch failures for tasking sizes > INT_MAX, closes…
wavefunction91 Jan 14, 2021
8f099da
Fix merge of #18 with SYCL fixes
wavefunction91 Jan 14, 2021
4c1f267
[CMAKE] Bump linalg-cmake-modules
wavefunction91 Jan 14, 2021
e38ab2d
[CI] Fix CI with Fortran compiler
wavefunction91 Jan 14, 2021
d8ab426
Sycl cleanup (#40)
abagusetty Mar 8, 2021
5b86acb
Merge branch 'master' into sycl_oneccl
abagusetty Apr 14, 2021
8159689
Merge branch 'wavefunction91:master' into sycl_oneccl
abagusetty Jan 27, 2023
5be880a
Merge upstream master and add SYCL backend for Intel GPUs
abagusetty Sep 5, 2026
240998e
cleanup attic of SYCL
abagusetty Sep 5, 2026
1043c3d
some minor cleanup
abagusetty Sep 10, 2026
67603a7
cleanup for gauxc-exchcxx deps
abagusetty Sep 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
79 changes: 79 additions & 0 deletions .github/workflows/sycl-cpu-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
name: Build and Test - SYCL CPU

on:
pull_request:
types: [opened, edited, synchronize, labeled]

workflow_dispatch:

env:
GH_ACTIONS_TOOLCHAIN: .github/workflows/toolchains/gh-actions.cmake
ENV_PREFIX_PATH: "/opt/intel/oneapi/mkl/latest"

jobs:
sycl_cpu_build:
name: SYCL CPU Build and Test
if: >
github.event_name == 'workflow_dispatch' ||
(github.event_name == 'pull_request' && github.event.action == 'labeled' && github.event.label.name == 'SYCL') ||
(github.event_name == 'pull_request' && github.event.action != 'labeled' && contains(github.event.pull_request.title, '[SYCL]'))
runs-on: ubuntu-latest
container:
image: intel/oneapi-basekit:2024.2.1-0-devel-ubuntu22.04
timeout-minutes: 60

steps:
- uses: actions/checkout@v4

- name: Install HDF5 development headers
shell: bash
run: |
apt-get update
apt-get install -y libhdf5-dev

- name: Setup Compiler
shell: bash
run: |
echo "set(CMAKE_C_COMPILER icx CACHE STRING \"\" FORCE)" >> ${GITHUB_WORKSPACE}/${GH_ACTIONS_TOOLCHAIN}
echo "set(CMAKE_CXX_COMPILER icpx CACHE STRING \"\" FORCE)" >> ${GITHUB_WORKSPACE}/${GH_ACTIONS_TOOLCHAIN}

- name: Setup Build Type
shell: bash
run: echo "set(CMAKE_BUILD_TYPE Release CACHE BOOL \"\" FORCE)" >>
${GITHUB_WORKSPACE}/${GH_ACTIONS_TOOLCHAIN}

- name: Setup Enable SYCL
shell: bash
run: |
echo "set(GAUXC_ENABLE_SYCL ON CACHE BOOL \"\" FORCE)" >> ${GITHUB_WORKSPACE}/${GH_ACTIONS_TOOLCHAIN}
echo "set(GAUXC_SYCL_TARGET spir64_x86_64 CACHE STRING \"\" FORCE)" >> ${GITHUB_WORKSPACE}/${GH_ACTIONS_TOOLCHAIN}
echo "set(GAUXC_ENABLE_MPI OFF CACHE BOOL \"\" FORCE)" >> ${GITHUB_WORKSPACE}/${GH_ACTIONS_TOOLCHAIN}

- name: Configure CMake
shell: bash
run: cmake -S $GITHUB_WORKSPACE -B ${{runner.workspace}}/build
-DCMAKE_INSTALL_PREFIX=${{runner.workspace}}/install
-DCMAKE_PREFIX_PATH=${ENV_PREFIX_PATH}
-DCMAKE_TOOLCHAIN_FILE=${GITHUB_WORKSPACE}/${GH_ACTIONS_TOOLCHAIN}

- name: Build
shell: bash
timeout-minutes: 35
run: cmake --build ${{runner.workspace}}/build -j2

- name: List SYCL devices
shell: bash
run: sycl-ls || true

# The SYCL kernels run on the OpenCL CPU device here, which is orders of
# magnitude slower than a GPU: the XC integrator sections in particular are
# minutes apiece on a many-core host and far worse on a 2-core runner. Cap
# the step so a hang is reported against the test rather than burning the
# job's whole budget, and give ctest its own per-test timeout so a single
# wedged case cannot stall the rest.
- name: Test
shell: bash
timeout-minutes: 20
env:
ONEAPI_DEVICE_SELECTOR: opencl:cpu
run: ctest --test-dir ${{runner.workspace}}/build --output-on-failure --timeout 900
58 changes: 57 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ option( GAUXC_ENABLE_C "Enable C API" ON )
option( GAUXC_ENABLE_HOST "Enable Host Integrator" ON )
option( GAUXC_ENABLE_CUDA "Enable CUDA Bindings" OFF )
option( GAUXC_ENABLE_HIP "Enable HIP Bindings" OFF )
option( GAUXC_ENABLE_SYCL "Enable SYCL Bindings" OFF )
option( GAUXC_ENABLE_MPI "Enable MPI Bindings" ON )
option( GAUXC_ENABLE_OPENMP "Enable OpenMP Compilation" ON )
option( GAUXC_ENABLE_TESTS "Enable Unit Tests" ON )
Expand All @@ -41,10 +42,25 @@ option( GAUXC_BLAS_PREFER_ILP64 "Prefer ILP64 for host BLAS" OFF )
option( GAUXC_LINK_CUDA_STATIC "Link GauXC with static CUDA libs" OFF )

include(CMakeDependentOption)

# MAGMA has no released SYCL backend: upstream master carries only the CUDA and
# HIP backends, and the SYCL work lives on an unmerged branch. Rather than
# silently dropping the request, fail loudly if the user asked for both.
if( GAUXC_ENABLE_SYCL AND GAUXC_ENABLE_MAGMA )
message( FATAL_ERROR
"GAUXC_ENABLE_MAGMA=ON is not supported with GAUXC_ENABLE_SYCL=ON: MAGMA "
"provides no SYCL backend. Batched linear algebra for the SYCL backend is "
"served by oneMKL instead; configure with -DGAUXC_ENABLE_MAGMA=OFF." )
endif()

cmake_dependent_option( GAUXC_ENABLE_MAGMA
"Enable MAGMA Linear Algebra" ON
"GAUXC_ENABLE_CUDA OR GAUXC_ENABLE_HIP" OFF
)
cmake_dependent_option( GAUXC_ENABLE_ONECCL
"Enable oneCCL Collectives" OFF
"GAUXC_ENABLE_SYCL" OFF
)
cmake_dependent_option( GAUXC_ENABLE_NCCL
"Enable NCCL Collectives" OFF
"GAUXC_ENABLE_CUDA" OFF
Expand All @@ -59,12 +75,14 @@ set( GAUXC_HAS_C FALSE CACHE BOOL "" FORCE )
set( GAUXC_HAS_HOST FALSE CACHE BOOL "" FORCE )
set( GAUXC_HAS_CUDA FALSE CACHE BOOL "" FORCE )
set( GAUXC_HAS_HIP FALSE CACHE BOOL "" FORCE )
set( GAUXC_HAS_SYCL FALSE CACHE BOOL "" FORCE )
set( GAUXC_HAS_MPI FALSE CACHE BOOL "" FORCE )
set( GAUXC_HAS_OPENMP FALSE CACHE BOOL "" FORCE )
set( GAUXC_HAS_GAU2GRID FALSE CACHE STRING "" FORCE )
set( GAUXC_HAS_HDF5 FALSE CACHE BOOL "" FORCE )
set( GAUXC_HAS_MAGMA FALSE CACHE BOOL "" FORCE )
set( GAUXC_HAS_NCCL FALSE CACHE BOOL "" FORCE )
set( GAUXC_HAS_ONECCL FALSE CACHE BOOL "" FORCE )
set( GAUXC_HAS_CUTLASS FALSE CACHE BOOL "" FORCE )
set( GAUXC_BLAS_IS_LP64 FALSE CACHE BOOL "" FORCE )

Expand All @@ -73,12 +91,14 @@ mark_as_advanced( FORCE
GAUXC_HAS_HOST
GAUXC_HAS_CUDA
GAUXC_HAS_HIP
GAUXC_HAS_SYCL
GAUXC_HAS_MPI
GAUXC_HAS_OPENMP
GAUXC_HAS_GAU2GRID
GAUXC_HAS_HDF5
GAUXC_HAS_MAGMA
GAUXC_HAS_NCCL
GAUXC_HAS_ONECCL
GAUXC_HAS_CUTLASS
GAUXC_BLAS_IS_LP64
)
Expand All @@ -104,8 +124,44 @@ if( GAUXC_ENABLE_HIP )
set( GAUXC_HAS_HIP TRUE CACHE BOOL "GauXC has HIP and will build HIP bindings" FORCE )
endif()

if( GAUXC_ENABLE_SYCL )
# SYCL is compiled through the CXX compiler; no separate language to enable
set( GAUXC_HAS_SYCL TRUE CACHE BOOL "GauXC has SYCL and will build SYCL bindings" FORCE )

# e.g. intel_gpu_pvc | spir64_x86_64 | nvidia_gpu_sm_80 | amd_gpu_gfx90a
# Declared here (rather than in gauxc-sycl) so that it is visible to the
# ExchCXX pass-through, which is configured before the gauxc target exists.
#
# Defaults to ahead-of-time for PVC: that is how these builds are deployed,
# and a JIT build pays the whole device-image compile on the first kernel
# launch of every run, which is easily minutes for the collocation and
# ExchCXX images. Set to an empty string explicitly for a JIT build.
set( GAUXC_SYCL_TARGET "intel_gpu_pvc" CACHE STRING
"Alias for -fsycl-targets (see Users Manual); empty for a JIT build" )

# SYCL device code shares the CXX FP model with the host, and ExchCXX's SYCL
# bindings require IEEE semantics for agreement with the reference values
include( CheckCXXCompilerFlag )
check_cxx_compiler_flag( "-fp-model=precise" GAUXC_CXX_HAS_FP_MODEL_PRECISE )
if( GAUXC_CXX_HAS_FP_MODEL_PRECISE )
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fp-model=precise" )
endif()

# Claim SYCL::SYCL before ExchCXX is fetched. ExchCXX ships its own FindSYCL
# which attaches -fsycl as an INTERFACE_COMPILE_OPTION; were that definition
# to win, every GauXC translation unit would run the SYCL frontend, including
# the large host-only sources where it buys nothing. GauXC's own FindSYCL
# keeps the target link-only and stamps -fsycl per source instead.
find_package( SYCL REQUIRED )
endif()

# Device backends are mutually exclusive
if( (GAUXC_HAS_CUDA AND GAUXC_HAS_SYCL) OR (GAUXC_HAS_HIP AND GAUXC_HAS_SYCL) )
message( FATAL_ERROR "SYCL bindings are mutually exclusive with CUDA / HIP" )
endif()

# Decided if we're compiling device bindings
if( GAUXC_HAS_CUDA OR GAUXC_HAS_HIP )
if( GAUXC_HAS_CUDA OR GAUXC_HAS_HIP OR GAUXC_HAS_SYCL )
set( GAUXC_HAS_DEVICE TRUE CACHE BOOL "Enable Device Code" )
else()
set( GAUXC_HAS_DEVICE FALSE CACHE BOOL "Enable Device Code" )
Expand Down
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -202,12 +202,15 @@ target_link_libraries( my_target PUBLIC gauxc::gauxc )
| `GAUXC_ENABLE_HOST` | Enable HOST integrators | `ON` |
| `GAUXC_ENABLE_CUDA` | Enable CUDA integrators | `OFF` |
| `GAUXC_ENABLE_HIP` | Enable HIP integrators | `OFF` |
| `GAUXC_ENABLE_SYCL` | Enable SYCL integrators | `OFF` |
| `GAUXC_ENABLE_MAGMA` | Enable MAGMA for batched BLAS (No effect if no GPU) | `ON` |
| `GAUXC_ENABLE_CUTLASS` | Enable CUTLASS for batched BLAS (No effect if no CUDA) | `OFF` |
| `GAUXC_ENABLE_NCCL` | Enable NCCL bindings for topology aware GPU reductions | `OFF` |
| `GAUXC_ENABLE_ONECCL` | Enable oneCCL bindings for GPU reductions (SYCL only) | `OFF` |
| `GAUXC_ENABLE_MPI` | Enable MPI Bindings | `ON` |
| `GAUXC_ENABLE_OPENMP` | Enable OpenMP Bindings | `ON` |
| `CMAKE_CUDA_ARCHITECTURES` | CUDA architechtures (e.g. 70 for Volta, 80 for Ampere) | -- |
| `GAUXC_SYCL_TARGET` | SYCL AoT target (e.g. `intel_gpu_pvc`); JIT if unset | -- |
| `BLAS_LIBRARIES` | Full BLAS linker. | -- |
| `MAGMA_ROOT_DIR` | Install prefix for MAGMA. | -- |

Expand Down
21 changes: 21 additions & 0 deletions cmake/gauxc-config.cmake.in
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,10 @@ set( GAUXC_HAS_C @GAUXC_HAS_C@ )
set( GAUXC_HAS_HOST @GAUXC_HAS_HOST@ )
set( GAUXC_HAS_CUDA @GAUXC_HAS_CUDA@ )
set( GAUXC_HAS_HIP @GAUXC_HAS_HIP@ )
set( GAUXC_HAS_SYCL @GAUXC_HAS_SYCL@ )
set( GAUXC_HAS_MAGMA @GAUXC_HAS_MAGMA@ )
set( GAUXC_HAS_NCCL @GAUXC_HAS_NCCL@ )
set( GAUXC_HAS_ONECCL @GAUXC_HAS_ONECCL@ )
set( GAUXC_HAS_CUTLASS @GAUXC_HAS_CUTLASS@ )
set( GAUXC_HAS_MPI @GAUXC_HAS_MPI@ )
set( GAUXC_HAS_OPENMP @GAUXC_HAS_OPENMP@ )
Expand Down Expand Up @@ -56,6 +58,25 @@ if( GAUXC_HAS_CUDA )
endif()
endif()

if( GAUXC_HAS_SYCL )
find_dependency( SYCL )
# MKLConfig defaults to ILP64 and keeps separate cache entries for the host
# and SYCL domains; both must match the interface GauXC was built against or
# the duplicate dgemm_ binds to the wrong copy.
if( GAUXC_BLAS_IS_LP64 )
set( _gauxc_mkl_interface intel_lp64 )
else()
set( _gauxc_mkl_interface intel_ilp64 )
endif()
set( MKL_INTERFACE_FULL ${_gauxc_mkl_interface} CACHE STRING "" FORCE )
set( MKL_SYCL_INTERFACE_FULL ${_gauxc_mkl_interface} CACHE STRING "" FORCE )
unset( _gauxc_mkl_interface )
find_dependency( MKL CONFIG )
if( GAUXC_HAS_ONECCL )
find_dependency( oneCCL )
endif()
endif()

if( GAUXC_HAS_MPI )
find_dependency( MPI )
endif()
Expand Down
9 changes: 9 additions & 0 deletions cmake/gauxc-exchcxx.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,13 @@ if( NOT ${ExchCXX_FOUND} )

set( EXCHCXX_ENABLE_CUDA ${GAUXC_HAS_CUDA} CACHE BOOL "" )
set( EXCHCXX_ENABLE_HIP ${GAUXC_HAS_HIP} CACHE BOOL "" )
set( EXCHCXX_ENABLE_SYCL ${GAUXC_HAS_SYCL} CACHE BOOL "" )
set( EXCHCXX_ENABLE_TESTS OFF CACHE BOOL "" )

if( GAUXC_HAS_SYCL AND GAUXC_SYCL_TARGET )
set( EXCHCXX_SYCL_TARGET ${GAUXC_SYCL_TARGET} CACHE STRING "" )
endif()

FetchContent_Declare(
exchcxx
GIT_REPOSITORY ${GAUXC_EXCHCXX_REPOSITORY}
Expand All @@ -30,6 +35,10 @@ else()
message( FATAL_ERROR "GauXC HIP BINDINGS REQUIRE ExchCXX HIP Bindings" )
endif()

if( ${GAUXC_HAS_SYCL} AND NOT ${EXCHCXX_ENABLE_SYCL} )
message( FATAL_ERROR "GauXC SYCL BINDINGS REQUIRE ExchCXX SYCL Bindings" )
endif()

endif()


Loading
Loading