Update Kokkos library in LAMMPS to v3.2
This commit is contained in:
@ -2,7 +2,9 @@
|
||||
|
||||
KOKKOS_SUBPACKAGE(Algorithms)
|
||||
|
||||
ADD_SUBDIRECTORY(src)
|
||||
IF (NOT Kokkos_INSTALL_TESTING)
|
||||
ADD_SUBDIRECTORY(src)
|
||||
ENDIF()
|
||||
|
||||
KOKKOS_ADD_TEST_DIRECTORIES(unit_tests)
|
||||
|
||||
|
||||
@ -7,9 +7,15 @@ KOKKOS_INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
|
||||
FILE(GLOB HEADERS *.hpp)
|
||||
FILE(GLOB SOURCES *.cpp)
|
||||
LIST(APPEND HEADERS ${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE_NAME}_config.h)
|
||||
FILE(GLOB ALGO_HEADERS *.hpp)
|
||||
FILE(GLOB ALGO_SOURCES *.cpp)
|
||||
LIST(APPEND ALGO_HEADERS ${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE_NAME}_config.h)
|
||||
|
||||
INSTALL (
|
||||
DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/"
|
||||
DESTINATION ${KOKKOS_HEADER_DIR}
|
||||
FILES_MATCHING PATTERN "*.hpp"
|
||||
)
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
|
||||
@ -17,8 +23,8 @@ LIST(APPEND HEADERS ${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE_NAME}_config.h)
|
||||
# These will get ignored for standalone CMake and a true interface library made
|
||||
KOKKOS_ADD_INTERFACE_LIBRARY(
|
||||
kokkosalgorithms
|
||||
HEADERS ${HEADERS}
|
||||
SOURCES ${SOURCES}
|
||||
HEADERS ${ALGO_HEADERS}
|
||||
SOURCES ${ALGO_SOURCES}
|
||||
)
|
||||
KOKKOS_LIB_INCLUDE_DIRECTORIES(kokkosalgorithms
|
||||
${KOKKOS_TOP_BUILD_DIR}
|
||||
|
||||
@ -94,9 +94,9 @@ namespace Kokkos {
|
||||
class Pool {
|
||||
public:
|
||||
//The Kokkos device type
|
||||
typedef Device device_type;
|
||||
using device_type = Device;
|
||||
//The actual generator type
|
||||
typedef Generator<Device> generator_type;
|
||||
using generator_type = Generator<Device>;
|
||||
|
||||
//Default constructor: does not initialize a pool
|
||||
Pool();
|
||||
@ -124,7 +124,7 @@ namespace Kokkos {
|
||||
class Generator {
|
||||
public:
|
||||
//The Kokkos device type
|
||||
typedef DeviceType device_type;
|
||||
using device_type = DeviceType;
|
||||
|
||||
//Max return values of respective [X]rand[S]() functions
|
||||
enum {MAX_URAND = 0xffffffffU};
|
||||
@ -138,75 +138,75 @@ namespace Kokkos {
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
Generator (STATE_ARGUMENTS, int state_idx = 0);
|
||||
|
||||
//Draw a equidistributed uint32_t in the range (0,MAX_URAND]
|
||||
//Draw a equidistributed uint32_t in the range [0,MAX_URAND)
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
uint32_t urand();
|
||||
|
||||
//Draw a equidistributed uint64_t in the range (0,MAX_URAND64]
|
||||
//Draw a equidistributed uint64_t in the range [0,MAX_URAND64)
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
uint64_t urand64();
|
||||
|
||||
//Draw a equidistributed uint32_t in the range (0,range]
|
||||
//Draw a equidistributed uint32_t in the range [0,range)
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
uint32_t urand(const uint32_t& range);
|
||||
|
||||
//Draw a equidistributed uint32_t in the range (start,end]
|
||||
//Draw a equidistributed uint32_t in the range [start,end)
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
uint32_t urand(const uint32_t& start, const uint32_t& end );
|
||||
|
||||
//Draw a equidistributed uint64_t in the range (0,range]
|
||||
//Draw a equidistributed uint64_t in the range [0,range)
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
uint64_t urand64(const uint64_t& range);
|
||||
|
||||
//Draw a equidistributed uint64_t in the range (start,end]
|
||||
//Draw a equidistributed uint64_t in the range [start,end)
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
uint64_t urand64(const uint64_t& start, const uint64_t& end );
|
||||
|
||||
//Draw a equidistributed int in the range (0,MAX_RAND]
|
||||
//Draw a equidistributed int in the range [0,MAX_RAND)
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
int rand();
|
||||
|
||||
//Draw a equidistributed int in the range (0,range]
|
||||
//Draw a equidistributed int in the range [0,range)
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
int rand(const int& range);
|
||||
|
||||
//Draw a equidistributed int in the range (start,end]
|
||||
//Draw a equidistributed int in the range [start,end)
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
int rand(const int& start, const int& end );
|
||||
|
||||
//Draw a equidistributed int64_t in the range (0,MAX_RAND64]
|
||||
//Draw a equidistributed int64_t in the range [0,MAX_RAND64)
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
int64_t rand64();
|
||||
|
||||
//Draw a equidistributed int64_t in the range (0,range]
|
||||
//Draw a equidistributed int64_t in the range [0,range)
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
int64_t rand64(const int64_t& range);
|
||||
|
||||
//Draw a equidistributed int64_t in the range (start,end]
|
||||
//Draw a equidistributed int64_t in the range [start,end)
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
int64_t rand64(const int64_t& start, const int64_t& end );
|
||||
|
||||
//Draw a equidistributed float in the range (0,1.0]
|
||||
//Draw a equidistributed float in the range [0,1.0)
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
float frand();
|
||||
|
||||
//Draw a equidistributed float in the range (0,range]
|
||||
//Draw a equidistributed float in the range [0,range)
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
float frand(const float& range);
|
||||
|
||||
//Draw a equidistributed float in the range (start,end]
|
||||
//Draw a equidistributed float in the range [start,end)
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
float frand(const float& start, const float& end );
|
||||
|
||||
//Draw a equidistributed double in the range (0,1.0]
|
||||
//Draw a equidistributed double in the range [0,1.0)
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
double drand();
|
||||
|
||||
//Draw a equidistributed double in the range (0,range]
|
||||
//Draw a equidistributed double in the range [0,range)
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
double drand(const double& range);
|
||||
|
||||
//Draw a equidistributed double in the range (start,end]
|
||||
//Draw a equidistributed double in the range [start,end)
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
double drand(const double& start, const double& end );
|
||||
|
||||
@ -221,11 +221,11 @@ namespace Kokkos {
|
||||
|
||||
//Additional Functions:
|
||||
|
||||
//Fills view with random numbers in the range (0,range]
|
||||
//Fills view with random numbers in the range [0,range)
|
||||
template<class ViewType, class PoolType>
|
||||
void fill_random(ViewType view, PoolType pool, ViewType::value_type range);
|
||||
|
||||
//Fills view with random numbers in the range (start,end]
|
||||
//Fills view with random numbers in the range [start,end)
|
||||
template<class ViewType, class PoolType>
|
||||
void fill_random(ViewType view, PoolType pool,
|
||||
ViewType::value_type start, ViewType::value_type end);
|
||||
@ -381,7 +381,7 @@ struct rand<Generator, unsigned long> {
|
||||
// NOTE (mfh 26 oct 2014) This is a partial specialization for long
|
||||
// long, a C99 / C++11 signed type which is guaranteed to be at
|
||||
// least 64 bits. Do NOT write a partial specialization for
|
||||
// int64_t!!! This is just a typedef! It could be either long or
|
||||
// int64_t!!! This is just an alias! It could be either long or
|
||||
// long long. We don't know which a priori, and I've seen both.
|
||||
// The types long and long long are guaranteed to differ, so it's
|
||||
// always safe to specialize for both.
|
||||
@ -413,7 +413,7 @@ struct rand<Generator, long long> {
|
||||
// NOTE (mfh 26 oct 2014) This is a partial specialization for
|
||||
// unsigned long long, a C99 / C++11 unsigned type which is
|
||||
// guaranteed to be at least 64 bits. Do NOT write a partial
|
||||
// specialization for uint64_t!!! This is just a typedef! It could
|
||||
// specialization for uint64_t!!! This is just an alias! It could
|
||||
// be either unsigned long or unsigned long long. We don't know
|
||||
// which a priori, and I've seen both. The types unsigned long and
|
||||
// unsigned long long are guaranteed to differ, so it's always safe
|
||||
@ -604,11 +604,7 @@ struct Random_UniqueIndex {
|
||||
KOKKOS_FUNCTION
|
||||
static int get_state_idx(const locks_view_type) {
|
||||
#ifdef KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST
|
||||
#ifdef KOKKOS_ENABLE_DEPRECATED_CODE
|
||||
const int i = ExecutionSpace::hardware_thread_id();
|
||||
#else
|
||||
const int i = ExecutionSpace::impl_hardware_thread_id();
|
||||
#endif
|
||||
return i;
|
||||
#else
|
||||
return 0;
|
||||
@ -652,15 +648,13 @@ struct Random_UniqueIndex<Kokkos::Experimental::HIP> {
|
||||
static int get_state_idx(const locks_view_type& locks_) {
|
||||
#ifdef __HIP_DEVICE_COMPILE__
|
||||
const int i_offset =
|
||||
(hipThreadIdx_x * hipBlockDim_y + hipThreadIdx_y) * hipBlockDim_z +
|
||||
hipThreadIdx_z;
|
||||
int i = (((hipBlockIdx_x * hipGridDim_y + hipBlockIdx_y) * hipGridDim_z +
|
||||
hipBlockIdx_z) *
|
||||
hipBlockDim_x * hipBlockDim_y * hipBlockDim_z +
|
||||
(threadIdx.x * blockDim.y + threadIdx.y) * blockDim.z + threadIdx.z;
|
||||
int i = (((blockIdx.x * gridDim.y + blockIdx.y) * gridDim.z + blockIdx.z) *
|
||||
blockDim.x * blockDim.y * blockDim.z +
|
||||
i_offset) %
|
||||
locks_.extent(0);
|
||||
while (Kokkos::atomic_compare_exchange(&locks_(i), 0, 1)) {
|
||||
i += hipBlockDim_x * hipBlockDim_y * hipBlockDim_z;
|
||||
i += blockDim.x * blockDim.y * blockDim.z;
|
||||
if (i >= static_cast<int>(locks_.extent(0))) {
|
||||
i = i_offset;
|
||||
}
|
||||
@ -687,7 +681,7 @@ class Random_XorShift64 {
|
||||
friend class Random_XorShift64_Pool<DeviceType>;
|
||||
|
||||
public:
|
||||
typedef DeviceType device_type;
|
||||
using device_type = DeviceType;
|
||||
|
||||
constexpr static uint32_t MAX_URAND = std::numeric_limits<uint32_t>::max();
|
||||
constexpr static uint64_t MAX_URAND64 = std::numeric_limits<uint64_t>::max();
|
||||
@ -805,11 +799,6 @@ class Random_XorShift64 {
|
||||
// number
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
double normal() {
|
||||
#ifndef __HIP_DEVICE_COMPILE__ // FIXME_HIP
|
||||
using std::sqrt;
|
||||
#else
|
||||
using ::sqrt;
|
||||
#endif
|
||||
double S = 2.0;
|
||||
double U;
|
||||
while (S >= 1.0) {
|
||||
@ -817,7 +806,7 @@ class Random_XorShift64 {
|
||||
const double V = 2.0 * drand() - 1.0;
|
||||
S = U * U + V * V;
|
||||
}
|
||||
return U * sqrt(-2.0 * log(S) / S);
|
||||
return U * std::sqrt(-2.0 * log(S) / S);
|
||||
}
|
||||
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
@ -830,15 +819,15 @@ template <class DeviceType = Kokkos::DefaultExecutionSpace>
|
||||
class Random_XorShift64_Pool {
|
||||
private:
|
||||
using execution_space = typename DeviceType::execution_space;
|
||||
typedef View<int*, execution_space> locks_type;
|
||||
typedef View<uint64_t*, DeviceType> state_data_type;
|
||||
using locks_type = View<int*, execution_space>;
|
||||
using state_data_type = View<uint64_t*, DeviceType>;
|
||||
locks_type locks_;
|
||||
state_data_type state_;
|
||||
int num_states_;
|
||||
|
||||
public:
|
||||
typedef Random_XorShift64<DeviceType> generator_type;
|
||||
typedef DeviceType device_type;
|
||||
using generator_type = Random_XorShift64<DeviceType>;
|
||||
using device_type = DeviceType;
|
||||
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
Random_XorShift64_Pool() { num_states_ = 0; }
|
||||
@ -923,8 +912,8 @@ class Random_XorShift1024 {
|
||||
friend class Random_XorShift1024_Pool<DeviceType>;
|
||||
|
||||
public:
|
||||
typedef Random_XorShift1024_Pool<DeviceType> pool_type;
|
||||
typedef DeviceType device_type;
|
||||
using pool_type = Random_XorShift1024_Pool<DeviceType>;
|
||||
using device_type = DeviceType;
|
||||
|
||||
constexpr static uint32_t MAX_URAND = std::numeric_limits<uint32_t>::max();
|
||||
constexpr static uint64_t MAX_URAND64 = std::numeric_limits<uint64_t>::max();
|
||||
@ -1046,11 +1035,6 @@ class Random_XorShift1024 {
|
||||
// number
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
double normal() {
|
||||
#ifndef KOKKOS_ENABLE_HIP // FIXME_HIP
|
||||
using std::sqrt;
|
||||
#else
|
||||
using ::sqrt;
|
||||
#endif
|
||||
double S = 2.0;
|
||||
double U;
|
||||
while (S >= 1.0) {
|
||||
@ -1058,7 +1042,7 @@ class Random_XorShift1024 {
|
||||
const double V = 2.0 * drand() - 1.0;
|
||||
S = U * U + V * V;
|
||||
}
|
||||
return U * sqrt(-2.0 * log(S) / S);
|
||||
return U * std::sqrt(-2.0 * log(S) / S);
|
||||
}
|
||||
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
@ -1071,9 +1055,9 @@ template <class DeviceType = Kokkos::DefaultExecutionSpace>
|
||||
class Random_XorShift1024_Pool {
|
||||
private:
|
||||
using execution_space = typename DeviceType::execution_space;
|
||||
typedef View<int*, execution_space> locks_type;
|
||||
typedef View<int*, DeviceType> int_view_type;
|
||||
typedef View<uint64_t * [16], DeviceType> state_data_type;
|
||||
using locks_type = View<int*, execution_space>;
|
||||
using int_view_type = View<int*, DeviceType>;
|
||||
using state_data_type = View<uint64_t * [16], DeviceType>;
|
||||
|
||||
locks_type locks_;
|
||||
state_data_type state_;
|
||||
@ -1082,9 +1066,9 @@ class Random_XorShift1024_Pool {
|
||||
friend class Random_XorShift1024<DeviceType>;
|
||||
|
||||
public:
|
||||
typedef Random_XorShift1024<DeviceType> generator_type;
|
||||
using generator_type = Random_XorShift1024<DeviceType>;
|
||||
|
||||
typedef DeviceType device_type;
|
||||
using device_type = DeviceType;
|
||||
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
Random_XorShift1024_Pool() { num_states_ = 0; }
|
||||
@ -1176,14 +1160,13 @@ struct fill_random_functor_begin_end;
|
||||
|
||||
template <class ViewType, class RandomPool, int loops, class IndexType>
|
||||
struct fill_random_functor_range<ViewType, RandomPool, loops, 1, IndexType> {
|
||||
typedef typename ViewType::execution_space execution_space;
|
||||
using execution_space = typename ViewType::execution_space;
|
||||
ViewType a;
|
||||
RandomPool rand_pool;
|
||||
typename ViewType::const_value_type range;
|
||||
|
||||
typedef rand<typename RandomPool::generator_type,
|
||||
typename ViewType::non_const_value_type>
|
||||
Rand;
|
||||
using Rand = rand<typename RandomPool::generator_type,
|
||||
typename ViewType::non_const_value_type>;
|
||||
|
||||
fill_random_functor_range(ViewType a_, RandomPool rand_pool_,
|
||||
typename ViewType::const_value_type range_)
|
||||
@ -1203,14 +1186,13 @@ struct fill_random_functor_range<ViewType, RandomPool, loops, 1, IndexType> {
|
||||
|
||||
template <class ViewType, class RandomPool, int loops, class IndexType>
|
||||
struct fill_random_functor_range<ViewType, RandomPool, loops, 2, IndexType> {
|
||||
typedef typename ViewType::execution_space execution_space;
|
||||
using execution_space = typename ViewType::execution_space;
|
||||
ViewType a;
|
||||
RandomPool rand_pool;
|
||||
typename ViewType::const_value_type range;
|
||||
|
||||
typedef rand<typename RandomPool::generator_type,
|
||||
typename ViewType::non_const_value_type>
|
||||
Rand;
|
||||
using Rand = rand<typename RandomPool::generator_type,
|
||||
typename ViewType::non_const_value_type>;
|
||||
|
||||
fill_random_functor_range(ViewType a_, RandomPool rand_pool_,
|
||||
typename ViewType::const_value_type range_)
|
||||
@ -1232,14 +1214,13 @@ struct fill_random_functor_range<ViewType, RandomPool, loops, 2, IndexType> {
|
||||
|
||||
template <class ViewType, class RandomPool, int loops, class IndexType>
|
||||
struct fill_random_functor_range<ViewType, RandomPool, loops, 3, IndexType> {
|
||||
typedef typename ViewType::execution_space execution_space;
|
||||
using execution_space = typename ViewType::execution_space;
|
||||
ViewType a;
|
||||
RandomPool rand_pool;
|
||||
typename ViewType::const_value_type range;
|
||||
|
||||
typedef rand<typename RandomPool::generator_type,
|
||||
typename ViewType::non_const_value_type>
|
||||
Rand;
|
||||
using Rand = rand<typename RandomPool::generator_type,
|
||||
typename ViewType::non_const_value_type>;
|
||||
|
||||
fill_random_functor_range(ViewType a_, RandomPool rand_pool_,
|
||||
typename ViewType::const_value_type range_)
|
||||
@ -1262,14 +1243,13 @@ struct fill_random_functor_range<ViewType, RandomPool, loops, 3, IndexType> {
|
||||
|
||||
template <class ViewType, class RandomPool, int loops, class IndexType>
|
||||
struct fill_random_functor_range<ViewType, RandomPool, loops, 4, IndexType> {
|
||||
typedef typename ViewType::execution_space execution_space;
|
||||
using execution_space = typename ViewType::execution_space;
|
||||
ViewType a;
|
||||
RandomPool rand_pool;
|
||||
typename ViewType::const_value_type range;
|
||||
|
||||
typedef rand<typename RandomPool::generator_type,
|
||||
typename ViewType::non_const_value_type>
|
||||
Rand;
|
||||
using Rand = rand<typename RandomPool::generator_type,
|
||||
typename ViewType::non_const_value_type>;
|
||||
|
||||
fill_random_functor_range(ViewType a_, RandomPool rand_pool_,
|
||||
typename ViewType::const_value_type range_)
|
||||
@ -1293,14 +1273,13 @@ struct fill_random_functor_range<ViewType, RandomPool, loops, 4, IndexType> {
|
||||
|
||||
template <class ViewType, class RandomPool, int loops, class IndexType>
|
||||
struct fill_random_functor_range<ViewType, RandomPool, loops, 5, IndexType> {
|
||||
typedef typename ViewType::execution_space execution_space;
|
||||
using execution_space = typename ViewType::execution_space;
|
||||
ViewType a;
|
||||
RandomPool rand_pool;
|
||||
typename ViewType::const_value_type range;
|
||||
|
||||
typedef rand<typename RandomPool::generator_type,
|
||||
typename ViewType::non_const_value_type>
|
||||
Rand;
|
||||
using Rand = rand<typename RandomPool::generator_type,
|
||||
typename ViewType::non_const_value_type>;
|
||||
|
||||
fill_random_functor_range(ViewType a_, RandomPool rand_pool_,
|
||||
typename ViewType::const_value_type range_)
|
||||
@ -1326,14 +1305,13 @@ struct fill_random_functor_range<ViewType, RandomPool, loops, 5, IndexType> {
|
||||
|
||||
template <class ViewType, class RandomPool, int loops, class IndexType>
|
||||
struct fill_random_functor_range<ViewType, RandomPool, loops, 6, IndexType> {
|
||||
typedef typename ViewType::execution_space execution_space;
|
||||
using execution_space = typename ViewType::execution_space;
|
||||
ViewType a;
|
||||
RandomPool rand_pool;
|
||||
typename ViewType::const_value_type range;
|
||||
|
||||
typedef rand<typename RandomPool::generator_type,
|
||||
typename ViewType::non_const_value_type>
|
||||
Rand;
|
||||
using Rand = rand<typename RandomPool::generator_type,
|
||||
typename ViewType::non_const_value_type>;
|
||||
|
||||
fill_random_functor_range(ViewType a_, RandomPool rand_pool_,
|
||||
typename ViewType::const_value_type range_)
|
||||
@ -1361,14 +1339,13 @@ struct fill_random_functor_range<ViewType, RandomPool, loops, 6, IndexType> {
|
||||
|
||||
template <class ViewType, class RandomPool, int loops, class IndexType>
|
||||
struct fill_random_functor_range<ViewType, RandomPool, loops, 7, IndexType> {
|
||||
typedef typename ViewType::execution_space execution_space;
|
||||
using execution_space = typename ViewType::execution_space;
|
||||
ViewType a;
|
||||
RandomPool rand_pool;
|
||||
typename ViewType::const_value_type range;
|
||||
|
||||
typedef rand<typename RandomPool::generator_type,
|
||||
typename ViewType::non_const_value_type>
|
||||
Rand;
|
||||
using Rand = rand<typename RandomPool::generator_type,
|
||||
typename ViewType::non_const_value_type>;
|
||||
|
||||
fill_random_functor_range(ViewType a_, RandomPool rand_pool_,
|
||||
typename ViewType::const_value_type range_)
|
||||
@ -1398,14 +1375,13 @@ struct fill_random_functor_range<ViewType, RandomPool, loops, 7, IndexType> {
|
||||
|
||||
template <class ViewType, class RandomPool, int loops, class IndexType>
|
||||
struct fill_random_functor_range<ViewType, RandomPool, loops, 8, IndexType> {
|
||||
typedef typename ViewType::execution_space execution_space;
|
||||
using execution_space = typename ViewType::execution_space;
|
||||
ViewType a;
|
||||
RandomPool rand_pool;
|
||||
typename ViewType::const_value_type range;
|
||||
|
||||
typedef rand<typename RandomPool::generator_type,
|
||||
typename ViewType::non_const_value_type>
|
||||
Rand;
|
||||
using Rand = rand<typename RandomPool::generator_type,
|
||||
typename ViewType::non_const_value_type>;
|
||||
|
||||
fill_random_functor_range(ViewType a_, RandomPool rand_pool_,
|
||||
typename ViewType::const_value_type range_)
|
||||
@ -1437,14 +1413,13 @@ struct fill_random_functor_range<ViewType, RandomPool, loops, 8, IndexType> {
|
||||
template <class ViewType, class RandomPool, int loops, class IndexType>
|
||||
struct fill_random_functor_begin_end<ViewType, RandomPool, loops, 1,
|
||||
IndexType> {
|
||||
typedef typename ViewType::execution_space execution_space;
|
||||
using execution_space = typename ViewType::execution_space;
|
||||
ViewType a;
|
||||
RandomPool rand_pool;
|
||||
typename ViewType::const_value_type begin, end;
|
||||
|
||||
typedef rand<typename RandomPool::generator_type,
|
||||
typename ViewType::non_const_value_type>
|
||||
Rand;
|
||||
using Rand = rand<typename RandomPool::generator_type,
|
||||
typename ViewType::non_const_value_type>;
|
||||
|
||||
fill_random_functor_begin_end(ViewType a_, RandomPool rand_pool_,
|
||||
typename ViewType::const_value_type begin_,
|
||||
@ -1466,14 +1441,13 @@ struct fill_random_functor_begin_end<ViewType, RandomPool, loops, 1,
|
||||
template <class ViewType, class RandomPool, int loops, class IndexType>
|
||||
struct fill_random_functor_begin_end<ViewType, RandomPool, loops, 2,
|
||||
IndexType> {
|
||||
typedef typename ViewType::execution_space execution_space;
|
||||
using execution_space = typename ViewType::execution_space;
|
||||
ViewType a;
|
||||
RandomPool rand_pool;
|
||||
typename ViewType::const_value_type begin, end;
|
||||
|
||||
typedef rand<typename RandomPool::generator_type,
|
||||
typename ViewType::non_const_value_type>
|
||||
Rand;
|
||||
using Rand = rand<typename RandomPool::generator_type,
|
||||
typename ViewType::non_const_value_type>;
|
||||
|
||||
fill_random_functor_begin_end(ViewType a_, RandomPool rand_pool_,
|
||||
typename ViewType::const_value_type begin_,
|
||||
@ -1497,14 +1471,13 @@ struct fill_random_functor_begin_end<ViewType, RandomPool, loops, 2,
|
||||
template <class ViewType, class RandomPool, int loops, class IndexType>
|
||||
struct fill_random_functor_begin_end<ViewType, RandomPool, loops, 3,
|
||||
IndexType> {
|
||||
typedef typename ViewType::execution_space execution_space;
|
||||
using execution_space = typename ViewType::execution_space;
|
||||
ViewType a;
|
||||
RandomPool rand_pool;
|
||||
typename ViewType::const_value_type begin, end;
|
||||
|
||||
typedef rand<typename RandomPool::generator_type,
|
||||
typename ViewType::non_const_value_type>
|
||||
Rand;
|
||||
using Rand = rand<typename RandomPool::generator_type,
|
||||
typename ViewType::non_const_value_type>;
|
||||
|
||||
fill_random_functor_begin_end(ViewType a_, RandomPool rand_pool_,
|
||||
typename ViewType::const_value_type begin_,
|
||||
@ -1529,14 +1502,13 @@ struct fill_random_functor_begin_end<ViewType, RandomPool, loops, 3,
|
||||
template <class ViewType, class RandomPool, int loops, class IndexType>
|
||||
struct fill_random_functor_begin_end<ViewType, RandomPool, loops, 4,
|
||||
IndexType> {
|
||||
typedef typename ViewType::execution_space execution_space;
|
||||
using execution_space = typename ViewType::execution_space;
|
||||
ViewType a;
|
||||
RandomPool rand_pool;
|
||||
typename ViewType::const_value_type begin, end;
|
||||
|
||||
typedef rand<typename RandomPool::generator_type,
|
||||
typename ViewType::non_const_value_type>
|
||||
Rand;
|
||||
using Rand = rand<typename RandomPool::generator_type,
|
||||
typename ViewType::non_const_value_type>;
|
||||
|
||||
fill_random_functor_begin_end(ViewType a_, RandomPool rand_pool_,
|
||||
typename ViewType::const_value_type begin_,
|
||||
@ -1562,14 +1534,13 @@ struct fill_random_functor_begin_end<ViewType, RandomPool, loops, 4,
|
||||
template <class ViewType, class RandomPool, int loops, class IndexType>
|
||||
struct fill_random_functor_begin_end<ViewType, RandomPool, loops, 5,
|
||||
IndexType> {
|
||||
typedef typename ViewType::execution_space execution_space;
|
||||
using execution_space = typename ViewType::execution_space;
|
||||
ViewType a;
|
||||
RandomPool rand_pool;
|
||||
typename ViewType::const_value_type begin, end;
|
||||
|
||||
typedef rand<typename RandomPool::generator_type,
|
||||
typename ViewType::non_const_value_type>
|
||||
Rand;
|
||||
using Rand = rand<typename RandomPool::generator_type,
|
||||
typename ViewType::non_const_value_type>;
|
||||
|
||||
fill_random_functor_begin_end(ViewType a_, RandomPool rand_pool_,
|
||||
typename ViewType::const_value_type begin_,
|
||||
@ -1597,14 +1568,13 @@ struct fill_random_functor_begin_end<ViewType, RandomPool, loops, 5,
|
||||
template <class ViewType, class RandomPool, int loops, class IndexType>
|
||||
struct fill_random_functor_begin_end<ViewType, RandomPool, loops, 6,
|
||||
IndexType> {
|
||||
typedef typename ViewType::execution_space execution_space;
|
||||
using execution_space = typename ViewType::execution_space;
|
||||
ViewType a;
|
||||
RandomPool rand_pool;
|
||||
typename ViewType::const_value_type begin, end;
|
||||
|
||||
typedef rand<typename RandomPool::generator_type,
|
||||
typename ViewType::non_const_value_type>
|
||||
Rand;
|
||||
using Rand = rand<typename RandomPool::generator_type,
|
||||
typename ViewType::non_const_value_type>;
|
||||
|
||||
fill_random_functor_begin_end(ViewType a_, RandomPool rand_pool_,
|
||||
typename ViewType::const_value_type begin_,
|
||||
@ -1634,14 +1604,13 @@ struct fill_random_functor_begin_end<ViewType, RandomPool, loops, 6,
|
||||
template <class ViewType, class RandomPool, int loops, class IndexType>
|
||||
struct fill_random_functor_begin_end<ViewType, RandomPool, loops, 7,
|
||||
IndexType> {
|
||||
typedef typename ViewType::execution_space execution_space;
|
||||
using execution_space = typename ViewType::execution_space;
|
||||
ViewType a;
|
||||
RandomPool rand_pool;
|
||||
typename ViewType::const_value_type begin, end;
|
||||
|
||||
typedef rand<typename RandomPool::generator_type,
|
||||
typename ViewType::non_const_value_type>
|
||||
Rand;
|
||||
using Rand = rand<typename RandomPool::generator_type,
|
||||
typename ViewType::non_const_value_type>;
|
||||
|
||||
fill_random_functor_begin_end(ViewType a_, RandomPool rand_pool_,
|
||||
typename ViewType::const_value_type begin_,
|
||||
@ -1673,14 +1642,13 @@ struct fill_random_functor_begin_end<ViewType, RandomPool, loops, 7,
|
||||
template <class ViewType, class RandomPool, int loops, class IndexType>
|
||||
struct fill_random_functor_begin_end<ViewType, RandomPool, loops, 8,
|
||||
IndexType> {
|
||||
typedef typename ViewType::execution_space execution_space;
|
||||
using execution_space = typename ViewType::execution_space;
|
||||
ViewType a;
|
||||
RandomPool rand_pool;
|
||||
typename ViewType::const_value_type begin, end;
|
||||
|
||||
typedef rand<typename RandomPool::generator_type,
|
||||
typename ViewType::non_const_value_type>
|
||||
Rand;
|
||||
using Rand = rand<typename RandomPool::generator_type,
|
||||
typename ViewType::non_const_value_type>;
|
||||
|
||||
fill_random_functor_begin_end(ViewType a_, RandomPool rand_pool_,
|
||||
typename ViewType::const_value_type begin_,
|
||||
|
||||
@ -95,9 +95,9 @@ class BinSort {
|
||||
public:
|
||||
template <class DstViewType, class SrcViewType>
|
||||
struct copy_functor {
|
||||
typedef typename SrcViewType::const_type src_view_type;
|
||||
using src_view_type = typename SrcViewType::const_type;
|
||||
|
||||
typedef Impl::CopyOp<DstViewType, src_view_type> copy_op;
|
||||
using copy_op = Impl::CopyOp<DstViewType, src_view_type>;
|
||||
|
||||
DstViewType dst_values;
|
||||
src_view_type src_values;
|
||||
@ -120,17 +120,17 @@ class BinSort {
|
||||
// If a Kokkos::View then can generate constant random access
|
||||
// otherwise can only use the constant type.
|
||||
|
||||
typedef typename std::conditional<
|
||||
using src_view_type = typename std::conditional<
|
||||
Kokkos::is_view<SrcViewType>::value,
|
||||
Kokkos::View<typename SrcViewType::const_data_type,
|
||||
typename SrcViewType::array_layout,
|
||||
typename SrcViewType::device_type,
|
||||
Kokkos::MemoryTraits<Kokkos::RandomAccess> >,
|
||||
typename SrcViewType::const_type>::type src_view_type;
|
||||
typename SrcViewType::const_type>::type;
|
||||
|
||||
typedef typename PermuteViewType::const_type perm_view_type;
|
||||
using perm_view_type = typename PermuteViewType::const_type;
|
||||
|
||||
typedef Impl::CopyOp<DstViewType, src_view_type> copy_op;
|
||||
using copy_op = Impl::CopyOp<DstViewType, src_view_type>;
|
||||
|
||||
DstViewType dst_values;
|
||||
perm_view_type sort_order;
|
||||
@ -151,8 +151,8 @@ class BinSort {
|
||||
}
|
||||
};
|
||||
|
||||
typedef typename Space::execution_space execution_space;
|
||||
typedef BinSortOp bin_op_type;
|
||||
using execution_space = typename Space::execution_space;
|
||||
using bin_op_type = BinSortOp;
|
||||
|
||||
struct bin_count_tag {};
|
||||
struct bin_offset_tag {};
|
||||
@ -160,30 +160,30 @@ class BinSort {
|
||||
struct bin_sort_bins_tag {};
|
||||
|
||||
public:
|
||||
typedef SizeType size_type;
|
||||
typedef size_type value_type;
|
||||
using size_type = SizeType;
|
||||
using value_type = size_type;
|
||||
|
||||
typedef Kokkos::View<size_type*, Space> offset_type;
|
||||
typedef Kokkos::View<const int*, Space> bin_count_type;
|
||||
using offset_type = Kokkos::View<size_type*, Space>;
|
||||
using bin_count_type = Kokkos::View<const int*, Space>;
|
||||
|
||||
typedef typename KeyViewType::const_type const_key_view_type;
|
||||
using const_key_view_type = typename KeyViewType::const_type;
|
||||
|
||||
// If a Kokkos::View then can generate constant random access
|
||||
// otherwise can only use the constant type.
|
||||
|
||||
typedef typename std::conditional<
|
||||
using const_rnd_key_view_type = typename std::conditional<
|
||||
Kokkos::is_view<KeyViewType>::value,
|
||||
Kokkos::View<typename KeyViewType::const_data_type,
|
||||
typename KeyViewType::array_layout,
|
||||
typename KeyViewType::device_type,
|
||||
Kokkos::MemoryTraits<Kokkos::RandomAccess> >,
|
||||
const_key_view_type>::type const_rnd_key_view_type;
|
||||
const_key_view_type>::type;
|
||||
|
||||
typedef typename KeyViewType::non_const_value_type non_const_key_scalar;
|
||||
typedef typename KeyViewType::const_value_type const_key_scalar;
|
||||
using non_const_key_scalar = typename KeyViewType::non_const_value_type;
|
||||
using const_key_scalar = typename KeyViewType::const_value_type;
|
||||
|
||||
typedef Kokkos::View<int*, Space, Kokkos::MemoryTraits<Kokkos::Atomic> >
|
||||
bin_count_atomic_type;
|
||||
using bin_count_atomic_type =
|
||||
Kokkos::View<int*, Space, Kokkos::MemoryTraits<Kokkos::Atomic> >;
|
||||
|
||||
private:
|
||||
const_key_view_type keys;
|
||||
@ -266,10 +266,10 @@ class BinSort {
|
||||
template <class ValuesViewType>
|
||||
void sort(ValuesViewType const& values, int values_range_begin,
|
||||
int values_range_end) const {
|
||||
typedef Kokkos::View<typename ValuesViewType::data_type,
|
||||
typename ValuesViewType::array_layout,
|
||||
typename ValuesViewType::device_type>
|
||||
scratch_view_type;
|
||||
using scratch_view_type =
|
||||
Kokkos::View<typename ValuesViewType::data_type,
|
||||
typename ValuesViewType::array_layout,
|
||||
typename ValuesViewType::device_type>;
|
||||
|
||||
const size_t len = range_end - range_begin;
|
||||
const size_t values_len = values_range_end - values_range_begin;
|
||||
@ -278,13 +278,6 @@ class BinSort {
|
||||
"BinSort::sort: values range length != permutation vector length");
|
||||
}
|
||||
|
||||
#ifdef KOKKOS_ENABLE_DEPRECATED_CODE
|
||||
scratch_view_type sorted_values(
|
||||
ViewAllocateWithoutInitializing(
|
||||
"Kokkos::SortImpl::BinSortFunctor::sorted_values"),
|
||||
len, values.extent(1), values.extent(2), values.extent(3),
|
||||
values.extent(4), values.extent(5), values.extent(6), values.extent(7));
|
||||
#else
|
||||
scratch_view_type sorted_values(
|
||||
ViewAllocateWithoutInitializing(
|
||||
"Kokkos::SortImpl::BinSortFunctor::sorted_values"),
|
||||
@ -303,7 +296,6 @@ class BinSort {
|
||||
: KOKKOS_IMPL_CTOR_DEFAULT_ARG,
|
||||
values.rank_dynamic > 7 ? values.extent(7)
|
||||
: KOKKOS_IMPL_CTOR_DEFAULT_ARG);
|
||||
#endif
|
||||
|
||||
{
|
||||
copy_permute_functor<scratch_view_type /* DstViewType */
|
||||
@ -511,8 +503,8 @@ bool try_std_sort(ViewType view) {
|
||||
|
||||
template <class ViewType>
|
||||
struct min_max_functor {
|
||||
typedef Kokkos::MinMaxScalar<typename ViewType::non_const_value_type>
|
||||
minmax_scalar;
|
||||
using minmax_scalar =
|
||||
Kokkos::MinMaxScalar<typename ViewType::non_const_value_type>;
|
||||
|
||||
ViewType view;
|
||||
min_max_functor(const ViewType& view_) : view(view_) {}
|
||||
@ -531,7 +523,7 @@ void sort(ViewType const& view, bool const always_use_kokkos_sort = false) {
|
||||
if (!always_use_kokkos_sort) {
|
||||
if (Impl::try_std_sort(view)) return;
|
||||
}
|
||||
typedef BinOp1D<ViewType> CompType;
|
||||
using CompType = BinOp1D<ViewType>;
|
||||
|
||||
Kokkos::MinMaxScalar<typename ViewType::non_const_value_type> result;
|
||||
Kokkos::MinMax<typename ViewType::non_const_value_type> reducer(result);
|
||||
@ -548,8 +540,8 @@ void sort(ViewType const& view, bool const always_use_kokkos_sort = false) {
|
||||
|
||||
template <class ViewType>
|
||||
void sort(ViewType view, size_t const begin, size_t const end) {
|
||||
typedef Kokkos::RangePolicy<typename ViewType::execution_space> range_policy;
|
||||
typedef BinOp1D<ViewType> CompType;
|
||||
using range_policy = Kokkos::RangePolicy<typename ViewType::execution_space>;
|
||||
using CompType = BinOp1D<ViewType>;
|
||||
|
||||
Kokkos::MinMaxScalar<typename ViewType::non_const_value_type> result;
|
||||
Kokkos::MinMax<typename ViewType::non_const_value_type> reducer(result);
|
||||
|
||||
@ -20,14 +20,18 @@ KOKKOS_ADD_TEST_LIBRARY(
|
||||
HEADERS ${GTEST_SOURCE_DIR}/gtest/gtest.h
|
||||
SOURCES ${GTEST_SOURCE_DIR}/gtest/gtest-all.cc
|
||||
)
|
||||
# WORKAROUND FOR HIPCC
|
||||
IF(Kokkos_ENABLE_HIP)
|
||||
TARGET_COMPILE_DEFINITIONS(kokkosalgorithms_gtest PUBLIC "-DGTEST_HAS_PTHREAD=0 --amdgpu-target=gfx906")
|
||||
ELSE()
|
||||
TARGET_COMPILE_DEFINITIONS(kokkosalgorithms_gtest PUBLIC "-DGTEST_HAS_PTHREAD=0")
|
||||
|
||||
# avoid deprecation warnings from MSVC
|
||||
TARGET_COMPILE_DEFINITIONS(kokkosalgorithms_gtest PUBLIC GTEST_HAS_TR1_TUPLE=0 GTEST_HAS_PTHREAD=0)
|
||||
|
||||
IF(NOT (Kokkos_ENABLE_CUDA AND WIN32))
|
||||
TARGET_COMPILE_FEATURES(kokkosalgorithms_gtest PUBLIC cxx_std_11)
|
||||
ENDIF()
|
||||
|
||||
TARGET_COMPILE_FEATURES(kokkosalgorithms_gtest PUBLIC cxx_std_11)
|
||||
# Suppress clang-tidy diagnostics on code that we do not have control over
|
||||
IF(CMAKE_CXX_CLANG_TIDY)
|
||||
SET_TARGET_PROPERTIES(kokkosalgorithms_gtest PROPERTIES CXX_CLANG_TIDY "")
|
||||
ENDIF()
|
||||
|
||||
SET(SOURCES
|
||||
UnitTestMain.cpp
|
||||
|
||||
@ -111,10 +111,10 @@ struct RandomProperties {
|
||||
|
||||
template <class GeneratorPool, class Scalar>
|
||||
struct test_random_functor {
|
||||
typedef typename GeneratorPool::generator_type rnd_type;
|
||||
using rnd_type = typename GeneratorPool::generator_type;
|
||||
|
||||
typedef RandomProperties value_type;
|
||||
typedef typename GeneratorPool::device_type device_type;
|
||||
using value_type = RandomProperties;
|
||||
using device_type = typename GeneratorPool::device_type;
|
||||
|
||||
GeneratorPool rand_pool;
|
||||
const double mean;
|
||||
@ -125,12 +125,12 @@ struct test_random_functor {
|
||||
// implementations might violate this upper bound, due to rounding
|
||||
// error. Just in case, we leave an extra space at the end of each
|
||||
// dimension, in the View types below.
|
||||
typedef Kokkos::View<int[HIST_DIM1D + 1], typename GeneratorPool::device_type>
|
||||
type_1d;
|
||||
using type_1d =
|
||||
Kokkos::View<int[HIST_DIM1D + 1], typename GeneratorPool::device_type>;
|
||||
type_1d density_1d;
|
||||
typedef Kokkos::View<int[HIST_DIM3D + 1][HIST_DIM3D + 1][HIST_DIM3D + 1],
|
||||
typename GeneratorPool::device_type>
|
||||
type_3d;
|
||||
using type_3d =
|
||||
Kokkos::View<int[HIST_DIM3D + 1][HIST_DIM3D + 1][HIST_DIM3D + 1],
|
||||
typename GeneratorPool::device_type>;
|
||||
type_3d density_3d;
|
||||
|
||||
test_random_functor(GeneratorPool rand_pool_, type_1d d1d, type_3d d3d)
|
||||
@ -200,9 +200,9 @@ struct test_random_functor {
|
||||
|
||||
template <class DeviceType>
|
||||
struct test_histogram1d_functor {
|
||||
typedef RandomProperties value_type;
|
||||
typedef typename DeviceType::execution_space execution_space;
|
||||
typedef typename DeviceType::memory_space memory_space;
|
||||
using value_type = RandomProperties;
|
||||
using execution_space = typename DeviceType::execution_space;
|
||||
using memory_space = typename DeviceType::memory_space;
|
||||
|
||||
// NOTE (mfh 03 Nov 2014): Kokkos::rand::max() is supposed to define
|
||||
// an exclusive upper bound on the range of random numbers that
|
||||
@ -210,7 +210,7 @@ struct test_histogram1d_functor {
|
||||
// implementations might violate this upper bound, due to rounding
|
||||
// error. Just in case, we leave an extra space at the end of each
|
||||
// dimension, in the View type below.
|
||||
typedef Kokkos::View<int[HIST_DIM1D + 1], memory_space> type_1d;
|
||||
using type_1d = Kokkos::View<int[HIST_DIM1D + 1], memory_space>;
|
||||
type_1d density_1d;
|
||||
double mean;
|
||||
|
||||
@ -219,7 +219,7 @@ struct test_histogram1d_functor {
|
||||
|
||||
KOKKOS_INLINE_FUNCTION void operator()(
|
||||
const typename memory_space::size_type i, RandomProperties& prop) const {
|
||||
typedef typename memory_space::size_type size_type;
|
||||
using size_type = typename memory_space::size_type;
|
||||
const double count = density_1d(i);
|
||||
prop.mean += count;
|
||||
prop.variance += 1.0 * (count - mean) * (count - mean);
|
||||
@ -234,9 +234,9 @@ struct test_histogram1d_functor {
|
||||
|
||||
template <class DeviceType>
|
||||
struct test_histogram3d_functor {
|
||||
typedef RandomProperties value_type;
|
||||
typedef typename DeviceType::execution_space execution_space;
|
||||
typedef typename DeviceType::memory_space memory_space;
|
||||
using value_type = RandomProperties;
|
||||
using execution_space = typename DeviceType::execution_space;
|
||||
using memory_space = typename DeviceType::memory_space;
|
||||
|
||||
// NOTE (mfh 03 Nov 2014): Kokkos::rand::max() is supposed to define
|
||||
// an exclusive upper bound on the range of random numbers that
|
||||
@ -244,9 +244,9 @@ struct test_histogram3d_functor {
|
||||
// implementations might violate this upper bound, due to rounding
|
||||
// error. Just in case, we leave an extra space at the end of each
|
||||
// dimension, in the View type below.
|
||||
typedef Kokkos::View<int[HIST_DIM3D + 1][HIST_DIM3D + 1][HIST_DIM3D + 1],
|
||||
memory_space>
|
||||
type_3d;
|
||||
using type_3d =
|
||||
Kokkos::View<int[HIST_DIM3D + 1][HIST_DIM3D + 1][HIST_DIM3D + 1],
|
||||
memory_space>;
|
||||
type_3d density_3d;
|
||||
double mean;
|
||||
|
||||
@ -255,7 +255,7 @@ struct test_histogram3d_functor {
|
||||
|
||||
KOKKOS_INLINE_FUNCTION void operator()(
|
||||
const typename memory_space::size_type i, RandomProperties& prop) const {
|
||||
typedef typename memory_space::size_type size_type;
|
||||
using size_type = typename memory_space::size_type;
|
||||
const double count = density_3d(
|
||||
i / (HIST_DIM3D * HIST_DIM3D),
|
||||
(i % (HIST_DIM3D * HIST_DIM3D)) / HIST_DIM3D, i % HIST_DIM3D);
|
||||
@ -276,7 +276,7 @@ struct test_histogram3d_functor {
|
||||
//
|
||||
template <class RandomGenerator, class Scalar>
|
||||
struct test_random_scalar {
|
||||
typedef typename RandomGenerator::generator_type rnd_type;
|
||||
using rnd_type = typename RandomGenerator::generator_type;
|
||||
|
||||
int pass_mean, pass_var, pass_covar;
|
||||
int pass_hist1d_mean, pass_hist1d_var, pass_hist1d_covar;
|
||||
@ -294,7 +294,7 @@ struct test_random_scalar {
|
||||
cout << " -- Testing randomness properties" << endl;
|
||||
|
||||
RandomProperties result;
|
||||
typedef test_random_functor<RandomGenerator, Scalar> functor_type;
|
||||
using functor_type = test_random_functor<RandomGenerator, Scalar>;
|
||||
parallel_reduce(num_draws / 1024,
|
||||
functor_type(pool, density_1d, density_3d), result);
|
||||
|
||||
@ -325,8 +325,8 @@ struct test_random_scalar {
|
||||
cout << " -- Testing 1-D histogram" << endl;
|
||||
|
||||
RandomProperties result;
|
||||
typedef test_histogram1d_functor<typename RandomGenerator::device_type>
|
||||
functor_type;
|
||||
using functor_type =
|
||||
test_histogram1d_functor<typename RandomGenerator::device_type>;
|
||||
parallel_reduce(HIST_DIM1D, functor_type(density_1d, num_draws), result);
|
||||
|
||||
double tolerance = 6 * std::sqrt(1.0 / HIST_DIM1D);
|
||||
@ -357,8 +357,8 @@ struct test_random_scalar {
|
||||
cout << " -- Testing 3-D histogram" << endl;
|
||||
|
||||
RandomProperties result;
|
||||
typedef test_histogram3d_functor<typename RandomGenerator::device_type>
|
||||
functor_type;
|
||||
using functor_type =
|
||||
test_histogram3d_functor<typename RandomGenerator::device_type>;
|
||||
parallel_reduce(HIST_DIM1D, functor_type(density_3d, num_draws), result);
|
||||
|
||||
double tolerance = 6 * std::sqrt(1.0 / HIST_DIM1D);
|
||||
|
||||
@ -55,8 +55,8 @@ namespace Impl {
|
||||
|
||||
template <class ExecutionSpace, class Scalar>
|
||||
struct is_sorted_struct {
|
||||
typedef unsigned int value_type;
|
||||
typedef ExecutionSpace execution_space;
|
||||
using value_type = unsigned int;
|
||||
using execution_space = ExecutionSpace;
|
||||
|
||||
Kokkos::View<Scalar*, ExecutionSpace> keys;
|
||||
|
||||
@ -69,8 +69,8 @@ struct is_sorted_struct {
|
||||
|
||||
template <class ExecutionSpace, class Scalar>
|
||||
struct sum {
|
||||
typedef double value_type;
|
||||
typedef ExecutionSpace execution_space;
|
||||
using value_type = double;
|
||||
using execution_space = ExecutionSpace;
|
||||
|
||||
Kokkos::View<Scalar*, ExecutionSpace> keys;
|
||||
|
||||
@ -81,8 +81,8 @@ struct sum {
|
||||
|
||||
template <class ExecutionSpace, class Scalar>
|
||||
struct bin3d_is_sorted_struct {
|
||||
typedef unsigned int value_type;
|
||||
typedef ExecutionSpace execution_space;
|
||||
using value_type = unsigned int;
|
||||
using execution_space = ExecutionSpace;
|
||||
|
||||
Kokkos::View<Scalar * [3], ExecutionSpace> keys;
|
||||
|
||||
@ -115,8 +115,8 @@ struct bin3d_is_sorted_struct {
|
||||
|
||||
template <class ExecutionSpace, class Scalar>
|
||||
struct sum3D {
|
||||
typedef double value_type;
|
||||
typedef ExecutionSpace execution_space;
|
||||
using value_type = double;
|
||||
using execution_space = ExecutionSpace;
|
||||
|
||||
Kokkos::View<Scalar * [3], ExecutionSpace> keys;
|
||||
|
||||
@ -131,7 +131,7 @@ struct sum3D {
|
||||
|
||||
template <class ExecutionSpace, typename KeyType>
|
||||
void test_1D_sort_impl(unsigned int n, bool force_kokkos) {
|
||||
typedef Kokkos::View<KeyType*, ExecutionSpace> KeyViewType;
|
||||
using KeyViewType = Kokkos::View<KeyType*, ExecutionSpace>;
|
||||
KeyViewType keys("Keys", n);
|
||||
|
||||
// Test sorting array with all numbers equal
|
||||
@ -166,7 +166,7 @@ void test_1D_sort_impl(unsigned int n, bool force_kokkos) {
|
||||
|
||||
template <class ExecutionSpace, typename KeyType>
|
||||
void test_3D_sort_impl(unsigned int n) {
|
||||
typedef Kokkos::View<KeyType * [3], ExecutionSpace> KeyViewType;
|
||||
using KeyViewType = Kokkos::View<KeyType * [3], ExecutionSpace>;
|
||||
|
||||
KeyViewType keys("Keys", n * n * n);
|
||||
|
||||
@ -186,7 +186,7 @@ void test_3D_sort_impl(unsigned int n) {
|
||||
typename KeyViewType::value_type min[3] = {0, 0, 0};
|
||||
typename KeyViewType::value_type max[3] = {100, 100, 100};
|
||||
|
||||
typedef Kokkos::BinOp3D<KeyViewType> BinOp;
|
||||
using BinOp = Kokkos::BinOp3D<KeyViewType>;
|
||||
BinOp bin_op(bin_max, min, max);
|
||||
Kokkos::BinSort<KeyViewType, BinOp> Sorter(keys, bin_op, false);
|
||||
Sorter.create_permute_vector();
|
||||
@ -215,9 +215,9 @@ void test_3D_sort_impl(unsigned int n) {
|
||||
|
||||
template <class ExecutionSpace, typename KeyType>
|
||||
void test_dynamic_view_sort_impl(unsigned int n) {
|
||||
typedef Kokkos::Experimental::DynamicView<KeyType*, ExecutionSpace>
|
||||
KeyDynamicViewType;
|
||||
typedef Kokkos::View<KeyType*, ExecutionSpace> KeyViewType;
|
||||
using KeyDynamicViewType =
|
||||
Kokkos::Experimental::DynamicView<KeyType*, ExecutionSpace>;
|
||||
using KeyViewType = Kokkos::View<KeyType*, ExecutionSpace>;
|
||||
|
||||
const size_t upper_bound = 2 * n;
|
||||
const size_t min_chunk_size = 1024;
|
||||
@ -305,8 +305,8 @@ void test_issue_1160_impl() {
|
||||
Kokkos::deep_copy(x_, h_x);
|
||||
Kokkos::deep_copy(v_, h_v);
|
||||
|
||||
typedef decltype(element_) KeyViewType;
|
||||
typedef Kokkos::BinOp1D<KeyViewType> BinOp;
|
||||
using KeyViewType = decltype(element_);
|
||||
using BinOp = Kokkos::BinOp1D<KeyViewType>;
|
||||
|
||||
int begin = 3;
|
||||
int end = 8;
|
||||
|
||||
Reference in New Issue
Block a user