Avoid integer overflow in EigenMetaKernel indexing

- The current implementation computes `size + total_threads`, which can
  overflow and cause CUDA_ERROR_ILLEGAL_ADDRESS when size is close to
  the maximum representable value.
- The num_blocks calculation can also overflow due to the implementation
  of divup().
- This patch prevents these overflows and allows the kernel to work
  correctly for the full representable range of tensor sizes.
- Also adds relevant tests.
3 files changed
tree: e8a3ba297c9b09e678386ca1692baf0a6cc35591
  1. .gitlab/
  2. bench/
  3. blas/
  4. ci/
  5. cmake/
  6. debug/
  7. demos/
  8. doc/
  9. Eigen/
  10. failtest/
  11. lapack/
  12. scripts/
  13. test/
  14. unsupported/
  15. .gitignore
  16. .gitlab-ci.yml
  17. .hgeol
  18. CMakeLists.txt
  19. COPYING.APACHE
  20. COPYING.BSD
  21. COPYING.GPL
  22. COPYING.LGPL
  23. COPYING.MINPACK
  24. COPYING.MPL2
  25. COPYING.README
  26. CTestConfig.cmake
  27. CTestCustom.cmake.in
  28. eigen3.pc.in
  29. INSTALL
  30. README.md
  31. signature_of_eigen3_matrix_library
README.md

Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms.

For more information go to http://eigen.tuxfamily.org/.

For pull request, bug reports, and feature requests, go to https://gitlab.com/libeigen/eigen.