Shamrock 2025.10.0
Astrophysical Code
Loading...
Searching...
No Matches
base_select.hpp
Go to the documentation of this file.
1// -------------------------------------------------------//
2//
3// SHAMROCK code for hydrodynamics
4// Copyright (c) 2021-2026 Timothée David--Cléris <tim.shamrock@proton.me>
5// SPDX-License-Identifier: CeCILL Free Software License Agreement v2.1
6// Shamrock is licensed under the CeCILL 2.1 License, see LICENSE for more information
7//
8// -------------------------------------------------------//
9
10#pragma once
11
18#include <shambackends/sycl.hpp>
19
20#if defined(__ACPP__)
21
22 #ifndef ACPP_LIBKERNEL_IS_DEVICE_PASS_SSCP
23 #define ACPP_LIBKERNEL_IS_DEVICE_PASS_SSCP 0
24 #endif
25
26 #ifndef ACPP_LIBKERNEL_IS_DEVICE_PASS_HOST
27 #define ACPP_LIBKERNEL_IS_DEVICE_PASS_HOST 0
28 #endif
29
30 #if defined(__SYCL_DEVICE_ONLY__) && defined(__NVPTX__)
31 #define _IS_ACPP_SMCP_CUDA
32 #elif defined(__SYCL_DEVICE_ONLY__) && defined(__AMDGCN__)
33 #define _IS_ACPP_SMCP_HIP
34 #if __AMDGCN_WAVEFRONT_SIZE == 64
35 #define _IS_ACPP_SMCP_HIP_WAVEFRONT64
36 #elif __AMDGCN_WAVEFRONT_SIZE == 32
37 #define _IS_ACPP_SMCP_HIP_WAVEFRONT32
38 #endif
39 #elif defined(__SYCL_DEVICE_ONLY__) && (defined(__SPIR__) || defined(__SPIRV__))
40 #define _IS_ACPP_SMCP_INTEL_SPIRV
41 #elif ACPP_LIBKERNEL_IS_DEVICE_PASS_SSCP
42 #define _IS_ACPP_SSCP
43 #elif ACPP_LIBKERNEL_IS_DEVICE_PASS_HOST && !defined(DOXYGEN)
44 #define _IS_ACPP_SMCP_HOST
45 #endif
46
47#endif
48
49#if defined(SYCL_IMPLEMENTATION_ONEAPI) && defined(__SYCL_DEVICE_ONLY__) && defined(__NVPTX__)
50 #define _IS_ONEAPI_SMCP_CUDA
51#elif defined(SYCL_IMPLEMENTATION_ONEAPI) && defined(__SYCL_DEVICE_ONLY__) && defined(__AMDGCN__)
52 #define _IS_ONEAPI_SMCP_HIP
53#elif defined(SYCL_IMPLEMENTATION_ONEAPI) && defined(__SYCL_DEVICE_ONLY__) \
54 && (defined(__SPIR__) || defined(__SPIRV__))
55 #define _IS_ONEAPI_SMCP_INTEL_SPIRV
56#endif
57
58#if defined(__ACPP__)
59 #define DEVICE_ATTRIBUTE_ON_ACPP __device__
60#else
61 #define DEVICE_ATTRIBUTE_ON_ACPP
62#endif