vtk-m/vtkm
Allison Vacanti 4cd791932b Ensure that Pair and Vec are trivial classes.
For std::copy to optimize a copy to memcpy, the valuetype must be both
trivially constructable and trivially copyable.

The new copy benchmarks highlighted an issue that std::copy'ing pairs
and vecs were not optimized to memcpy. For a 256 MiB buffer on my
laptop w/ GCC, the serial copy speeds were:

UInt8:                 10.10 GiB/s
Vec<UInt8, 2>           3.12 GiB/s
Pair<UInt32, Float32>   6.92 GiB/s

After this patch, the optimization occurs and a bitwise copy occurs:

UInt8:                 10.12 GiB/s
Vec<UInt8, 2>           9.66 GiB/s
Pair<UInt32, Float32>   9.88 GiB/s

Check were also added to the Vec and Pair unit tests to ensure that
this classes continue to be trivial.

The ArrayHandleSwizzle test was refactored a bit to eliminate a new
'possibly uninitialized memory' warning introduced with the default
Vec ctors.
2017-10-18 14:58:35 -04:00
..
benchmarking Add benchmark to print copy speeds. 2017-10-18 10:53:30 -04:00
cont Ensure that Pair and Vec are trivial classes. 2017-10-18 14:58:35 -04:00
exec Add a CellLocator 2017-10-10 14:01:41 -04:00
filter Use median point from cluster as representative vertex. 2017-10-10 10:28:51 -04:00
internal Merge topic 'vertexclustering-reducepoints' 2017-10-11 16:25:30 -04:00
interop The interop/cuda headers aren't testable. 2017-10-09 09:40:52 -04:00
io Consistenly use nullptr in vtk-m. 2017-09-25 09:57:23 -04:00
rendering Workaround an Intel compiler bug 2017-10-16 12:17:04 -04:00
testing Ensure that Pair and Vec are trivial classes. 2017-10-18 14:58:35 -04:00
worklet Merge topic 'vertexclustering-reducepoints' 2017-10-11 16:25:30 -04:00
.gitattributes clang-format: apply to the entire tree 2017-05-25 07:51:37 -04:00
Assert.h Update copyright for Sandia 2017-09-20 15:33:44 -06:00
BaseComponent.h Update copyright for Sandia 2017-09-20 15:33:44 -06:00
BinaryOperators.h Update copyright for Sandia 2017-09-20 15:33:44 -06:00
BinaryPredicates.h Update copyright for Sandia 2017-09-20 15:33:44 -06:00
Bounds.h Update copyright for Sandia 2017-09-20 15:33:44 -06:00
CellShape.h Update copyright for Sandia 2017-09-20 15:33:44 -06:00
CellTraits.h Update copyright for Sandia 2017-09-20 15:33:44 -06:00
CMakeLists.txt Add versioning to VTKM installed include/share dirs. 2017-10-02 11:39:10 -04:00
Hash.h Update copyright for Sandia 2017-09-20 15:33:44 -06:00
ListTag.h Update copyright for Sandia 2017-09-20 15:33:44 -06:00
Math.h Update copyright for Sandia 2017-09-20 15:33:44 -06:00
Math.h.in Update copyright for Sandia 2017-09-20 15:33:44 -06:00
Matrix.h Update copyright for Sandia 2017-09-20 15:33:44 -06:00
NewtonsMethod.h Update Newton's Method to return solution status 2017-10-10 14:01:41 -04:00
Pair.h Ensure that Pair and Vec are trivial classes. 2017-10-18 14:58:35 -04:00
Range.h Update copyright for Sandia 2017-09-20 15:33:44 -06:00
RangeId3.h Update copyright for Sandia 2017-09-20 15:33:44 -06:00
RangeId.h Update copyright for Sandia 2017-09-20 15:33:44 -06:00
StaticAssert.h Update copyright for Sandia 2017-09-20 15:33:44 -06:00
TopologyElementTag.h Update copyright for Sandia 2017-09-20 15:33:44 -06:00
Transform3D.h Update copyright for Sandia 2017-09-20 15:33:44 -06:00
TypeListTag.h Update copyright for Sandia 2017-09-20 15:33:44 -06:00
Types.h Ensure that Pair and Vec are trivial classes. 2017-10-18 14:58:35 -04:00
TypeTraits.h Update copyright for Sandia 2017-09-20 15:33:44 -06:00
UnaryPredicates.h Update copyright for Sandia 2017-09-20 15:33:44 -06:00
VecAxisAlignedPointCoordinates.h Fix many warnings from doxygen 2017-09-22 10:29:08 -06:00
VecFromPortal.h Update copyright for Sandia 2017-09-20 15:33:44 -06:00
VecFromPortalPermute.h Update copyright for Sandia 2017-09-20 15:33:44 -06:00
VectorAnalysis.h Update copyright for Sandia 2017-09-20 15:33:44 -06:00
VecTraits.h Update copyright for Sandia 2017-09-20 15:33:44 -06:00
VecVariable.h Update copyright for Sandia 2017-09-20 15:33:44 -06:00
Version.h.in Update copyright for Sandia 2017-09-20 15:33:44 -06:00