mirror of
https://github.com/microsoft/vcpkg.git
synced 2024-12-30 08:48:01 +08:00
e59e5a417c
* [eigen3] Fix eigen3 and cuda compatibility issue * forgot to apply patch * Update ports/eigen3/portfile.cmake * Update ports/eigen3/portfile.cmake
31 lines
1.1 KiB
Diff
31 lines
1.1 KiB
Diff
diff --git a/Eigen/src/Core/arch/CUDA/Half.h b/Eigen/src/Core/arch/CUDA/Half.h
|
|
index 755e620..85e445b 100644
|
|
--- a/Eigen/src/Core/arch/CUDA/Half.h
|
|
+++ b/Eigen/src/Core/arch/CUDA/Half.h
|
|
@@ -209,7 +209,11 @@ namespace half_impl {
|
|
// conversion steps back and forth.
|
|
|
|
EIGEN_STRONG_INLINE __device__ half operator + (const half& a, const half& b) {
|
|
+#if defined(EIGEN_CUDACC_VER) && EIGEN_CUDACC_VER >= 90000
|
|
+ return __hadd(::__half(a), ::__half(b));
|
|
+#else
|
|
return __hadd(a, b);
|
|
+#endif
|
|
}
|
|
EIGEN_STRONG_INLINE __device__ half operator * (const half& a, const half& b) {
|
|
return __hmul(a, b);
|
|
@@ -218,9 +222,13 @@ EIGEN_STRONG_INLINE __device__ half operator - (const half& a, const half& b) {
|
|
return __hsub(a, b);
|
|
}
|
|
EIGEN_STRONG_INLINE __device__ half operator / (const half& a, const half& b) {
|
|
+#if defined(EIGEN_CUDACC_VER) && EIGEN_CUDACC_VER >= 90000
|
|
+ return __hdiv(a, b);
|
|
+#else
|
|
float num = __half2float(a);
|
|
float denom = __half2float(b);
|
|
return __float2half(num / denom);
|
|
+#endif
|
|
}
|
|
EIGEN_STRONG_INLINE __device__ half operator - (const half& a) {
|
|
return __hneg(a);
|