1. 22 Apr, 2019 1 commit
    • Robert Maynard's avatar
      For VTK-m libs all includes of DeviceAdapterTagCuda happen from cuda files · ff687016
      Robert Maynard authored
      It is very easy to cause ODR violations with DeviceAdapterTagCuda.
      If you include that header from a C++ file and a CUDA file inside
      the same program we an ODR violation. The reasons is that the C++
      versions will say the tag is invalid, and the CUDA will say the
      tag is valid.
      
      The solution to this is that any compilation unit that includes
      DeviceAdapterTagCuda from a version of VTK-m that has CUDA enabled
      must be invoked by the cuda compiler.
      ff687016
  2. 19 Apr, 2019 1 commit
  3. 18 Apr, 2019 1 commit
    • Robert Maynard's avatar
      Remove DeviceAdapterError as it isn't needed any more. · d8cc067c
      Robert Maynard authored
      Fixes #277
      
      DeviceAdapterError existed to make sure that the default device adapter
      template was being handled properly. Since the default device adapter doesn't
      exist, and nothing is templated over it we can now remove DeviceAdapterError.
      d8cc067c
  4. 17 Apr, 2019 3 commits
    • Robert Maynard's avatar
    • Nickolas Davis's avatar
      conslidate the license statement · fbcea82e
      Nickolas Davis authored
      fbcea82e
    • Robert Maynard's avatar
      VTK-m now provides better scheduling parameters controls · 047b6465
      Robert Maynard authored
      VTK-m now offers a more GPU aware set of defaults for kernel scheduling.
      When VTK-m first launches a kernel we do system introspection and determine
      what GPU's are on the machine and than match this information to a preset
      table of values. The implementation is designed in a way that allows for
      VTK-m to offer both specific presets for a given GPU ( V100 ) or for
      an entire generation of cards ( Pascal ).
      
      Currently VTK-m offers preset tables for the following GPU's:
      - Tesla V100
      - Tesla P100
      
      If the hardware doesn't match a specific GPU card we than try to find the
      nearest know hardware generation and use those defaults. Currently we offer
      defaults for
      - Older than Pascal Hardware
      - Pascal Hardware
      - Volta+ Hardware
      
      Some users have workloads that don't align with the defaults provided by
      VTK-m. When that is the cause, it is possible to override the defaults
      by binding a custom function to `vtkm::cont::cuda::InitScheduleParameters`.
      As shown below:
      
      ```cpp
        ScheduleParameters CustomScheduleValues(char const* name,
                                                int major,
                                                int minor,
                                                int multiProcessorCount,
                                                int maxThreadsPerMultiProcessor,
                                                int maxThreadsPerBlock)
        {
      
          ScheduleParameters params  {
              64 * multiProcessorCount,  //1d blocks
              64,                        //1d threads per block
              64 * multiProcessorCount,  //2d blocks
              { 8, 8, 1 },               //2d threads per block
              64 * multiProcessorCount,  //3d blocks
              { 4, 4, 4 } };             //3d threads per block
          return params;
        }
        vtkm::cont::cuda::InitScheduleParameters(&CustomScheduleValues);
      ```
      047b6465
  5. 15 Apr, 2019 1 commit
  6. 11 Apr, 2019 4 commits
  7. 10 Apr, 2019 3 commits
  8. 09 Apr, 2019 2 commits
  9. 08 Apr, 2019 2 commits
    • Sujin Philip's avatar
      Fix a bug in MakeTestDataset · 2bbf501c
      Sujin Philip authored
      In Make3DExplicitDataSetZoo, only 25 cells are added, but the variable `nCells`
      is set to 27.
      2bbf501c
    • Sujin Philip's avatar
      ArrayHandleVirtual bugfixes · dae779b9
      Sujin Philip authored
      After the change to `ArrayHandleVirtual` where it became a subclass of
      `vtkm::cont::ArrayHandle`, a few extra changes are required.
      
      1. Functions with `ArrayHandleVirtual` as parameters will not be callable
      with the superclass `ArrayHandle`. This is fixed by changing the argument
      types to the superclass.
      2. Add Serialization classes specializations for the superclass, as "is-a"
      relation is not considered for class template parameters.
      dae779b9
  10. 04 Apr, 2019 2 commits
  11. 03 Apr, 2019 8 commits
  12. 02 Apr, 2019 2 commits
  13. 01 Apr, 2019 2 commits
  14. 28 Mar, 2019 1 commit
  15. 26 Mar, 2019 5 commits
    • Kenneth Moreland's avatar
      Wrap third party optionparser.h in vtkm/cont/internal/OptionParser.h · 7237c468
      Kenneth Moreland authored
      Previously we just took the optionparser.h file and stuck it right in
      our source code. That was problematic for a variety of reasons.
      
      1. It incorrectly assigned our license to external code.
      2. It made lots of unnecessary changes to the original source (like
      reformatting).
      3. It made it near impossible to track patches we make and updates to
      the original software.
      
      Instead, use the third-party system to track changes to optionparser.h
      in a different repository and then pull that into ours.
      7237c468
    • Allison Vacanti's avatar
      Add more vtkm_cont compilation units to device_sources. · b85dcf22
      Allison Vacanti authored
      These depend on DeviceAdapterTagCuda::IsEnabled being correctly
      set at compile time.
      b85dcf22
    • Kenneth Moreland's avatar
      Allow Initialize to parse only some arguments · b0303c96
      Kenneth Moreland authored
      When a library requires reading some command line arguments through a
      function like Initialize, it is typical that it will parse through
      arguments it supports and then remove those arguments from argc and argv
      so that the remaining arguments can be parsed by the calling program.
      VTK-m's initialize did not do that, so add that functionality.
      b0303c96
    • Sujin Philip's avatar
      Simplify CellSetPermutation PointToCell · 048cbda5
      Sujin Philip authored
      These changes are required to enable 'CellSetPermutaion' of custom cell-set
      types like 'vtkmCellSetExplicit' and 'vtkmCellSetSingleType' in VTK.
      048cbda5
    • Robert Maynard's avatar
      Redesign RuntimeDeviceTracker and RuntimeDeviceInformation · 838cb433
      Robert Maynard authored
      The RuntimeDeviceTracker had grown organically to handle multiple
      different roles inside VTK-m. Now that we have device tags
      that can be passed around at runtime, large portions of
      the RuntimeDeviceTracker API aren't needed.
      
      Additionally the RuntimeDeviceTracker had a dependency on knowing
      the names of each device, and this wasn't possible
      as that information was part of its self. Now we have moved that
      information into RuntimeDeviceInformation and have broken
      the recursion.
      838cb433
  16. 25 Mar, 2019 1 commit
    • Allison Vacanti's avatar
      Modify VariantAH::AsVirtual to cast to new ValueType if needed. · e1f5c4dd
      Allison Vacanti authored
      E.g:
      
      ```
          ArrayHandle<Float64> doubleArray;
          VariantArrayHandle varHandle{doubleArray};
          ArrayHandleVirtual<Float32> = varHandle.AsVirtual<Float32>();
      ```
      
      If there is a loss in range and/or precision, a warning is logged. If
      the ValueTypes are Vecs with mismatched widths, an ErrorBadType is thrown.
      Internally, an ArrayHandleCast is used between the VariantArrayHandle's
      stored array and the ArrayHandleVirtual.
      e1f5c4dd
  17. 22 Mar, 2019 1 commit