diff --git a/Eigen/src/Core/GenericPacketMath.h b/Eigen/src/Core/GenericPacketMath.h index e1e9bfc4bba7d3b06b5e8b7d5a91025612825c57..09efb6745267c2e0f99b1403e4bed7cd7f31fd4c 100644 --- a/Eigen/src/Core/GenericPacketMath.h +++ b/Eigen/src/Core/GenericPacketMath.h @@ -510,7 +510,7 @@ struct pminmax_impl { }; -#ifndef SYCL_DEVICE_ONLY +#if !defined(SYCL_DEVICE_ONLY) && !defined(__NVCOMPILER) #define EIGEN_BINARY_OP_NAN_PROPAGATION(Type, Func) Func #else #define EIGEN_BINARY_OP_NAN_PROPAGATION(Type, Func) \ diff --git a/Eigen/src/Core/products/GeneralBlockPanelKernel.h b/Eigen/src/Core/products/GeneralBlockPanelKernel.h index b1a1277540ce66bb93f1c004e700fcf170a1b529..900daaf1b6d7cdb3d7225809b7b3751a7652647f 100644 --- a/Eigen/src/Core/products/GeneralBlockPanelKernel.h +++ b/Eigen/src/Core/products/GeneralBlockPanelKernel.h @@ -87,8 +87,18 @@ struct CacheSizes { /** \internal */ inline void manage_caching_sizes(Action action, std::ptrdiff_t* l1, std::ptrdiff_t* l2, std::ptrdiff_t* l3) { +#ifdef __NVCOMPILER + if(action==GetAction) + { + // Volta, Turing, or newer + // - the L1 cache is configurable at runtime, with a minimum of 32 KB/SM + // - the L2 cache depends on the actual card, with a minimum of 64 KB/SM + *l1 = 32 * 1024; + *l2 = 64 * 1024; + *l3 = 0; + } +#else static CacheSizes m_cacheSizes; - if(action==SetAction) { // set the cpu cache size and cache all block sizes from a global cache size in byte @@ -104,6 +114,7 @@ inline void manage_caching_sizes(Action action, std::ptrdiff_t* l1, std::ptrdiff *l2 = m_cacheSizes.m_l2; *l3 = m_cacheSizes.m_l3; } +#endif else { eigen_internal_assert(false); diff --git a/Eigen/src/Core/products/TriangularSolverVector.h b/Eigen/src/Core/products/TriangularSolverVector.h index b8fbb5bcc0feafdbf880020f2b33ee4ed51f0b80..8b21289028f267caf9da2c90f645d3a9f8ae0874 100644 --- a/Eigen/src/Core/products/TriangularSolverVector.h +++ b/Eigen/src/Core/products/TriangularSolverVector.h @@ -102,7 +102,7 @@ struct triangular_solve_vector,LhsMap>, const LhsMap& > cjLhs(lhs); - static const Index PanelWidth = EIGEN_TUNE_TRIANGULAR_PANEL_WIDTH; + constexpr Index PanelWidth = EIGEN_TUNE_TRIANGULAR_PANEL_WIDTH; for(Index pi=IsLower ? 0 : size; IsLower ? pi0;