Attached is an updated version of kokkos-32-bit.patch against upstream 12.10.1. It turns out that once the templates were fixed, the overloaded function declarations were not needed.
Builds and test of Kokkos-only and all Trilinos packages on 64-bit architectures are not affected. On 32-bit architectures that have an 8-byte compare-and-swap implementation (e.g. armhf and i386), a Kokkos-only build is successful, but 1 out of the 21 unit tests, KokkosCore_UnitTest_Serial_MPI_1, fails. KokkosCore_UnitTest_Serial_MPI_1 includes 60 tests and of these only 4 fail with errors like: Value of: result[i].value[j] Actual: 5.00005e+09 Expected: (ScalarType) correct Which is: 7.05083e+08 A build of all Trilinos packages fails with a few errors similar to the following: packages/tpetra/core/test/Distributor/createfromsendsandrecvs.cpp:315:61: error: conversion from ‘Teuchos::ArrayView<const unsigned int>’ to non-scalar type ‘Teuchos::ArrayView<const long unsigned int>’ requested ArrayView<const long unsigned int> c = dist.getLengthsFrom(); For a Kokkos-only build, which saves a huge amount of time (thanks Nico!), make the following changes to debian/rules: --- a/debian/rules +++ b/debian/rules @@ -93,8 +93,9 @@ -DTrilinos_INSTALL_INCLUDE_DIR:PATH=include/trilinos/ \ -DTrilinos_USE_GNUINSTALLDIRS:BOOL=ON \ -DTrilinos_ENABLE_DEVELOPMENT_MODE:BOOL=OFF \ - -DTrilinos_ENABLE_ALL_PACKAGES:BOOL=ON \ - -DTrilinos_ENABLE_SECONDARY_TESTED_CODE:BOOL=ON \ + -DTrilinos_ENABLE_ALL_PACKAGES:BOOL=OFF \ + -DTrilinos_ENABLE_SECONDARY_TESTED_CODE:BOOL=OFF \ + -DTrilinos_ENABLE_Kokkos:BOOL=ON \ -DTrilinos_ASSERT_MISSING_PACKAGES:BOOL=OFF \ -DTrilinos_ENABLE_EXPLICIT_INSTANTIATION:BOOL=ON \ -DTrilinos_ENABLE_CTrilinos:BOOL=OFF \
kokkos-32-bit.patch
Description: application/empty