| // This file is part of Eigen, a lightweight C++ template library | |
| // for linear algebra. | |
| // | |
| // Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com> | |
| // Copyright (C) 2018 Deven Desai <deven.desai.amd@gmail.com> | |
| // | |
| // This Source Code Form is subject to the terms of the Mozilla | |
| // Public License v. 2.0. If a copy of the MPL was not distributed | |
| // with this file, You can obtain one at http://mozilla.org/MPL/2.0/. | |
| #if defined(EIGEN_USE_GPU) && !defined(EIGEN_CXX11_TENSOR_GPU_HIP_CUDA_DEFINES_H) | |
| #define EIGEN_CXX11_TENSOR_GPU_HIP_CUDA_DEFINES_H | |
| // Note that we are using EIGEN_USE_HIP here instead of EIGEN_HIPCC...this is by design | |
| // There is code in the Tensorflow codebase that will define EIGEN_USE_GPU, but | |
| // for some reason gets sent to the gcc/host compiler instead of the gpu/nvcc/hipcc compiler | |
| // When compiling such files, gcc will end up trying to pick up the CUDA headers by | |
| // default (see the code within "unsupported/Eigen/CXX11/Tensor" that is guarded by EIGEN_USE_GPU) | |
| // This will obviously not work when trying to compile tensorflow on a system with no CUDA | |
| // To work around this issue for HIP systems (and leave the default behaviour intact), the | |
| // HIP tensorflow build defines EIGEN_USE_HIP when compiling all source files, and | |
| // "unsupported/Eigen/CXX11/Tensor" has been updated to use HIP header when EIGEN_USE_HIP is | |
| // defined. In continuation of that requirement, the guard here needs to be EIGEN_USE_HIP as well | |
| #if defined(EIGEN_USE_HIP) | |
| #define gpuStream_t hipStream_t | |
| #define gpuDeviceProp_t hipDeviceProp_t | |
| #define gpuError_t hipError_t | |
| #define gpuSuccess hipSuccess | |
| #define gpuErrorNotReady hipErrorNotReady | |
| #define gpuGetDeviceCount hipGetDeviceCount | |
| #define gpuGetLastError hipGetLastError | |
| #define gpuPeekAtLastError hipPeekAtLastError | |
| #define gpuGetErrorName hipGetErrorName | |
| #define gpuGetErrorString hipGetErrorString | |
| #define gpuGetDeviceProperties hipGetDeviceProperties | |
| #define gpuStreamDefault hipStreamDefault | |
| #define gpuGetDevice hipGetDevice | |
| #define gpuSetDevice hipSetDevice | |
| #define gpuMalloc hipMalloc | |
| #define gpuFree hipFree | |
| #define gpuMemsetAsync hipMemsetAsync | |
| #define gpuMemset2DAsync hipMemset2DAsync | |
| #define gpuMemcpyAsync hipMemcpyAsync | |
| #define gpuMemcpyDeviceToDevice hipMemcpyDeviceToDevice | |
| #define gpuMemcpyDeviceToHost hipMemcpyDeviceToHost | |
| #define gpuMemcpyHostToDevice hipMemcpyHostToDevice | |
| #define gpuStreamQuery hipStreamQuery | |
| #define gpuSharedMemConfig hipSharedMemConfig | |
| #define gpuDeviceSetSharedMemConfig hipDeviceSetSharedMemConfig | |
| #define gpuStreamSynchronize hipStreamSynchronize | |
| #define gpuDeviceSynchronize hipDeviceSynchronize | |
| #define gpuMemcpy hipMemcpy | |
| #else | |
| #define gpuStream_t cudaStream_t | |
| #define gpuDeviceProp_t cudaDeviceProp | |
| #define gpuError_t cudaError_t | |
| #define gpuSuccess cudaSuccess | |
| #define gpuErrorNotReady cudaErrorNotReady | |
| #define gpuGetDeviceCount cudaGetDeviceCount | |
| #define gpuGetLastError cudaGetLastError | |
| #define gpuPeekAtLastError cudaPeekAtLastError | |
| #define gpuGetErrorName cudaGetErrorName | |
| #define gpuGetErrorString cudaGetErrorString | |
| #define gpuGetDeviceProperties cudaGetDeviceProperties | |
| #define gpuStreamDefault cudaStreamDefault | |
| #define gpuGetDevice cudaGetDevice | |
| #define gpuSetDevice cudaSetDevice | |
| #define gpuMalloc cudaMalloc | |
| #define gpuFree cudaFree | |
| #define gpuMemsetAsync cudaMemsetAsync | |
| #define gpuMemset2DAsync cudaMemset2DAsync | |
| #define gpuMemcpyAsync cudaMemcpyAsync | |
| #define gpuMemcpyDeviceToDevice cudaMemcpyDeviceToDevice | |
| #define gpuMemcpyDeviceToHost cudaMemcpyDeviceToHost | |
| #define gpuMemcpyHostToDevice cudaMemcpyHostToDevice | |
| #define gpuStreamQuery cudaStreamQuery | |
| #define gpuSharedMemConfig cudaSharedMemConfig | |
| #define gpuDeviceSetSharedMemConfig cudaDeviceSetSharedMemConfig | |
| #define gpuStreamSynchronize cudaStreamSynchronize | |
| #define gpuDeviceSynchronize cudaDeviceSynchronize | |
| #define gpuMemcpy cudaMemcpy | |
| #endif | |
| // gpu_assert can be overridden | |
| #ifndef gpu_assert | |
| #if defined(EIGEN_HIP_DEVICE_COMPILE) | |
| // HIPCC do not support the use of assert on the GPU side. | |
| #define gpu_assert(COND) | |
| #else | |
| #define gpu_assert(COND) eigen_assert(COND) | |
| #endif | |
| #endif // gpu_assert | |
| #endif // EIGEN_CXX11_TENSOR_GPU_HIP_CUDA_DEFINES_H |