vtk-m2/vtkm
Allison Vacanti 825f351d04 Use std::copy in serial Copy implementation.
I had assumed that the compiler would be clever enough to turn the
iterative implementation of Copy into a memcpy, but inspecting the
disassembly on a release GCC build shows that this is not the case,
likely because it can't assume that the memory ranges do not overlap.

Replacing the loop with std::copy speeds things up (about 30-50%) for
most data types, though there is a slight (usually < 5%) slowdown for
Vec types. The uint8 copy improved by a factor of 8.

Comparison:
| Speedup | iteration            | std::copy            | Benchmark (Type) |
|---------|----------------------|----------------------|------------------|
|   1.363 | 0.001590 +- 0.000087 | 0.001166 +- 0.000049 | Copy 2097152 values (vtkm::Float32) |
|   1.487 | 0.003429 +- 0.000185 | 0.002305 +- 0.000146 | Copy 2097152 values (vtkm::Float64) |
|   1.379 | 0.001568 +- 0.000072 | 0.001137 +- 0.000093 | Copy 2097152 values (vtkm::Int32) |
|   1.420 | 0.003410 +- 0.000173 | 0.002402 +- 0.000101 | Copy 2097152 values (vtkm::Int64) |
|   1.303 | 0.001564 +- 0.000083 | 0.001201 +- 0.000078 | Copy 2097152 values (vtkm::UInt32) |
|   7.204 | 0.002441 +- 0.000104 | 0.000339 +- 0.000029 | Copy 2097152 values (vtkm::UInt8) |
|   0.987 | 0.006602 +- 0.000266 | 0.006688 +- 0.000291 | Copy 2097152 values (vtkm::Vec< vtkm::Float32, 4 >) |
|   0.965 | 0.010065 +- 0.000528 | 0.010427 +- 0.000617 | Copy 2097152 values (vtkm::Vec< vtkm::Float64, 3 >) |
|   0.979 | 0.003327 +- 0.000191 | 0.003398 +- 0.000142 | Copy 2097152 values (vtkm::Vec< vtkm::Int32, 2 >) |
|   0.851 | 0.001579 +- 0.000090 | 0.001856 +- 0.000098 | Copy 2097152 values (vtkm::Vec< vtkm::UInt8, 4 >) |
2017-10-11 16:52:32 -04:00
..
benchmarking Add StableSortIndices worklet. 2017-09-28 13:02:33 -04:00
cont Use std::copy in serial Copy implementation. 2017-10-11 16:52:32 -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 Update Newton's Method to return solution status 2017-10-10 14:01:41 -04:00
testing Update Newton's Method to return solution status 2017-10-10 14:01:41 -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 Update copyright for Sandia 2017-09-20 15:33:44 -06: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 Update copyright for Sandia 2017-09-20 15:33:44 -06: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