For certain inputs, the real schur decomposition might get stuck in a cycle.
Exceptional shifts are supposed to knock us out of that - but previously
they were only ever applied at iteration 10 and 30, which doesn't help if
the cycle starts after cycle 30. Modified to apply a shift every 16 iterations
(for reference, LAPACK seems to do it every 6 iterations).
Also added an assert in polynomial solver to verify that the schur decomposition
was successful.
Fixes#2633.
Fixes#2777. The `preshear` function seems to have always used an invalid constructor
internally, and has been broken for a while. Fixed the implementation and added a test.
(cherry picked from commit 45da84e21570bf70238cf489ad862b2f09242c5f)
The original test times out after 60 minutes on Windows, even when
setting flags to optimize for speed. Reducing the number of
contractions performed from 3600->27 for subtests 8,9 allow the
two to run in just over a minute each.
(cherry picked from commit be9e7d205f38e3e8effdfdded88817b371673930)
For moderately sized inputs, running the Tree reduction quickly
fills/overflows the GPU thread stack space, leading to memory errors.
This was happening in the `cxx11_tensor_complex_gpu` test, for example.
Disabling tree reduction on GPU fixes this.
(cherry picked from commit 24ebb37f38287d65c0e0b60c714e39faffeb5b94)
Some checks used incorrect values, partly from copy-paste errors,
partly from the change in behaviour introduced in !398.
Modified results to match scipy, simplified tests by updating
`VERIFY_IS_CWISE_APPROX` to work for scalars.
(cherry picked from commit 701f5d1c91c770e558c7760da14ff3365757e275)
- Unify test/CMakeLists.txt and unsupported/test/CMakeLists.txt
- Added `EIGEN_CUDA_FLAGS` that are appended to the set of flags passed
to the cuda compiler (nvcc or clang).
The latter is to support passing custom flags (e.g. `-arch=` to nvcc,
or to disable cuda-specific warnings).
(cherry picked from commit 7b00e8b186a7679b0f46be742809a55d07d4efe8)
This is in preparation of adding GPU tests to the CI, allowing
us to limit building/testing of GPU-specific tests for a given
GPU-capable runner.
GPU tests are tagged with the label "gpu". The new targets
```
make buildtests_gpu
make check_gpu
```
allow building and running only the gpu tests.
(cherry picked from commit 16f9a20a6f408fe8896d9c07c91e23e8159a9d2c)