1. 01 Apr, 2021 2 commits
  2. 31 Mar, 2021 5 commits
  3. 30 Mar, 2021 9 commits
    • Kenneth Moreland's avatar
    • Kenneth Moreland's avatar
    • Kenneth Moreland's avatar
      Add padding to Grid struct in CellLocatorTwoLevel · 9816c422
      Kenneth Moreland authored
      There appears to be a bug in CUDA 9.2 where if you have a class that
      contains a struct that itself has to have padding in the middle for
      alignment purposes and you then put that class in a union with other
      classes, it seems like that padding can cause problems with other
      objects in the union.
      9816c422
    • Kenneth Moreland's avatar
      Support copying a Variant to itself · e480fd7a
      Kenneth Moreland authored
      e480fd7a
    • Kenneth Moreland's avatar
      Make connectivity structures trivially copyable · d2d9ba33
      Kenneth Moreland authored
      It always worked to trivially copy these classes, but the compiler did
      not think so because copy constructors were defined. Change these
      constructors to be default so that the compler can properly check
      triviality.
      d2d9ba33
    • Kenneth Moreland's avatar
      Avoid is_trivially_copyable on VariantUnion · cad5dc7b
      Kenneth Moreland authored
      For some reason some versions of the CUDA compiler would return true for
      `is_trivially_copyable` on a `VariantUnion` even when the types of the
      union caused the copy constructor to get deleted.
      
      Solve the problem by using `AllTriviallyCopyable` instead of directly
      caling `is_trivially_copyable` on the union.
      cad5dc7b
    • Kenneth Moreland's avatar
      Use specialized class instead of function overload for Variant::Get · cb60401a
      Kenneth Moreland authored
      Nvcc was having troubles resolving the return type of the overloaded
      function to get a value out of a `VariantUnion`. Replace the
      implementation with a class with specializations. This is more verbose,
      but easier on the compiler.
      cb60401a
    • Kenneth Moreland's avatar
      Use a union in Variant for safe type punning · c9bcdd01
      Kenneth Moreland authored
      Create a `VaraintUnion` that is an actual C++ `union` to store the data
      in a `Variant`.
      
      You may be asking yourself, why not just use an `std::aligned_union`
      rather than a real union type? That was our first implementation, but
      the problem is that the `std::aligned_union` reference needs to be
      recast to the actual type. Typically you would do that with
      `reinterpret_cast`. However, doing that leads to undefined behavior. The
      C++ compiler assumes that 2 pointers of different types point to
      different memory (even if it is clear that they are set to the same
      address). That means optimizers can remove code because it "knows" that
      data in one type cannot affect data in another type. To safely change
      the type of an `std::aligned_union`, you really have to do an
      `std::memcpy`. This is problematic for types that cannot be trivially
      copied. Another problem is that we found that device compilers do not
      optimize the memcpy as well as most CPU compilers. Likely, memcpy is
      used much less frequently on GPU devices.
      c9bcdd01
    • Kenneth Moreland's avatar
      Fix types used for coordinates in ArrayRangeCompute · 26d5168b
      Kenneth Moreland authored
      Was using scalar types for `ArrayRangeCompute` for storage of types like
      Cartesian product. It should be `Vec3` types.
      26d5168b
  4. 29 Mar, 2021 2 commits
    • Kenneth Moreland's avatar
      Merge topic 'what-in-error' · d7c6ffbd
      Kenneth Moreland authored
      eadaf06f
      
       Set what string in Error::SetMessage
      Acked-by: Kitware Robot's avatarKitware Robot <kwrobot@kitware.com>
      Acked-by: Nickolas Davis's avatarNickolas Davis <nadavi@sandia.gov>
      Merge-request: !2451
      d7c6ffbd
    • Kenneth Moreland's avatar
      Set what string in Error::SetMessage · eadaf06f
      Kenneth Moreland authored
      `vtkm::cont::Error` inherits from `std::exception`. As such, it has a
      special `what` string that reports an error message in a standard way.
      This is particularly useful when a `vtkm::cont::Error` exception remains
      uncaught because the system will print the `what` string before
      crashing.
      
      Unfortunately, the `what` string was only being set in the `Error`
      constructor that took a message. That is a problem for subclasses like
      `ErrorCuda` that used the default constructor and then used
      `SetMessage`. The `what` string did not get set in this case.
      
      Change the behavior to capture the stack trace in the default
      constructor and update the `what` string if a subclass uses
      `SetMessage`.
      eadaf06f
  5. 26 Mar, 2021 1 commit
  6. 25 Mar, 2021 4 commits
  7. 24 Mar, 2021 5 commits
  8. 23 Mar, 2021 5 commits
  9. 20 Mar, 2021 1 commit
  10. 19 Mar, 2021 4 commits
  11. 18 Mar, 2021 2 commits