Commit Graph

125 Commits

Author SHA1 Message Date
Deven Desai
d1d22ef0f4 syncing this fork with upstream 2018-06-13 12:09:52 -04:00
Benoit Steiner
522d3ca54d Don't use std::equal_to inside cuda kernels since it's not supported. 2018-06-07 13:02:07 -07:00
Deven Desai
8fbd47052b Adding support for using Eigen in HIP kernels.
This commit enables the use of Eigen on HIP kernels / AMD GPUs. Support has been added along the same lines as what already exists for using Eigen in CUDA kernels / NVidia GPUs.

Application code needs to explicitly define EIGEN_USE_HIP when using Eigen in HIP kernels. This is because some of the CUDA headers get picked up by default during Eigen compile (irrespective of whether or not the underlying compiler is CUDACC/NVCC, for e.g. Eigen/src/Core/arch/CUDA/Half.h). In order to maintain this behavior, the EIGEN_USE_HIP macro is used to switch to using the HIP version of those header files (see Eigen/Core and unsupported/Eigen/CXX11/Tensor)


Use the "-DEIGEN_TEST_HIP" cmake option to enable the HIP specific unit tests.
2018-06-06 10:12:58 -04:00
Gael Guennebaud
f0862b062f Fix internal::is_integral<size_t/ptrdiff_t> with MSVC 2013 and older. 2018-05-22 19:29:51 +02:00
Gael Guennebaud
e9da464e20 Add specializations of is_arithmetic for long long in c++11 2018-04-23 16:26:29 +02:00
Gael Guennebaud
7a9089c33c fix linking issue 2018-04-13 08:51:47 +02:00
Gael Guennebaud
e43ca0320d bug #1520: workaround some -Wfloat-equal warnings by calling std::equal_to 2018-04-11 15:24:13 +02:00
luz.paz
e3912f5e63 MIsc. source and comment typos
Found using `codespell` and `grep` from downstream FreeCAD
2018-03-11 10:01:44 -04:00
Gael Guennebaud
bbd97b4095 Add a EIGEN_NO_CUDA option, and introduce EIGEN_CUDACC and EIGEN_CUDA_ARCH aliases 2017-07-17 01:02:51 +02:00
Gael Guennebaud
aae19c70ac update has_ReturnType to be more consistent with other has_ helpers 2017-03-17 17:33:15 +01:00
Gael Guennebaud
5937c4ae32 Fall back is_integral to std::is_integral in c++11 2017-02-13 17:14:26 +01:00
Jonathan Hseu
3453b00a1e Fix vector indexing with uint64_t 2017-02-11 21:45:32 -08:00
Gael Guennebaud
607be65a03 Fix duplicates of array_size bewteen unsupported and Core 2017-01-25 22:53:58 +01:00
Gael Guennebaud
752bd92ba5 Large code refactoring:
- generalize some utilities and move them to Meta (size(), array_size())
 - move handling of all and single indices to IndexedViewHelper.h
 - several cleanup changes
2017-01-11 17:24:02 +01:00
Chun Wang
0d0948c3b9 Workaround for error in VS2012 with /clr 2016-11-17 17:54:27 -05:00
Gael Guennebaud
e13071dd13 Workaround a weird msvc 2012 compilation error. 2016-09-05 15:50:41 +02:00
Gael Guennebaud
d6c8366d84 Fix compilation with MSVC 2012 2016-09-02 15:23:32 +02:00
Gael Guennebaud
ef54723dbe One more msvc fix iteration, the previous one was over-simplified for visual 2016-09-01 15:04:53 +02:00
Gael Guennebaud
3d946e42b3 Fix compilation with visual studio 2016-09-01 12:59:32 +02:00
Gael Guennebaud
836fa25a82 Make sure sizeof is truelly needed, thus improving SFINAE portability. 2016-08-31 23:40:18 +02:00
Gael Guennebaud
84cf6e42ca minor tweaks in has_* helpers 2016-08-31 23:04:14 +02:00
Gael Guennebaud
218c37beb4 bug #1286: automatically detect the available prototypes of functors passed to CwiseNullaryExpr such that functors have only to implement the operators that matters among:
operator()()
 operator()(i)
 operator()(i,j)
Linear access is also automatically detected based on the availability of operator()(i,j).
2016-08-31 15:45:25 +02:00
klimpel
ca5effa16c MSVC-2010 is making problems with SFINAE again. But restricting to the variant for very old compilers (enum, template<typename C> for both function definitions) fixes the problem. 2016-07-28 15:58:17 +01:00
Gael Guennebaud
4b4c296d6e Simplify ScalarBinaryOpTraits by removing the Defined enum, and extend its documentation. 2016-07-20 09:56:39 +02:00
Gael Guennebaud
79574e384e Make scalar_product_op the default (instead of void) 2016-07-18 12:03:05 +02:00
Gael Guennebaud
8ec4d6480d Fix compilation with recent updates of icc 2016 2016-07-06 14:07:14 +02:00
Gael Guennebaud
367ef66af3 Re-enable some specializations for Assignment<.,Product<>> 2016-07-05 22:58:14 +02:00
Gael Guennebaud
deb45ad4bc bug #1245: fix compilation with msvc 2016-06-24 09:52:25 +02:00
Gael Guennebaud
76236cdea4 merge 2016-06-14 15:33:47 +02:00
Gael Guennebaud
2c462f4201 Clean handling for void type in EIGEN_CHECK_BINARY_COMPATIBILIY 2016-06-06 23:11:38 +02:00
Gael Guennebaud
66e99ab6a1 Relax mixing-type constraints for binary coefficient-wise operators:
- Replace internal::scalar_product_traits<A,B> by Eigen::ScalarBinaryOpTraits<A,B,OP>
- Remove the "functor_is_product_like" helper (was pretty ugly)
- Currently, OP is not used, but it is available to the user for fine grained tuning
- Currently, only the following operators have been generalized: *,/,+,-,=,*=,/=,+=,-=
- TODO: generalize all other binray operators (comparisons,pow,etc.)
- TODO: handle "scalar op array" operators (currently only * is handled)
- TODO: move the handling of the "void" scalar type to ScalarBinaryOpTraits
2016-06-06 15:11:41 +02:00
Benoit Steiner
33f0340188 Implement result_of for the new ternary functors 2016-06-06 12:06:42 -07:00
Gael Guennebaud
d79eee05ef Fix compilation with old icc 2016-05-31 17:13:51 +02:00
Gael Guennebaud
e0cb73b46b Fix compilation with old ICC version (use C99 types instead of C++11 ones) 2016-05-27 10:28:09 +02:00
Gael Guennebaud
27f0434233 Introduce internal's UIntPtr and IntPtr types for pointer to integer conversions.
This fixes "conversion from pointer to same-sized integral type" warnings by ICC.
Ideally, we would use the std::[u]intptr_t types all the time, but since they are C99/C++11 only,
let's be safe.
2016-05-26 10:52:12 +02:00
Gael Guennebaud
40e4637d79 Turn off ICC's conversion warning in is_convertible implementation 2016-05-26 10:48:43 +02:00
Gael Guennebaud
abd1c1af7a Make EIGEN_HAS_STD_RESULT_OF user configurable 2016-05-20 15:01:27 +02:00
Eugene Brevdo
73220d2bb0 Resolve bad merge. 2016-03-08 17:28:21 -08:00
Eugene Brevdo
ab3dc0b0fe Small bugfix to numeric_limits for CUDA. 2016-03-02 21:48:46 -08:00
Eugene Brevdo
6afea46838 Add infinity() support to numext::numeric_limits, use it in lgamma.
This makes the infinity access a __device__ function, removing
nvcc warnings.
2016-03-02 21:35:48 -08:00
Gael Guennebaud
2bad3e78d9 bug #96, bug #1006: fix by value argument in result_of. 2016-01-28 12:12:06 +01:00
Gael Guennebaud
21b5345782 Add meta_least_common_multiple helper. 2016-01-27 17:11:39 +01:00
Gael Guennebaud
06971223ef Unify std::numeric_limits and device::numeric_limits within numext namespace 2016-01-22 15:02:21 +01:00
Gael Guennebaud
b37036afce Implement wrapper for matrix-free iterative solvers 2015-12-07 12:23:22 +01:00
Gael Guennebaud
e52d4f8d8d Add is_integral<> type traits 2015-11-20 13:54:28 +01:00
Benoit Steiner
7d1cedd0fe Added numeric limits for unsigned integers 2015-11-18 17:17:44 -08:00
Gael Guennebaud
c0352197a1 bug #1099: add missing incude for CUDA 2015-10-31 18:06:28 +01:00
Gael Guennebaud
6759a21e49 CUDA support: define more accurate min/max values for device::numeric_limits of float and double using values from cfloat header 2015-10-28 16:49:15 +01:00
Gael Guennebaud
941a99ac1a Add a few missing EIGEN_DEVICE_FUNC declarations 2015-09-03 14:14:54 +02:00
Christoph Hertzberg
78358a7241 Fixed broken commit a09cfe650f
. Missing } and unprotected min/max calls and definitions.
2015-08-22 15:03:16 +02:00