Skip to content
  • Robert Maynard's avatar
    Re-implement DeviceAdapterRuntimeDetector to avoid ODR violations. · e28244f3
    Robert Maynard authored
    The previous implementation of DeviceAdapterRuntimeDetector caused
    multiple differing definitions of the same class to exist and
    was causing the runtime device tracker to report CUDA as disabled
    when it actually was enabled.
    
    The ODR was caused by having a default implementation for
    DeviceAdapterRuntimeDetector and a specific specialization for
    CUDA. If a library had both CUDA and C++ sources it would pick up
    both implementations and would have undefined behavior. In general
    it would think the CUDA backend was disabled.
    
    To avoid this kind of situation in the future I have reworked VTK-m
    so that each device adapter must implement DeviceAdapterRuntimeDetector
    for that device.
    e28244f3