1. 29 May, 2016 1 commit
  2. 12 May, 2016 1 commit
  3. 03 May, 2016 1 commit
  4. 20 Apr, 2016 1 commit
  5. 08 Mar, 2016 4 commits
  6. 26 Feb, 2016 1 commit
  7. 10 Feb, 2016 1 commit
  8. 12 Jan, 2016 2 commits
    • Kenneth Moreland's avatar
      Add ErrorControlCuda for better CUDA error checking. · 3f446ad2
      Kenneth Moreland authored
      Add lots of checks to CUDA calls in the timer to try to identify any
      problems that might be showing up on the dashboard.
      
      Also adding some print statements around the sleep function in the
      device adapter testing. For some reason the problem just went away with
      them.
      3f446ad2
    • Kenneth Moreland's avatar
      Synchronize the CUDA timer on both the start and end events · f5827298
      Kenneth Moreland authored
      Previously, the timer for CUDA devices only called cudaEventSynchronize
      at the end event when asking for the elapsed time. This, however, could
      allow time to pass from when the timer was reset to when the start event
      happened that was not recorded in the timer. This added synchronization
      should make sure that all time spent in CUDA is recorded.
      f5827298
  9. 16 Dec, 2015 1 commit
    • Robert Maynard's avatar
      Extend vtkm::DeviceAdapterTraits to include a unique numeric identifier. · c70da5fc
      Robert Maynard authored
      Previously each device adapter only had a unique string name. This was
      not the best when it came to developing data structures to track the status
      of a given device at runtime.
      
      This adds in a unique numeric identifier to each device adapter. This will
      allow classes to easily create bitmasks / lookup tables for the validity of
      devices.
      c70da5fc
  10. 15 Dec, 2015 1 commit
    • Robert Maynard's avatar
      Adding vtkm::cont::RuntimeDeviceInformation. · a7127f0f
      Robert Maynard authored
      The RuntimeDeviceInformation class allows developers to check if a given
      device is supported on a machine at runtime. This allows developers to properly
      check for CUDA support before running any worklets.
      a7127f0f
  11. 09 Nov, 2015 1 commit
    • Robert Maynard's avatar
      Workaround inclusive_scan issues in thrust 1.8.X for complex value types. · b3687c6f
      Robert Maynard authored
      The original workaround for inclusive_scan bugs in thrust 1.8 only solved the
      issue for basic arithmetic types such as int, float, double. Now we go one
      step further and fix the problem for all types.
      
      The solution is to provide a proper implementation of destructive_accumulate_n
      and make sure it exists before any includes of thrust occur.
      b3687c6f
  12. 06 Nov, 2015 1 commit
    • Kenneth Moreland's avatar
      Fix issue with const types in Thrust array management · f7789f0e
      Kenneth Moreland authored
      Previously, there was a declaration ConstArrayPortalFromThrust<const T>
      in ArrayManagerExecutionThrustDevice. This proved problematic because
      values read from the array in the worklet were typed as const T rather
      than simply T. Any Vec or Matrix built from that type would then fail
      because they are not meant to work with a const value (which means they
      have to be set on construction and never changed.
      
      Instead, declare ConstArrayPortalFromThrust<T> and internally set all
      the Thrust pointers to have type const T. Also declare other thrust
      pointers used as method parameters to have const T rather than T. This
      should work as conversion from T to const T should be fine, but not the
      other way around.
      f7789f0e
  13. 04 Nov, 2015 1 commit
  14. 03 Nov, 2015 4 commits
  15. 02 Nov, 2015 1 commit
  16. 30 Oct, 2015 2 commits
  17. 21 Oct, 2015 1 commit
    • Kenneth Moreland's avatar
      Fix nvcc warnings on MSVC · b861209a
      Kenneth Moreland authored
      There is a strange nvcc warning in CUDA 7.5 that sometimes happens on MSVC
      that causes it to emit a warning for an undefined method that is clearly
      defined. The CUDA development team is aware of the problem and is going
      to fix it, but these changes will work around the problem for now.
      
      Thanks to Tom Fogal from NVIDIA for these fixes.
      b861209a
  18. 20 Oct, 2015 1 commit
  19. 09 Oct, 2015 1 commit
  20. 01 Oct, 2015 1 commit
  21. 21 Sep, 2015 1 commit
  22. 18 Sep, 2015 1 commit
  23. 17 Sep, 2015 3 commits
    • hschroot's avatar
      CopyInto function for ArrayHandles · 20c1a048
      hschroot authored
      ArrayHandles in DAX have a CopyInto function which allows the user to copy an array handle's data into a compatible STL type iterator. Originally this was fairly straight forward to implement since array handles in DAX are templated on the DeviceAdapterTag. In contrast, VTKm array handles use a polymorphic ArrayHandleExecutionManager under the hood allowing a single array handle to interface with multiple devices at runtime. To achieve this virtual functions are used. This makes implementing the CopyInto function difficult since it is templated on the IteratorType and virtual functions cannot be templated.
      
      To work around this, I've implemented a concrete templated CopyInto function in the class derived from ArrayHandleExecutionManagerBase. In the ArrayHandle class, CopyInto dynamically casts the base class into the derived class, then calls the CopyInto function defined in the derived class.
      
      The drawback to this approach is that, should the user define their own class that inherits from ArrayHandleExectionManagerBase, they are not forced to implement the CopyInto function, unlike the other virtual functions.
      20c1a048
    • Robert Maynard's avatar
      Always install all device headers even when device isn't enabled. · fd685210
      Robert Maynard authored
      vtkm_declare_headers now is able to not test headers, by using the
      TESTABLE keyword.
      fd685210
    • Robert Maynard's avatar
      DeviceAdapter Tags now always exist, and contain if the device is valid. · 4d635d64
      Robert Maynard authored
      Previously it was really hard to verify if a device adapter was valid. Since
      you would have to check for the existence of the tag. Now the tag always
      exists, but instead you query the traits of the DeviceAdapter to see if
      it is a valid adapter.
      
      This makes compiling with multiple backends alot easier.
      4d635d64
  24. 08 Sep, 2015 1 commit
  25. 07 Sep, 2015 1 commit
  26. 03 Sep, 2015 1 commit
    • Robert Maynard's avatar
      Make thrust use fast paths when doing sort and scan. · 72450e87
      Robert Maynard authored
      By introducing our own custom thrust execution policy we can make sure
      to hit the fastest code paths in thrust for the sort operation. This makes
      sure that for UInt32,Int32, and Float32 we use the radix sort from thrust
      which offers a 2x to 3x speed improvement over the merge sort implementation.
      
      Secondly by telling thrust that our BinaryOperators are commutative we
      make sure that we get the fastest code paths when executing Inclusive
      and Exclusive Scan
      
      Benchmark 'Radix Sort on 1048576 random values vtkm::Int32' results:
        median = 0.0117049s
        median abs dev = 0.00324614s
        mean = 0.0167615s
        std dev = 0.00786269s
        min = 0.00845875s
        max = 0.0389063s
      Benchmark 'Radix Sort on 1048576 random values vtkm::Float32' results:
        median = 0.0234463s
        median abs dev = 0.000317249s
        mean = 0.021452s
        std dev = 0.00470307s
        min = 0.011255s
        max = 0.0250643s
      Benchmark 'Merge Sort on 1048576 random values vtkm::Int32' results:
        median = 0.0310486s
        median abs dev = 0.000182129s
        mean = 0.0286914s
        std dev = 0.00634102s
        min = 0.0116225s
        max = 0.0317379s
      Benchmark 'Merge Sort on 1048576 random values vtkm::Float32' results:
        median = 0.0310617s
        median abs dev = 0.000193583s
        mean = 0.0295779s
        std dev = 0.00491531s
        min = 0.0147257s
        max = 0.032307s
      72450e87
  27. 02 Sep, 2015 1 commit
  28. 01 Sep, 2015 1 commit
  29. 28 Aug, 2015 1 commit
  30. 26 Aug, 2015 1 commit