Cleaner separation of vtkm_cont core code and device implementations
For example, ArrayHandle.h
pulls in DeviceAdapterTag.h
, which does some logic to figure out the default device and pulls in, e.g., DeviceAdapterTagTBB.h
.
This is problematic as we move to a library-based system. As we compile translation units containing device-specific code (e.g. the Serial backend), we end up pulling in other device implementations (e.g. DeviceAdapterTagTBB) unless we do some hacky things like define a different default device for that translation unit. It's unclear to me what impact having different default devices set in different translation units would have.
This is possibly the same issue as #116 (closed) -- should the concept of a default device exist in the library code, or should we force application writers to explicit choose a device? In any case, core data structures implementations etc should not have dependencies on the device backends -- this is creating of bad and circular dependencies.