Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions src/care/KeyValueSorter_decl.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ namespace care {
/// to make this GPU friendly.
///////////////////////////////////////////////////////////////////////////
template <typename KeyType, typename ValueType, typename Exec=RAJAExec>
class CARE_DLL_API KeyValueSorter;
class CARE_KEY_VALUE_SORTER_DLL_API KeyValueSorter;

/// LocalKeyValueSorter should be used as the type for HOSTDEV functions
/// to indicate that the function should only be called in a RAJA context.
Expand Down Expand Up @@ -127,7 +127,7 @@ size_t eliminateKeyValueDuplicates(host_device_ptr<KeyType>& newKeys,
/// arrays to be compatible with sortKeyValueArrays.
///////////////////////////////////////////////////////////////////////////
template <typename KeyType, typename ValueType>
class CARE_DLL_API KeyValueSorter<KeyType, ValueType, RAJADeviceExec> {
class CARE_KEY_VALUE_SORTER_DLL_API KeyValueSorter<KeyType, ValueType, RAJADeviceExec> {
public:

///////////////////////////////////////////////////////////////////////////
Expand Down Expand Up @@ -854,7 +854,7 @@ void initializeValueArray(host_device_ptr<ValueType>& values, const host_device_
/// the need for copying the keys and values into separate arrays after the sort.
///////////////////////////////////////////////////////////////////////////
template <typename KeyType, typename ValueType>
class CARE_DLL_API KeyValueSorter<KeyType, ValueType, RAJA::seq_exec> {
class CARE_KEY_VALUE_SORTER_DLL_API KeyValueSorter<KeyType, ValueType, RAJA::seq_exec> {
public:

///////////////////////////////////////////////////////////////////////////
Expand Down
30 changes: 16 additions & 14 deletions src/care/KeyValueSorter_inst.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,30 +32,32 @@

namespace care {

CARE_EXTERN template CARE_DLL_API void setKeyValueArraysFromArray(host_device_ptr<_kv<CARE_TEMPLATE_KEY_TYPE, CARE_TEMPLATE_ARRAY_TYPE> > &, const size_t, const CARE_TEMPLATE_ARRAY_TYPE*);
CARE_EXTERN template CARE_DLL_API void setKeyValueArraysFromManagedArray(host_device_ptr<_kv<CARE_TEMPLATE_KEY_TYPE, CARE_TEMPLATE_ARRAY_TYPE> > &, const size_t, const host_device_ptr<const CARE_TEMPLATE_ARRAY_TYPE>&);
CARE_EXTERN template CARE_DLL_API size_t eliminateKeyValueDuplicates(host_device_ptr<_kv<CARE_TEMPLATE_KEY_TYPE, CARE_TEMPLATE_ARRAY_TYPE> > &, const size_t);
CARE_EXTERN template CARE_DLL_API void initializeKeyArray(host_device_ptr<CARE_TEMPLATE_KEY_TYPE>&, const host_device_ptr<const _kv<CARE_TEMPLATE_KEY_TYPE, CARE_TEMPLATE_ARRAY_TYPE> >&, const size_t);
CARE_EXTERN template CARE_DLL_API void initializeValueArray(host_device_ptr<CARE_TEMPLATE_ARRAY_TYPE>&, const host_device_ptr<const _kv<CARE_TEMPLATE_KEY_TYPE, CARE_TEMPLATE_ARRAY_TYPE> >&, const size_t);
CARE_EXTERN template CARE_KEY_VALUE_SORTER_DLL_API void setKeyValueArraysFromArray(host_device_ptr<_kv<CARE_TEMPLATE_KEY_TYPE, CARE_TEMPLATE_ARRAY_TYPE> > &, const size_t, const CARE_TEMPLATE_ARRAY_TYPE*);
CARE_EXTERN template CARE_KEY_VALUE_SORTER_DLL_API void setKeyValueArraysFromManagedArray(host_device_ptr<_kv<CARE_TEMPLATE_KEY_TYPE, CARE_TEMPLATE_ARRAY_TYPE> > &, const size_t, const host_device_ptr<const CARE_TEMPLATE_ARRAY_TYPE>&);
CARE_EXTERN template CARE_KEY_VALUE_SORTER_DLL_API size_t eliminateKeyValueDuplicates(host_device_ptr<_kv<CARE_TEMPLATE_KEY_TYPE, CARE_TEMPLATE_ARRAY_TYPE> > &, const size_t);
CARE_EXTERN template CARE_KEY_VALUE_SORTER_DLL_API void initializeKeyArray(host_device_ptr<CARE_TEMPLATE_KEY_TYPE>&, const host_device_ptr<const _kv<CARE_TEMPLATE_KEY_TYPE, CARE_TEMPLATE_ARRAY_TYPE> >&, const size_t);
CARE_EXTERN template CARE_KEY_VALUE_SORTER_DLL_API void initializeValueArray(host_device_ptr<CARE_TEMPLATE_ARRAY_TYPE>&, const host_device_ptr<const _kv<CARE_TEMPLATE_KEY_TYPE, CARE_TEMPLATE_ARRAY_TYPE> >&, const size_t);

#if !CARE_ENABLE_GPU_SIMULATION_MODE
CARE_EXTERN template class CARE_DLL_API KeyValueSorter<CARE_TEMPLATE_KEY_TYPE, CARE_TEMPLATE_ARRAY_TYPE, RAJA::seq_exec>;
CARE_EXTERN template CARE_DLL_API void IntersectKeyValueSorters(RAJA::seq_exec, KeyValueSorter<CARE_TEMPLATE_KEY_TYPE, CARE_TEMPLATE_ARRAY_TYPE, RAJA::seq_exec>, int, KeyValueSorter<CARE_TEMPLATE_KEY_TYPE, CARE_TEMPLATE_ARRAY_TYPE, RAJA::seq_exec>, int, host_device_ptr<CARE_TEMPLATE_KEY_TYPE> &, host_device_ptr<CARE_TEMPLATE_KEY_TYPE> &, int &);
CARE_EXTERN template CARE_DLL_API void sortKeyValueArrays<RAJA::seq_exec, CARE_TEMPLATE_KEY_TYPE, CARE_TEMPLATE_ARRAY_TYPE>(host_device_ptr<CARE_TEMPLATE_KEY_TYPE> &, host_device_ptr<CARE_TEMPLATE_ARRAY_TYPE> &, const size_t, const size_t, const bool);
CARE_EXTERN template class CARE_KEY_VALUE_SORTER_DLL_API KeyValueSorter<CARE_TEMPLATE_KEY_TYPE, CARE_TEMPLATE_ARRAY_TYPE, RAJA::seq_exec>;
CARE_EXTERN template CARE_KEY_VALUE_SORTER_DLL_API void IntersectKeyValueSorters(RAJA::seq_exec, KeyValueSorter<CARE_TEMPLATE_KEY_TYPE, CARE_TEMPLATE_ARRAY_TYPE, RAJA::seq_exec>, int, KeyValueSorter<CARE_TEMPLATE_KEY_TYPE, CARE_TEMPLATE_ARRAY_TYPE, RAJA::seq_exec>, int, host_device_ptr<CARE_TEMPLATE_KEY_TYPE> &, host_device_ptr<CARE_TEMPLATE_KEY_TYPE> &, int &);
CARE_EXTERN template CARE_KEY_VALUE_SORTER_DLL_API void sortKeyValueArrays<RAJA::seq_exec, CARE_TEMPLATE_KEY_TYPE, CARE_TEMPLATE_ARRAY_TYPE>(host_device_ptr<CARE_TEMPLATE_KEY_TYPE> &, host_device_ptr<CARE_TEMPLATE_ARRAY_TYPE> &, const size_t, const size_t, const bool);

#endif // !CARE_ENABLE_GPU_SIMULATION_MODE


#if defined(CARE_PARALLEL_DEVICE) || CARE_ENABLE_GPU_SIMULATION_MODE

CARE_EXTERN template CARE_DLL_API void sortKeyValueArrays<RAJADeviceExec, CARE_TEMPLATE_KEY_TYPE, CARE_TEMPLATE_ARRAY_TYPE>(host_device_ptr<CARE_TEMPLATE_KEY_TYPE> &, host_device_ptr<CARE_TEMPLATE_ARRAY_TYPE> &, const size_t, const size_t, const bool);
CARE_EXTERN template CARE_DLL_API void setKeyValueArraysFromArray(host_device_ptr<CARE_TEMPLATE_KEY_TYPE> &, host_device_ptr<CARE_TEMPLATE_ARRAY_TYPE> &, const size_t, const CARE_TEMPLATE_ARRAY_TYPE*);
CARE_EXTERN template CARE_DLL_API void setKeyValueArraysFromManagedArray(host_device_ptr<CARE_TEMPLATE_KEY_TYPE> &, host_device_ptr<CARE_TEMPLATE_ARRAY_TYPE> &, const size_t, const host_device_ptr<const CARE_TEMPLATE_ARRAY_TYPE>&);
CARE_EXTERN template CARE_DLL_API size_t eliminateKeyValueDuplicates(host_device_ptr<CARE_TEMPLATE_KEY_TYPE>&, host_device_ptr<CARE_TEMPLATE_ARRAY_TYPE>&, const host_device_ptr<const CARE_TEMPLATE_KEY_TYPE>&, const host_device_ptr<const CARE_TEMPLATE_ARRAY_TYPE>&, const size_t);
CARE_EXTERN template CARE_KEY_VALUE_SORTER_DLL_API void sortKeyValueArrays<RAJADeviceExec, CARE_TEMPLATE_KEY_TYPE, CARE_TEMPLATE_ARRAY_TYPE>(host_device_ptr<CARE_TEMPLATE_KEY_TYPE> &, host_device_ptr<CARE_TEMPLATE_ARRAY_TYPE> &, const size_t, const size_t, const bool);
CARE_EXTERN template CARE_KEY_VALUE_SORTER_DLL_API void setKeyValueArraysFromArray(host_device_ptr<CARE_TEMPLATE_KEY_TYPE> &, host_device_ptr<CARE_TEMPLATE_ARRAY_TYPE> &, const size_t, const CARE_TEMPLATE_ARRAY_TYPE*);
CARE_EXTERN template CARE_KEY_VALUE_SORTER_DLL_API void setKeyValueArraysFromManagedArray(host_device_ptr<CARE_TEMPLATE_KEY_TYPE> &, host_device_ptr<CARE_TEMPLATE_ARRAY_TYPE> &, const size_t, const host_device_ptr<const CARE_TEMPLATE_ARRAY_TYPE>&);
CARE_EXTERN template CARE_KEY_VALUE_SORTER_DLL_API size_t eliminateKeyValueDuplicates(host_device_ptr<CARE_TEMPLATE_KEY_TYPE>&, host_device_ptr<CARE_TEMPLATE_ARRAY_TYPE>&, const host_device_ptr<const CARE_TEMPLATE_KEY_TYPE>&, const host_device_ptr<const CARE_TEMPLATE_ARRAY_TYPE>&, const size_t);

CARE_EXTERN template class CARE_DLL_API KeyValueSorter<CARE_TEMPLATE_KEY_TYPE, CARE_TEMPLATE_ARRAY_TYPE, RAJADeviceExec>;
CARE_EXTERN template class CARE_KEY_VALUE_SORTER_DLL_API KeyValueSorter<CARE_TEMPLATE_KEY_TYPE, CARE_TEMPLATE_ARRAY_TYPE, RAJADeviceExec>;

CARE_EXTERN template CARE_DLL_API void IntersectKeyValueSorters(RAJADeviceExec, KeyValueSorter<CARE_TEMPLATE_KEY_TYPE, CARE_TEMPLATE_ARRAY_TYPE, RAJADeviceExec>, int, KeyValueSorter<CARE_TEMPLATE_KEY_TYPE, CARE_TEMPLATE_ARRAY_TYPE, RAJADeviceExec>, int, host_device_ptr<CARE_TEMPLATE_KEY_TYPE> &, host_device_ptr<CARE_TEMPLATE_KEY_TYPE> &, int &);
CARE_EXTERN template CARE_KEY_VALUE_SORTER_DLL_API void IntersectKeyValueSorters(RAJADeviceExec, KeyValueSorter<CARE_TEMPLATE_KEY_TYPE, CARE_TEMPLATE_ARRAY_TYPE, RAJADeviceExec>, int, KeyValueSorter<CARE_TEMPLATE_KEY_TYPE, CARE_TEMPLATE_ARRAY_TYPE, RAJADeviceExec>, int, host_device_ptr<CARE_TEMPLATE_KEY_TYPE> &, host_device_ptr<CARE_TEMPLATE_KEY_TYPE> &, int &);

CARE_EXTERN template CARE_KEY_VALUE_SORTER_DLL_API void IntersectKeyValueSorters(RAJADeviceExec, KeyValueSorter<CARE_TEMPLATE_KEY_TYPE, CARE_TEMPLATE_ARRAY_TYPE, RAJADeviceExec>, size_t, KeyValueSorter<CARE_TEMPLATE_KEY_TYPE, CARE_TEMPLATE_ARRAY_TYPE, RAJADeviceExec>, size_t, host_device_ptr<CARE_TEMPLATE_KEY_TYPE> &, host_device_ptr<CARE_TEMPLATE_KEY_TYPE>&, size_t&);

#endif // defined(CARE_PARALLEL_DEVICE) || CARE_ENABLE_GPU_SIMULATION_MODE

Expand Down
4 changes: 4 additions & 0 deletions src/care/config.h.in
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,10 @@
#define CARE_DLL_API
#endif // defined(_WIN32) && !defined(CARESTATICLIB)

#ifndef CARE_KEY_VALUE_SORTER_DLL_API
#define CARE_KEY_VALUE_SORTER_DLL_API CARE_DLL_API
#endif

#define CARE_STRINGIFY(x) CARE_DO_STRINGIFY(x)
#define CARE_DO_STRINGIFY(x) #x
#ifdef _WIN32
Expand Down
Loading