aboutsummaryrefslogtreecommitdiffhomepage
Commit message (Collapse)AuthorAge
...
* Compilation of basicbenchmark fixedGravatar Jakub Lichman2021-04-21
|
* Fix taking address of rvalue compiler issue with TensorFlow (plus other ↵Gravatar Chip-Kerchner2021-04-21
| | | | warnings).
* HasExp added for AVX512 Packet8dGravatar Jakub Lichman2021-04-20
|
* Fix ldexp for AVX512 (#2215)Gravatar Antonio Sanchez2021-04-20
| | | | | | | Wrong shuffle was used. Need to interleave low/high halves with a `permute` instruction. Fixes #2215.
* Before 3.4 branchGravatar David Tellenbach2021-04-18
|
* Modify googlehash use to account for namespace issues.Gravatar Antonio Sanchez2021-04-12
| | | | | | | | | | | | | | | The namespace declaration for googlehash is a configurable macro that can be disabled. In particular, it is disabled within google, causing compile errors since `dense_hash_map`/`sparse_hash_map` are then in the global namespace instead of in `::google`. Here we play a bit of gynastics to allow for both `google::*_hash_map` and `*_hash_map`, while limiting namespace polution. Symbols within the `::google` namespace are imported into `Eigen::google`. We also remove checks based on `_SPARSE_HASH_MAP_H_`, as this is fragile, and instead require `EIGEN_GOOGLEHASH_SUPPORT` to be defined.
* Avoid using uninitialized inputs and if available, use slightly more ↵Gravatar Christoph Hertzberg2021-04-13
| | | | efficient `movsd` instruction for `pset1<Packet2cf>`.
* Fix typo in TensorDimensions.hGravatar Rasmus Munk Larsen2021-04-12
|
* Fix for float16 GPU unit test.Gravatar Rohit Santhanam2021-04-12
|
* Use EIGEN_HAS_CXX11 and EIGEN_COMP_CXXVER macros to detect C++ version for ↵Gravatar Christoph Hertzberg2021-04-12
| | | | | | `std::result_of` and `std::invoke_result`. Fixes #2209
* fixed doxygen for unsupported iterative solver moduleGravatar Jens Wehner2021-04-11
|
* Make iterators default constructible and assignable, by making...Gravatar Christoph Hertzberg2021-04-09
|
* This fixes an issue where the compiler was not choosing the GPU specific ↵Gravatar Rohit Santhanam2021-04-08
| | | | | | | | | | | | | | specialization of ScanLauncher. The issue was discovered when the GPU scan unit test was run and resulted in a segmentation fault. The segmantation fault occurred because the unit test allocated GPU memory and passed a pointer to that memory to the computation that it presumed would execute on the GPU. But because of the issue, the computation was scheduled to execute on the CPU so a situation was constructed where the CPU attempted to access a GPU memory location. The fix expands the GPU specific ScanLauncher specialization to handle cases where vectorization is enabled. Previously, the GPU specialization is chosen only if Vectorization is not used.
* Scaled epsilon the wrong way.Gravatar Antonio Sanchez2021-04-07
| | | | | | Should have been 0.5 to widen the bounds, since this is inverse precision. Setting to 0.5, however, leads to many more failing tests at Google, so reverting to 1 for now.
* Replace `-2147483648` by `-0.0f` or `-0.0` constants (this should fix #2189).Gravatar Christoph Hertzberg2021-04-07
| | | | Also, remove unnecessary `pgather` operations.
* Align local arrays to Packet boundary.Gravatar Rasmus Munk Larsen2021-04-06
|
* Fix clang tidy warnings in AnnoyingScalar.Gravatar Antonio Sanchez2021-04-05
| | | | | | | | Clang-tidy complains that full specializations in headers can cause ODR violations. Marked these as `inline` to fix. It also complains about renaming arguments in specializations. Set the argument names to match.
* Fix SelfAdjoingEigenSolver (#2191)Gravatar Antonio Sanchez2021-04-05
| | | | | | | | | | | | | | Adjust the relaxation step to use the condition ``` abs(subdiag[i]) <= epsilon * sqrt(abs(diag[i]) + abs(diag[i+1])) ``` for setting the subdiagonal entry to zero. Also adjust Wilkinson shift for small `e = subdiag[end-1]` - I couldn't find a reference for the original, and it was not consistent with the Wilkinson definition. Fixes #2191.
* Fix two bugs in commitGravatar Rasmus Munk Larsen2021-04-02
|
* Fix address of temporary object errors in clang11.Gravatar Chip Kerchner2021-04-02
| | | | This fixes the problem with taking the address of temporary objects which clang11 treats as errors.
* Add CI infrastructure for pre-merge smoke tests.Gravatar David Tellenbach2021-04-01
| | | | | | This patch adds pre-merge smoke tests for x86 Linux using gcc-10 and clang-10. Closes #2188.
* Add CMake infrastructure for smoke testingGravatar David Tellenbach2021-03-31
| | | | | Necessary CMake changes to implement pre-merge smoke tests running via CI.
* Add an info() method to the SVDBase class to make it possible to tell the ↵Gravatar Rasmus Munk Larsen2021-03-31
| | | | | | user that the computation failed, possibly due to invalid input. Make Jacobi and divide-and-conquer fail fast and return info() == InvalidInput if the matrix contains NaN or +/-Inf.
* Add GitLab templates for issues and merge requestsGravatar Guoqiang QI2021-03-31
| | | | | | This patch adds GitLab templates for bug reports, feature and merge requests. This closes #2117.
* Fix CUDA constexpr issues for numeric_limits.Gravatar Antonio Sanchez2021-03-30
| | | | | | | | | | | | | | | | Some CUDA/HIP constants fail on device with `constexpr` since they internally rely on non-constexpr functions, e.g. ``` \#define CUDART_INF_F __int_as_float(0x7f800000) ``` This fails for cuda-clang (though passes with nvcc). These constants are currently used by `device::numeric_limits`. For portability, we need to remove `constexpr` from the affected functions. For C++11 or higher, we should be able to rely on the `std::numeric_limits` versions anyways, since the methods themselves are now `constexpr`, so should be supported on device (clang/hipcc natively, nvcc with `--expr-relaxed-constexpr`).
* Use Index type in loop over coefficients.Gravatar Antonio Sanchez2021-03-29
| | | | | Previously was `int`. Brought up by Kyle Snow (Polaris Geospatial Services) on the mailing list.
* Eliminate `round_impl` double-promotion warnings for c++03.Gravatar Antonio Sanchez2021-03-25
|
* Un-defining EIGEN_HAS_CONSTEXPR on the HIP platformGravatar Deven Desai2021-03-25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The Eigen unit-tests started failing on the HIP/ROCm platform, after the following commit https://gitlab.com/libeigen/eigen/-/commit/e7b8643d70dfbb02ad94186169a8f16041f05bc2 ``` In file included from /home/rocm-user/eigen/test/main.h:360: In file included from /home/rocm-user/eigen/Eigen/QR:11: In file included from /home/rocm-user/eigen/Eigen/Core:162: /home/rocm-user/eigen/Eigen/src/Core/util/Meta.h:300:17: error: constexpr function never produces a constant expression [-Winvalid-constexpr] static float (max)() { ^ /home/rocm-user/eigen/Eigen/src/Core/util/Meta.h:304:12: note: non-constexpr function '__int_as_float' cannot be used in a constant expression return HIPRT_MAX_NORMAL_F; ^ /home/rocm-user/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h:14:28: note: expanded from macro 'HIPRT_MAX_NORMAL_F' #define HIPRT_MAX_NORMAL_F __int_as_float(0x7f7fffff) ^ /opt/rocm/hip/include/hip/hcc_detail/device_functions.h:913:32: note: declared here __device__ static inline float __int_as_float(int x) { ^ ``` The problem seems to that some of the constants defined in the HIP `math_constants.h` have a call to `__int_as_float` routine which is not declared `constexpr` in the HIP runtime header file. Working around this issue for now, be skipping the const_expr support (enabled via the above commit) on HIP
* Fixed performance issues for complex VSX and P10 MMA in gebp_kernel (level 3).Gravatar Chip Kerchner2021-03-25
|
* Revert "Revert "Adds EIGEN_CONSTEXPR and EIGEN_NOEXCEPT to rows(), cols(), ↵Gravatar Steve Bronder2021-03-24
| | | | | | innerStride(), outerStride(), and size()"" This reverts commit 5f0b4a4010af4cbf6161a0d1a03a747addc44a5d.
* Eliminate mixingtypes_7 warning.Gravatar Antonio Sanchez2021-03-24
| | | | | | `g_called` is not used in subtest 7, so was generating a `-Wunneeded-internal-declaration` warnings. Here we silence it by initializing the static variable.
* Revert "Uses _mm512_abs_pd for Packet8d pabs"Gravatar Christoph Hertzberg2021-03-23
| | | This reverts commit f019b97aca82071f35726b1aaebf1c598770f0f5
* Re-enable CI for PowerGravatar David Tellenbach2021-03-22
|
* Remove yet another comma at end of enumGravatar David Tellenbach2021-03-18
|
* Uses _mm512_abs_pd for Packet8d pabsGravatar Steve Bronder2021-03-18
|
* Split test commainitializer into two substestsGravatar David Tellenbach2021-03-18
|
* Use singleton pattern for static registered tests.Gravatar Antonio Sanchez2021-03-18
| | | | | | | | | | The original fails with nvcc+msvc - there's a static order of initialization issue leading to registered tests being cleared. The test then fails on ``` VERIFY(EigenTest::all().size()>0); ``` since `EigenTest` no longer contains any tests. The singleton pattern fixes this.
* Proposed fix for issue #2187Gravatar Niek Bouman2021-03-18
|
* Augment NumTraits with min/max_exponent() again.Gravatar Antonio Sanchez2021-03-16
| | | | | | | | | | | | Replace usage of `std::numeric_limits<...>::min/max_exponent` in codebase where possible. Also replaced some other `numeric_limits` usages in affected tests with the `NumTraits` equivalent. The previous MR !443 failed for c++03 due to lack of `constexpr`. Because of this, we need to keep around the `std::numeric_limits` version in enum expressions until the switch to c++11. Fixes #2148
* Fix another warning on missing commasGravatar David Tellenbach2021-03-17
|
* Revert "Augment NumTraits with min/max_exponent()."Gravatar David Tellenbach2021-03-17
| | | | This reverts commit 75ce9cd2a7aefaaea8543e2db14ce4dc149eeb03.
* Augment NumTraits with min/max_exponent().Gravatar Antonio Sanchez2021-03-17
| | | | | | | | Replace usage of `std::numeric_limits<...>::min/max_exponent` in codebase. Also replaced some other `numeric_limits` usages in affected tests with the `NumTraits` equivalent. Fixes #2148
* Silence warning on comma at end of enumerator listGravatar David Tellenbach2021-03-17
|
* Updated SelfAdjointEigenSolver documentation to include that the ↵Gravatar Theo Fletcher2021-03-16
| | | | eigenvectors matrix is unitary.
* Add NaN propagation options to minCoeff/maxCoeff visitors.Gravatar Rasmus Munk Larsen2021-03-16
|
* Fixed output of complex matricesGravatar Jens Wehner2021-03-15
|
* Add fmod(half, half).Gravatar Antonio Sanchez2021-03-15
| | | | This is to support TensorFlow's `tf.math.floormod` for half.
* Fix numext::round pre c++11 for large inputs.Gravatar Antonio Sanchez2021-03-15
| | | | | | | | This is to resolve an issue for large inputs when +0.5 can actually lead to +1 if the input doesn't have enough precision to resolve the addition - leading to an off-by-one error. See discussion on 9a663973.
* Fix pround and add printGravatar Chip Kerchner2021-03-15
|
* Fix NVCC+ICC issues.Gravatar Antonio Sanchez2021-03-15
| | | | | | | | | | | | | | | | | | | | | | | | 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