Skip to content
Snippets Groups Projects
Commit fb0ad1a1 authored by Kenneth Moreland's avatar Kenneth Moreland
Browse files

Reduce the number of precompiled Keys instantiations

Previously, we precompiled just about any version of Keys that you could
be expected to use. This caused the time to compile Keys to be
unnecessarily long.

This reduces the compilation to types that are actually likely to be
used as keys. Also removed the less likely to be used build methods.
parent 6ea55f83
No related branches found
No related tags found
Loading
......@@ -21,45 +21,22 @@
#define vtk_m_worklet_Keys_cxx
#include <vtkm/worklet/Keys.h>
#define VTK_M_RM_PAREN(T) vtkm::cont::detail::GetTypeInParentheses<void T>::type
#define VTK_M_KEYS_EXPORT_TYPE(T) \
template class VTKM_WORKLET_EXPORT vtkm::worklet::Keys<VTK_M_RM_PAREN(T)>; \
template VTKM_WORKLET_EXPORT VTKM_CONT void vtkm::worklet::Keys<VTK_M_RM_PAREN(T)>::BuildArrays( \
const vtkm::cont::ArrayHandle<VTK_M_RM_PAREN(T)>& keys, \
#define VTK_M_KEYS_EXPORT(T) \
template class VTKM_WORKLET_EXPORT vtkm::worklet::Keys<T>; \
template VTKM_WORKLET_EXPORT VTKM_CONT void vtkm::worklet::Keys<T>::BuildArrays( \
const vtkm::cont::ArrayHandle<T>& keys, \
vtkm::worklet::KeysSortType sort, \
vtkm::cont::DeviceAdapterId device); \
template VTKM_WORKLET_EXPORT VTKM_CONT void vtkm::worklet::Keys<VTK_M_RM_PAREN(T)>::BuildArrays( \
const vtkm::cont::ArrayHandleVirtual<VTK_M_RM_PAREN(T)>& keys, \
template VTKM_WORKLET_EXPORT VTKM_CONT void vtkm::worklet::Keys<T>::BuildArrays( \
const vtkm::cont::ArrayHandleVirtual<T>& keys, \
vtkm::worklet::KeysSortType sort, \
vtkm::cont::DeviceAdapterId device); \
template VTKM_WORKLET_EXPORT VTKM_CONT void vtkm::worklet::Keys<VTK_M_RM_PAREN( \
T)>::BuildArraysInPlace(vtkm::cont::ArrayHandle<VTK_M_RM_PAREN(T)>& keys, \
vtkm::worklet::KeysSortType sort, \
vtkm::cont::DeviceAdapterId device); \
extern template VTKM_WORKLET_EXPORT VTKM_CONT void vtkm::worklet::Keys<VTK_M_RM_PAREN( \
T)>::BuildArraysInPlace(vtkm::cont::ArrayHandleVirtual<VTK_M_RM_PAREN(T)>& keys, \
vtkm::worklet::KeysSortType sort, \
vtkm::cont::DeviceAdapterId device)
#define VTK_M_KEYS_EXPORT(T) \
VTK_M_KEYS_EXPORT_TYPE((T)); \
VTK_M_KEYS_EXPORT_TYPE((vtkm::Vec<T, 2>)); \
VTK_M_KEYS_EXPORT_TYPE((vtkm::Vec<T, 3>)); \
VTK_M_KEYS_EXPORT_TYPE((vtkm::Vec<T, 4>))
vtkm::cont::DeviceAdapterId device)
VTK_M_KEYS_EXPORT(char);
VTK_M_KEYS_EXPORT(vtkm::Int8);
VTK_M_KEYS_EXPORT(vtkm::UInt8);
VTK_M_KEYS_EXPORT(vtkm::Int16);
VTK_M_KEYS_EXPORT(vtkm::UInt16);
VTK_M_KEYS_EXPORT(vtkm::Int32);
VTK_M_KEYS_EXPORT(vtkm::UInt32);
VTK_M_KEYS_EXPORT(vtkm::Int64);
VTK_M_KEYS_EXPORT(vtkm::UInt64);
VTK_M_KEYS_EXPORT(vtkm::Float32);
VTK_M_KEYS_EXPORT(vtkm::Float64);
VTK_M_KEYS_EXPORT(vtkm::HashType);
VTK_M_KEYS_EXPORT(vtkm::Id);
VTK_M_KEYS_EXPORT(vtkm::Id3);
#ifdef VTKM_USE_64BIT_IDS
VTK_M_KEYS_EXPORT(vtkm::IdComponent);
#endif
#undef VTK_M_KEYS_EXPORT
#undef VTK_M_KEYS_EXPORT_TYPE
#undef VTK_M_RM_PAREN
......@@ -30,6 +30,8 @@
#include <vtkm/cont/ArrayHandleVirtual.h>
#include <vtkm/cont/Logging.h>
#include <vtkm/Hash.h>
#include <vtkm/exec/internal/ReduceByKeyLookup.h>
#include <vtkm/cont/arg/TransportTagKeyedValuesIn.h>
......@@ -430,48 +432,25 @@ struct Transport<vtkm::cont::arg::TransportTagKeyedValuesOut, ArrayHandleType, D
#ifndef vtk_m_worklet_Keys_cxx
#define VTK_M_RM_PAREN(T) vtkm::cont::detail::GetTypeInParentheses<void T>::type
#define VTK_M_KEYS_EXPORT_TYPE(T) \
extern template class VTKM_WORKLET_TEMPLATE_EXPORT vtkm::worklet::Keys<VTK_M_RM_PAREN(T)>; \
extern template VTKM_WORKLET_TEMPLATE_EXPORT VTKM_CONT void vtkm::worklet::Keys<VTK_M_RM_PAREN( \
T)>::BuildArrays(const vtkm::cont::ArrayHandle<VTK_M_RM_PAREN(T)>& keys, \
vtkm::worklet::KeysSortType sort, \
vtkm::cont::DeviceAdapterId device); \
extern template VTKM_WORKLET_TEMPLATE_EXPORT VTKM_CONT void vtkm::worklet::Keys<VTK_M_RM_PAREN( \
T)>::BuildArrays(const vtkm::cont::ArrayHandleVirtual<VTK_M_RM_PAREN(T)>& keys, \
vtkm::worklet::KeysSortType sort, \
vtkm::cont::DeviceAdapterId device); \
extern template VTKM_WORKLET_TEMPLATE_EXPORT VTKM_CONT void vtkm::worklet::Keys<VTK_M_RM_PAREN( \
T)>::BuildArraysInPlace(vtkm::cont::ArrayHandle<VTK_M_RM_PAREN(T)>& keys, \
vtkm::worklet::KeysSortType sort, \
vtkm::cont::DeviceAdapterId device); \
extern template VTKM_WORKLET_TEMPLATE_EXPORT VTKM_CONT void vtkm::worklet::Keys<VTK_M_RM_PAREN( \
T)>::BuildArraysInPlace(vtkm::cont::ArrayHandleVirtual<VTK_M_RM_PAREN(T)>& keys, \
vtkm::worklet::KeysSortType sort, \
vtkm::cont::DeviceAdapterId device)
#define VTK_M_KEYS_EXPORT(T) \
VTK_M_KEYS_EXPORT_TYPE((T)); \
VTK_M_KEYS_EXPORT_TYPE((vtkm::Vec<T, 2>)); \
VTK_M_KEYS_EXPORT_TYPE((vtkm::Vec<T, 3>)); \
VTK_M_KEYS_EXPORT_TYPE((vtkm::Vec<T, 4>))
VTK_M_KEYS_EXPORT(char);
VTK_M_KEYS_EXPORT(vtkm::Int8);
VTK_M_KEYS_EXPORT(vtkm::UInt8);
VTK_M_KEYS_EXPORT(vtkm::Int16);
VTK_M_KEYS_EXPORT(vtkm::UInt16);
VTK_M_KEYS_EXPORT(vtkm::Int32);
VTK_M_KEYS_EXPORT(vtkm::UInt32);
VTK_M_KEYS_EXPORT(vtkm::Int64);
VTK_M_KEYS_EXPORT(vtkm::UInt64);
VTK_M_KEYS_EXPORT(vtkm::Float32);
VTK_M_KEYS_EXPORT(vtkm::Float64);
extern template class VTKM_WORKLET_TEMPLATE_EXPORT vtkm::worklet::Keys<T>; \
extern template VTKM_WORKLET_TEMPLATE_EXPORT VTKM_CONT void vtkm::worklet::Keys<T>::BuildArrays( \
const vtkm::cont::ArrayHandle<T>& keys, \
vtkm::worklet::KeysSortType sort, \
vtkm::cont::DeviceAdapterId device); \
extern template VTKM_WORKLET_TEMPLATE_EXPORT VTKM_CONT void vtkm::worklet::Keys<T>::BuildArrays( \
const vtkm::cont::ArrayHandleVirtual<T>& keys, \
vtkm::worklet::KeysSortType sort, \
vtkm::cont::DeviceAdapterId device)
VTK_M_KEYS_EXPORT(vtkm::HashType);
VTK_M_KEYS_EXPORT(vtkm::Id);
VTK_M_KEYS_EXPORT(vtkm::Id3);
#ifdef VTKM_USE_64BIT_IDS
VTK_M_KEYS_EXPORT(vtkm::IdComponent);
#endif
#undef VTK_M_KEYS_EXPORT
#undef VTK_M_KEYS_EXPORT_TYPE
#undef VTK_M_RM_PAREN
#endif // !vtk_m_worklet_Keys_cxx
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment