Antonio Sanchez d24f9f9b55 Fix NVCC+ICC issues.
NVCC does not understand `__forceinline`, so we need to use `inline`
when compiling for GPU.

ICC specializes `std::complex` operators for `float` and `double`
by default, which cannot be used on device and conflict with Eigen's
workaround in CUDA/Complex.h.  This can be prevented by defining
`_OVERRIDE_COMPLEX_SPECIALIZATION_` before including `<complex>`.
Added this define to the tests and to `Eigen/Core`, but this will
not work if the user includes `<complex>` before `<Eigen/Core>`.

ICC also seems to generate a duplicate `Map` symbol in
`PlainObjectBase`:
```
error: "Map" has already been declared in the current scope
  static ConstMapType Map(const Scalar *data)

```
I tracked this down to `friend class Eigen::Map`.  Putting the `friend`
statements at the bottom of the class seems to resolve this issue.

Fixes #2180
2021-03-15 18:42:04 +00:00
..
2019-03-14 10:08:12 +01:00
2016-05-18 14:03:03 +02:00
2018-11-23 15:37:09 +01:00
2021-02-25 08:04:05 -08:00
2019-12-11 18:22:57 +00:00
2021-03-15 18:42:04 +00:00
2021-01-27 23:32:12 +01:00
2021-01-27 23:32:12 +01:00
2021-03-10 22:17:03 -08:00
2021-01-05 10:41:25 -08:00
2021-01-21 09:44:42 -08:00
2019-01-15 10:51:03 +01:00
2018-11-23 15:12:06 +01:00