mirror of
https://gitlab.com/libeigen/eigen.git
synced 2026-04-10 11:34:33 +08:00
Move HIP/CUDA defines to Core.
This commit is contained in:
101
Eigen/src/Core/util/GpuHipCudaDefines.inc
Normal file
101
Eigen/src/Core/util/GpuHipCudaDefines.inc
Normal file
@@ -0,0 +1,101 @@
|
||||
// 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_CORE_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_CORE_GPU_HIP_CUDA_DEFINES_H
|
||||
45
Eigen/src/Core/util/GpuHipCudaUndefines.inc
Normal file
45
Eigen/src/Core/util/GpuHipCudaUndefines.inc
Normal file
@@ -0,0 +1,45 @@
|
||||
// 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_CORE_GPU_HIP_CUDA_DEFINES_H)
|
||||
|
||||
#ifndef EIGEN_PERMANENTLY_ENABLE_GPU_HIP_CUDA_DEFINES
|
||||
|
||||
#undef gpuStream_t
|
||||
#undef gpuDeviceProp_t
|
||||
#undef gpuError_t
|
||||
#undef gpuSuccess
|
||||
#undef gpuErrorNotReady
|
||||
#undef gpuGetDeviceCount
|
||||
#undef gpuGetErrorString
|
||||
#undef gpuGetDeviceProperties
|
||||
#undef gpuStreamDefault
|
||||
#undef gpuGetDevice
|
||||
#undef gpuSetDevice
|
||||
#undef gpuMalloc
|
||||
#undef gpuFree
|
||||
#undef gpuMemsetAsync
|
||||
#undef gpuMemset2DAsync
|
||||
#undef gpuMemcpyAsync
|
||||
#undef gpuMemcpyDeviceToDevice
|
||||
#undef gpuMemcpyDeviceToHost
|
||||
#undef gpuMemcpyHostToDevice
|
||||
#undef gpuStreamQuery
|
||||
#undef gpuSharedMemConfig
|
||||
#undef gpuDeviceSetSharedMemConfig
|
||||
#undef gpuStreamSynchronize
|
||||
#undef gpuDeviceSynchronize
|
||||
#undef gpuMemcpy
|
||||
|
||||
#endif // EIGEN_PERMANENTLY_ENABLE_GPU_HIP_CUDA_DEFINES
|
||||
|
||||
#undef EIGEN_CORE_GPU_HIP_CUDA_DEFINES_H
|
||||
|
||||
#endif // EIGEN_CORE_GPU_HIP_CUDA_DEFINES_H
|
||||
Reference in New Issue
Block a user