1 // This file is part of Eigen, a lightweight C++ template library 2 // for linear algebra. 3 // 4 // Copyright (C) 2014 Benoit Steiner <[email protected]> 5 // Copyright (C) 2018 Deven Desai <[email protected]> 6 // 7 // This Source Code Form is subject to the terms of the Mozilla 8 // Public License v. 2.0. If a copy of the MPL was not distributed 9 // with this file, You can obtain one at http://mozilla.org/MPL/2.0/. 10 11 #if defined(EIGEN_USE_GPU) && !defined(EIGEN_CXX11_TENSOR_GPU_HIP_CUDA_DEFINES_H) 12 #define EIGEN_CXX11_TENSOR_GPU_HIP_CUDA_DEFINES_H 13 14 // Note that we are using EIGEN_USE_HIP here instead of EIGEN_HIPCC...this is by design 15 // There is code in the Tensorflow codebase that will define EIGEN_USE_GPU, but 16 // for some reason gets sent to the gcc/host compiler instead of the gpu/nvcc/hipcc compiler 17 // When compiling such files, gcc will end up trying to pick up the CUDA headers by 18 // default (see the code within "unsupported/Eigen/CXX11/Tensor" that is guarded by EIGEN_USE_GPU) 19 // This will obviously not work when trying to compile tensorflow on a system with no CUDA 20 // To work around this issue for HIP systems (and leave the default behaviour intact), the 21 // HIP tensorflow build defines EIGEN_USE_HIP when compiling all source files, and 22 // "unsupported/Eigen/CXX11/Tensor" has been updated to use HIP header when EIGEN_USE_HIP is 23 // defined. In continuation of that requirement, the guard here needs to be EIGEN_USE_HIP as well 24 25 #if defined(EIGEN_USE_HIP) 26 27 #define gpuStream_t hipStream_t 28 #define gpuDeviceProp_t hipDeviceProp_t 29 #define gpuError_t hipError_t 30 #define gpuSuccess hipSuccess 31 #define gpuErrorNotReady hipErrorNotReady 32 #define gpuGetDeviceCount hipGetDeviceCount 33 #define gpuGetLastError hipGetLastError 34 #define gpuPeekAtLastError hipPeekAtLastError 35 #define gpuGetErrorName hipGetErrorName 36 #define gpuGetErrorString hipGetErrorString 37 #define gpuGetDeviceProperties hipGetDeviceProperties 38 #define gpuStreamDefault hipStreamDefault 39 #define gpuGetDevice hipGetDevice 40 #define gpuSetDevice hipSetDevice 41 #define gpuMalloc hipMalloc 42 #define gpuFree hipFree 43 #define gpuMemsetAsync hipMemsetAsync 44 #define gpuMemcpyAsync hipMemcpyAsync 45 #define gpuMemcpyDeviceToDevice hipMemcpyDeviceToDevice 46 #define gpuMemcpyDeviceToHost hipMemcpyDeviceToHost 47 #define gpuMemcpyHostToDevice hipMemcpyHostToDevice 48 #define gpuStreamQuery hipStreamQuery 49 #define gpuSharedMemConfig hipSharedMemConfig 50 #define gpuDeviceSetSharedMemConfig hipDeviceSetSharedMemConfig 51 #define gpuStreamSynchronize hipStreamSynchronize 52 #define gpuDeviceSynchronize hipDeviceSynchronize 53 #define gpuMemcpy hipMemcpy 54 55 #else 56 57 #define gpuStream_t cudaStream_t 58 #define gpuDeviceProp_t cudaDeviceProp 59 #define gpuError_t cudaError_t 60 #define gpuSuccess cudaSuccess 61 #define gpuErrorNotReady cudaErrorNotReady 62 #define gpuGetDeviceCount cudaGetDeviceCount 63 #define gpuGetLastError cudaGetLastError 64 #define gpuPeekAtLastError cudaPeekAtLastError 65 #define gpuGetErrorName cudaGetErrorName 66 #define gpuGetErrorString cudaGetErrorString 67 #define gpuGetDeviceProperties cudaGetDeviceProperties 68 #define gpuStreamDefault cudaStreamDefault 69 #define gpuGetDevice cudaGetDevice 70 #define gpuSetDevice cudaSetDevice 71 #define gpuMalloc cudaMalloc 72 #define gpuFree cudaFree 73 #define gpuMemsetAsync cudaMemsetAsync 74 #define gpuMemcpyAsync cudaMemcpyAsync 75 #define gpuMemcpyDeviceToDevice cudaMemcpyDeviceToDevice 76 #define gpuMemcpyDeviceToHost cudaMemcpyDeviceToHost 77 #define gpuMemcpyHostToDevice cudaMemcpyHostToDevice 78 #define gpuStreamQuery cudaStreamQuery 79 #define gpuSharedMemConfig cudaSharedMemConfig 80 #define gpuDeviceSetSharedMemConfig cudaDeviceSetSharedMemConfig 81 #define gpuStreamSynchronize cudaStreamSynchronize 82 #define gpuDeviceSynchronize cudaDeviceSynchronize 83 #define gpuMemcpy cudaMemcpy 84 85 #endif 86 87 // gpu_assert can be overridden 88 #ifndef gpu_assert 89 90 #if defined(EIGEN_HIP_DEVICE_COMPILE) 91 // HIPCC do not support the use of assert on the GPU side. 92 #define gpu_assert(COND) 93 #else 94 #define gpu_assert(COND) assert(COND) 95 #endif 96 97 #endif // gpu_assert 98 99 #endif // EIGEN_CXX11_TENSOR_GPU_HIP_CUDA_DEFINES_H 100