Make sure nvcc compiles with bigobj on windows.
This required as the testing infrastructure creates thousands of symbol
entries, and the default for VisualStudio is crazy small.
See merge request !85
tbb includes windows.h, and doesn't use the NOMINMAX so we need to do
that ourselves so that we can use std::min/max and limits<T>::min/max.
At the same we also define WIN32_LEAN_AND_MEAN so that the total number of
macros that windows.h defines is reduced.
Adding micro benchmark suite
This is an initial go at putting together a small micro-benchmarks suite to compare the performance of the backends and the performance of changes to them (eg. track improvements/regressions). The benchmark suite is configured and built almost identically to how the tests are setup, for example the vtkm_save_benchmarks and vtkm_benchmarks are essentially just vtkm_save_worklets and vtkm_worklet_unit_tests. However the benchmarks aren't actually added to the list of tests so they won't run with make test and can be run seperately if desired. They'll also only be built if VTKm_ENABLE_BENCHMARKS and VTKm_ENABLE_TESTING are on.
I'm curious what folks think about these benchmarks, do they measure useful things? Does the test data look ok? Is it worth it to run all the various data sets for sort? Any other comments are great as well of course.
Thank you!
See merge request !71
Correct type for the output portal in DeviceAdapterAlgorithmGeneral::UpperBounds
It looks like the type here was accidently written as a `ArrayHandle<T, COut>` when it should (I think) be `ArrayHandle<vtkm::Id, COut>`. I Encountered this causing a compilation error when trying to run some
benchmarks with FloatDefault input and values since it was using the
wrong type for some iterators if I recall correctly and couldn't cast to the vtkm::Id
type. This should fix that by using the correct type for the output
portal.
See merge request !75
Storage template parameter for ArrayHandle print function
Added an additional storage type template parameter. This addition enables any subclass of ArrayHandle (e.g., ArrayHandleCounting) to have proper printing functionality, without compilation errors.
See merge request !77
Add data size introspection to DynamicArrayHandle.
Sometimes it is useful to know how big an array held in a
DynamicArrayHandle is. This adds two methods to DynamicArrayHandle:
GetNumberOfValues and GetNumberOfComponents. They allow you to query the
size of the array without having to statically cast to the array itself.
See merge request !76
Sometimes it is useful to know how big an array held in a
DynamicArrayHandle is. This adds two methods to DynamicArrayHandle:
GetNumberOfValues and GetNumberOfComponents. They allow you to query the
size of the array without having to statically cast to the array itself.
Encountered this causing a compilation error when trying to run some
benchmarks with FloatDefault input and values since it was using the
wrong type for some iterators iirc and couldn't cast to the vtkm::Id
type. This should fix that by using the correct type for the output
portal.
Remove cast warnings in UnitTestMatrix.
Unlike most compilers, MSVC will give conversion warnings when
implicitly converting a 32-bit int to a 32-bit float because the
mantissa can potentially drop some of the lower order bits of large
ints. Use static casts to (hopefully) remove the warnings.
See merge request !72
Unlike most compilers, MSVC will give conversion warnings when
implicitly converting a 32-bit int to a 32-bit float because the
mantissa can potentially drop some of the lower order bits of large
ints. Use static casts to (hopefully) remove the warnings.
For some reason when optimization was on with the Intel compiler it
was removing the loop in some instances of the templated MatrixTranspose
function. I inserted an empty assembly statement that prevents the
compiler from removing the loop but does not add any actual code. That
seems to fix the problem.
Some compilers, particularly icc, do strange things to literals during
optimization that makes them slightly different. This change was originally
to fix a testing issue with the icc build. It is not actually fixing the
problem, but I am leaving in the change because it is good practice.
Specifically a conversion operator was not being used in the StringInt
class of UnitTestArrayHandleCounting. Because it was in an anonymous
namespace that could not be used outside of the file, ICC warned about
it. Rather than remove the method, which could cause confusion later,
gave the namespace a name so the compiler assumes that the class could
potentially be used somewhere else.
Add Matrix class.
The matrix class is for thread-local matrix computations. It is intended
to store things like tensors or geometric transforms.
See merge request !69