Commit Graph

645 Commits

Author SHA1 Message Date
Samuel Li
49e56b61b5 two new wavelet filters, HAAR and CDF8/4 supported now 2016-08-16 15:20:19 -06:00
Samuel Li
767356bc72 working on even length filters; need ASYM* support in Extend1D() 2016-08-15 17:54:15 -06:00
Kenneth Moreland
13c19ecf9a Remove unnecessary typename
There was an instance where the typename keyword was used to declare
that an item in a templated class is a type in a place where the full
type is known. Some compilers (e.g. Visual Studio) do not allow using
typename in this case.
2016-08-15 15:59:36 -06:00
Samuel Li
a6efad0448 half done even length filters implementation 2016-08-15 13:46:35 -06:00
Samuel Li
3a1cfe5c6a 2d decompose and reconstruct seem to be working well 2016-08-14 16:29:27 -06:00
Samuel Li
53cfd74d01 Rectangle Copy test succeed 2016-08-14 00:28:29 -06:00
Samuel Li
a96b90241c finish rectangle copy to worklet 2016-08-13 22:21:05 -07:00
Samuel Li
ee32ea4cf9 took off timing code 2016-08-12 18:07:36 -06:00
Samuel Li
ff5b1b8dbb performance tunes on IDWT worklet 2016-08-12 17:38:04 -06:00
Samuel Li
75d9ffdea2 address a few suggestions by Rob 2016-08-12 16:00:58 -06:00
Robert Maynard
60b63af707 Merge topic 'histogram_filter'
31156d2e Add a histogram filter.
04761975 Refactor FieldHistogram so class is not templated.

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !503
2016-08-12 10:01:54 -04:00
Robert Maynard
31156d2e99 Add a histogram filter. 2016-08-12 08:40:11 -04:00
Samuel Li
9e49cde593 2D decomposition work in progress 2016-08-11 18:49:48 -06:00
Samuel Li
be658d70a8 IDWT2D seems to be working 2016-08-11 15:24:48 -06:00
Robert Maynard
a8f23ba7ba worklet::Threshold now has a default device adapter. 2016-08-11 14:47:59 -04:00
Robert Maynard
04761975be Refactor FieldHistogram so class is not templated.
Move the template parameters to the Run method.
2016-08-11 14:46:45 -04:00
Samuel Li
986db4f2bc fix a few warnings 2016-08-11 09:39:20 -07:00
Samuel Li
d41d102072 DWT2D works 2016-08-10 16:28:59 -07:00
Samuel Li
710d59d33a Change on class signatures of Filter and Base 2016-08-10 17:24:22 -06:00
Samuel Li
e7b288dba1 eliminates explicit calling VTKM_DEFAULT_DEVICE_ADAPTER_TAG 2016-08-10 14:33:14 -06:00
Samuel Li
f669f44ca1 new branch on 2D wavelets 2016-08-09 17:32:13 -06:00
Samuel Li
062aec45f7 some helper functions are in 2016-08-09 17:02:10 -06:00
Samuel Li
f3d7aeced1 use std::vector<vtkm::Id> instead of raw arrays for bookkeeping 2016-08-08 17:59:15 -06:00
Robert Maynard
856b8b547d Express in the the threshold filter policy it only handles scalars. 2016-08-08 16:51:09 -04:00
Samuel Li
71454c11b4 took off function in progress 2016-08-08 14:38:38 -06:00
Samuel Li
7ee9c7d949 each enum is now in its own line 2016-08-08 14:35:14 -06:00
Samuel Li
c72b135608 Uncomment other build objects 2016-08-08 12:21:08 -04:00
Robert Maynard
2406f45cd7 Merge topic 'pass_fields_and_coordinates_to_invoke'
08a33675 Prefer vtkm::cont::CastAndCall function over the member method.
31138293 Pass Fields and CoordinateSystems to Dispatcher::Invoke
146d8009 make CastAndCall a free function instead of a class.

Acked-by: Kitware Robot <kwrobot@kitware.com>
Reviewed-by: T.J. Corona <tj.corona@kitware.com>
Merge-request: !497
2016-08-08 08:56:01 -04:00
Samuel Li
34ce28576d change unittest for review 2016-08-06 12:34:03 -07:00
Samuel Li
3d29e504cc fixed a memory bug, now I believe it's ready for merge 2016-08-06 00:08:29 -07:00
Samuel Li
7a52b2744a ready for review, but suspect boost is messing up with smart pointers 2016-08-05 19:45:30 -07:00
Samuel Li
8f99f0220b Add throw errors 2016-08-05 17:08:25 -06:00
Samuel Li
69d3a73444 clean up comments 2016-08-05 15:46:52 -07:00
Robert Maynard
0f545c53e3 Merge topic 'now_can_build_with_cxx11'
a6609311 Silence auto_ptr deprecation warnings with older boosts ( < 1.61 )
6d38f44d Update ListTag and DispatcherBase to leverage C++11 features.
ea0d84a8 Remove VTK-m Variadic defines and replace them with a single CXX11 define
77121d18 Add support to VTK-m to build with C++11

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !475
2016-08-05 16:03:35 -04:00
Robert Maynard
08a33675f6 Prefer vtkm::cont::CastAndCall function over the member method. 2016-08-05 15:29:39 -04:00
Robert Maynard
31138293f9 Pass Fields and CoordinateSystems to Dispatcher::Invoke
Now that we can handle scheduling Fields and CoordinateSystems, do
2016-08-05 15:26:17 -04:00
Christopher Sewell
c4ab06f7cb Resoring other worklet tests 2016-08-03 20:23:40 -06:00
Christopher Sewell
77160a851b Only calling SyncControlArray on arrays in final pass 2016-08-03 20:19:41 -06:00
Christopher Sewell
767a5f6792 Clean up for streaming dispatcher 2016-08-03 19:47:12 -06:00
Christopher Sewell
504e6f55df Working streaming dispatcher 2016-08-03 18:48:31 -06:00
Samuel Li
6d063154e0 Thresholding avoids a memory transfer 2016-08-03 18:23:34 -04:00
Christopher Sewell
ced9fd32db Improving streaming dispatcher 2016-08-03 15:34:43 -06:00
Samuel Li
0164d38e91 use a worklet to perform array extension 2016-08-03 16:34:02 -04:00
T.J. Corona
927387b1a2 Add vtkm::cont::Field,CoordinateSystem as Invokable parameters.
Originally, only array handles could be passed to the dispatcher.
This update extends the list to Field and CoordinateSystem as
dynamic objects.
2016-08-03 15:46:30 -04:00
Robert Maynard
6d38f44d6c Update ListTag and DispatcherBase to leverage C++11 features. 2016-08-03 15:38:38 -04:00
Samuel Li
433f89ae12 add worklet to copy a portion of array 2016-08-03 11:34:04 -04:00
Samuel Li
b96d65550f extend1D returns ArrayHandlePermut 2016-08-02 23:41:46 -04:00
Christopher Sewell
2caf81a4af First commit for ArrayHandleStreaming 2016-08-02 16:54:12 -06:00
Samuel Li
a4461e0e9e IDWT worklet uses WholeArrayOut now 2016-08-02 18:14:03 -04:00
Samuel Li
2114f557e6 another memcpy is avoided 2016-08-02 16:35:00 -04:00
Samuel Li
b8c09693a3 saves another memcpy operation 2016-08-02 16:09:29 -04:00
Samuel Li
fc609eddd2 fix IDWT worklet... An error was introduced in previous commit 2016-08-02 15:06:20 -04:00
Samuel Li
1f2f88430c small fix on idwt worklet 2016-08-02 14:50:54 -04:00
Samuel Li
d88bdff94c DWT worklet uses WholeArrayOut to avoid a memory copy 2016-08-02 14:09:34 -04:00
Samuel Li
448e9be5a8 small tweaks, ready for pull request 2016-07-29 14:16:10 -07:00
Samuel Li
dd1ef8e47d include all objects in the cmake file 2016-07-29 13:19:28 -07:00
Samuel Li
3cc6385426 remove unnecessary files 2016-07-29 13:05:53 -07:00
Samuel Li
ec46fd58a0 fixed bugs, ready for Chris to review 2016-07-29 11:27:37 -07:00
Samuel Li
ff620d0ab5 fixed a bug, identified another bug 2016-07-28 21:33:47 -07:00
Samuel Li
7f9fd0d66d finish all the statics 2016-07-28 21:07:05 -06:00
Samuel Li
fa1198bb85 summation algorithm function is ready 2016-07-28 19:12:57 -06:00
Samuel Li
1a7bae0335 with a hack on ArrayHandlePermutation.h, wavelet works on CUDA device as well 2016-07-28 17:55:38 -06:00
Samuel Li
60d2428100 finishing squash function 2016-07-28 16:40:37 -06:00
Samuel Li
951d9fce2c move device copy to a function of itself; other small changes 2016-07-28 14:55:10 -07:00
Robert Maynard
73440ccb4e vtkm::filter::MarchingCubes now uses vtkm::worklet
Instead of having two separate implementations of MarchingCubes, we have
a single implementation in worklet, and filter uses that.

That does mean that the version in worklet has been updated to support
merging of duplicate point coordinates.
2016-07-28 08:52:34 -04:00
Samuel Li
7dc59d80d7 trying to figure out how to use deviceAdapterAlgorithms 2016-07-27 16:23:26 -07:00
Samuel Li
ab021ce6f0 Chris helped to eliminate all compiling errors 2016-07-27 15:42:29 -07:00
Samuel Li
b2d15bbbde move wavelet stuff back to worklet folder 2016-07-27 14:28:38 -06:00
Samuel Li
148d96d3c4 UnitTestWaveletCompressorFilter performs tests on the output values 2016-07-26 17:46:53 -06:00
Samuel Li
69044fed3b remove old files 2016-07-21 14:37:39 -06:00
Samuel Li
3ea8ad6d5b IDWT test correct now 2016-07-21 14:18:05 -06:00
Samuel Li
a8d47c4bf1 IDWT1D finishes, but still has bugs. 2016-07-20 18:05:14 -06:00
Robert Maynard
33d7ad8f86 Unify the contour MarchingCubes implementations. 2016-07-20 12:40:03 -04:00
Samuel Li
5e3a5058ac InverseTransformOdd worklet finished 2016-07-19 13:40:46 -06:00
Samuel Li
16528df5ba remove redundent files 2016-07-19 10:06:48 -06:00
Samuel Li
7345737491 Fix a bug in wavelet filter to return ArrayHandles 2016-07-18 13:39:42 -06:00
Samuel Li
3c2aa8aa98 Testing filters, TestDWT1D() throws error 2016-07-18 10:56:45 -06:00
Samuel Li
6d81f261d5 Re-organize files, adding functions to filters. The worklet of WaveletTransform passes tests. 2016-07-18 09:23:20 -06:00
Samuel Li
4ac822acad implement DWT1D function. Thinking to move non-worklet stuff to filter foler. 2016-07-17 17:49:00 -06:00
Samuel Li
cb7a5d6f17 put Wavelets class under wavelet namespace 2016-07-17 15:19:07 -06:00
Samuel Li
ba1ea292db Merge branch 'wavelets' of gitlab.kitware.com:samuelli/vtk-m into wavelets 2016-07-17 15:03:44 -06:00
Samuel Li
7fab26f87b working on dwt 2016-07-17 15:03:41 -06:00
Samuel Li
5a712427f0 Merge branch 'wavelets' of gitlab.kitware.com:samuelli/vtk-m into wavelets 2016-07-17 13:29:29 -07:00
Samuel Li
1f2bb02f77 add comment line 2016-07-17 14:07:31 -06:00
Samuel Li
75f2dea59b Add SYMH handling of boundary 2016-07-17 13:27:18 -06:00
Samuel Li
bf0fd05b2a removed an abuse of templates 2016-07-15 21:06:03 -07:00
Samuel Li
1d4070c3ad Extend1D test succeed 2016-07-15 20:33:50 -06:00
Samuel Li
02a4610444 unit test module is capatable of taking in user input as problem size, as well as including data transfer into the timing. 2016-07-12 11:41:47 -07:00
Samuel Li
f1111c6333 Merge branch 'wavelets' of gitlab.kitware.com:samuelli/vtk-m into wavelets 2016-07-12 10:35:43 -06:00
Samuel Li
f8371d0754 add timer 2016-07-12 10:35:35 -06:00
Samuel Li
4cb21ee809 eliminate a warning 2016-07-12 09:51:05 -06:00
Samuel Li
8fb53f4b72 WaveletBase class finished. Now to add timing 2016-07-11 18:22:12 -06:00
Samuel Li
53ab1eb8c4 create a folder for wavelets 2016-07-11 17:54:41 -06:00
Samuel Li
8b20f8b8dc change tabs to spaces 2016-07-11 17:21:38 -06:00
Samuel Li
b16c766192 need to test GetDetailLength, GetApproxLength, WaveLengthValidate 2016-07-11 15:28:51 -06:00
Samuel Li
c510f5762a bug fixes; ForwardTransform agrees with its counterpart in vapor now. 2016-07-10 16:32:39 -06:00
Samuel Li
a26fa39c40 Filter is moved out of Wavelets 2016-07-10 14:08:39 -06:00
Samuel Li
c15633d66e Filter class finished 2016-07-10 13:46:40 -06:00
Samuel Li
b7402f9af4 working on the wavelet Filter class 2016-07-08 13:15:03 -06:00
Samuel Li
72eb2fff70 put wavelet filter banks into a separate file 2016-07-08 11:18:00 -06:00
Samuel Li
632a5946e1 add test files that uses vapor functions 2016-07-07 18:46:00 -06:00
Samuel Li
a94ff7fbe4 trying to work out boundary situations 2016-07-07 18:44:38 -06:00
Samuel Li
7e9de6706a finish coding ForwardTransform, need to test now 2016-07-07 16:14:43 -06:00
Samuel Li
68bd1d023b ForwardTransform interface works. Maybe to give filters a class? 2016-07-06 21:39:29 -06:00
Samuel Li
765192e4e0 doesn't compile, try on Alaska 2016-07-06 21:15:39 -06:00
Samuel Li
f785fcb18f work in progress for filter tables 2016-07-06 18:37:11 -06:00
Samuel Li
9c1e9574fa ForwardTransform worklet now have the correct interface 2016-07-06 15:21:12 -06:00
Samuel Li
1f4e847c56 wavelets worklet works as a doulber 2016-07-05 17:38:24 -06:00
Samuel Li
7879f32806 add files for testing Wavelets 2016-07-05 10:24:29 -06:00
Samuel Li
5e0d0c2d5a create wavelet worklet (a copy of PointElevation) 2016-07-05 10:19:54 -06:00
Robert Maynard
76cd2ac4da More corrections needed to suppress false positive host / device warnings. 2016-06-30 16:04:37 -04:00
Kenneth Moreland
d7ed37cd1e Fix incorrect export macro in FieldStatistics worklet 2016-06-27 13:39:03 -06:00
Kenneth Moreland
5a473b0012 Fix warning about type conversion
C has a feature where if you perform arithmetic on small integers (like
char and short), it will automatically promote the result to a 32 bit
integer. If you then store that back in the same type you started with
GCC will warn you that you are loosing the precision (that you didn't ask
for in the first place). This is particularly annoying in templated
code.

Anyway, fixed yet another instance of that happening.
2016-06-13 09:31:48 -06:00
Kenneth Moreland
fe8654d7eb Add export macros to splat kernel methods
Not having them could cause compiler issues.
2016-06-02 12:30:37 -06:00
Kenneth Moreland
caef882e9d List splatter worklet header files in build files 2016-06-02 10:24:21 -06:00
Robert Maynard
86efb75c67 Merge topic 'use_PointCount_over_FromCount'
317a48d4 Prefer using PointCount instead of FromCount in cell based worklets.

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Kenneth Moreland <kmorel@sandia.gov>
Merge-request: !431
2016-05-31 11:53:19 -04:00
Robert Maynard
317a48d42f Prefer using PointCount instead of FromCount in cell based worklets.
The PointCount name is far more descriptive and helps readers understand
what the content of the variable is.
2016-05-31 10:42:39 -04:00
Kenneth Moreland
b5415169e2 Change Field and related methods to use Range and Bounds
First, be more explicit when we mean a range of values in a field or a
spacial bounds. Use the Range and Bounds structs in Field and
CoordinateSystem to make all of this more clear (and reduce a bit of
code as well).
2016-05-29 18:49:36 -06:00
Robert Maynard
8dfe8cd385 Rename ControlSignature tag TopologyIn to CellSetIn. 2016-05-17 15:07:08 -04:00
Jeremy Meredith
d560cf1d85 Merge branch 'master' into cellsetdim 2016-05-13 14:53:08 -04:00
Jeremy Meredith
0c18278028 removing cell set dimensionality and splitting tetrahedralizer. 2016-05-13 14:26:59 -04:00
Robert Maynard
90099d1c55 Simplify ThreadIndicies so link time is reduced.
ThreadIndicies constructor was templated on the invocation type, which created
thousand's of versions of that symbol which all had the same behavior. So now
remove that and move that logic into a Worklet function since it requires
the invocation info.
2016-05-04 14:48:42 -04:00
John Biddiscombe
2cadb8ee62 Fix compilation after change to IdCountingType 2016-04-24 17:12:02 +02:00
Kenneth Moreland
cc497e6a1b Remove cont/Assert.h and exec/Assert.h
These asserts are consolidated into the unified Assert.h. Also made some
minor edits to add asserts where appropriate and a little bit of
reconfiguring as found.
2016-04-20 15:41:14 -06:00
Robert Maynard
6883a5ac94 Simplify using CellSetPermutation by providing a default permutation type.
Previously you had to explicitly state you wanted a CellSetPermutation
with an ArrayHanlde of Id's, now that is done automatically.
2016-04-12 14:24:51 -04:00
Robert Maynard
6ac50adcee Correct an off by 1 error in UnitTestWorkletMapFieldWholeArray.
The sum presumption was presuming 1 to 10 inclusive, when we actually have
0 to 9 inclusive.
2016-04-07 22:59:59 -04:00
Kenneth Moreland
0bcd172d39 Merge branch 'atomic-improvements' into 'master'
Add AtomicArrayInOut ControlSignature tag

This makes it easier to pass arrays with atomics to a worklet.

See merge request !382
2016-04-05 15:23:37 -04:00
Kenneth Moreland
43ed18b0e1 Add AtomicArrayInOut ControlSignature tag.
This makes it easier to pass arrays with atomics to a worklet.
2016-03-24 17:12:17 -06:00
Jeremy Meredith
ba8517eb67 removing all references to field order. 2016-03-23 10:38:14 -04:00
Robert Maynard
88f435d8ec TriangulateTable warning fixes. 2016-03-18 14:01:07 -04:00
Chuck Atkins
f74c0d3c88 Remove type conversion related warnings for GCC 2016-03-17 13:05:38 -04:00
Robert Maynard
8114736510 fix a long long to int warning. 2016-03-16 13:27:32 -04:00
Robert Maynard
177b31f330 Merge topic 'properly_compute_scatter_array_lengths'
85084f2c ScatterIdentity::GetVisitArray parameters are now named properly
86ecad65 ScatterIdentity::GetOutputToInputMap parameters are now named properly
40896e2b Allocate the scatter arrays to be proper length.

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Kenneth Moreland <kmorel@sandia.gov>
Merge-request: !359
2016-03-15 16:59:52 -04:00
Robert Maynard
85084f2ca1 ScatterIdentity::GetVisitArray parameters are now named properly
Now it is clear you pass in the input range and you will get the output
range
2016-03-15 16:49:36 -04:00
Robert Maynard
86ecad659a ScatterIdentity::GetOutputToInputMap parameters are now named properly
Now it is clear you pass in the input range and you will get the output
range.
2016-03-15 16:20:37 -04:00
Robert Maynard
40896e2bab Allocate the scatter arrays to be proper length.
The previous code would over allocate all the scatter arrays since
it was computing the output range, than using that as the input range.
2016-03-15 13:13:34 -04:00
Robert Maynard
531dececfd Multiple changes to VertexClustering to make it more suitable for filter.
The original implementation wasn't flexible enough to handle the requirements
that filter requires ( mainly policy support ).
2016-03-14 08:39:17 -04:00
Kenneth Moreland
f9750e83f7 Fix issues with Field constructor overloads
I ran into a few minor issues with the constructors to the Field class.

The big change I made was that I removed the Field constructors that
take an example type and create an empty field of that type. The problem
was that the example type was easily confused with some other type that
was supposed to describe an array. This lead to some odd behavior in the
compiler and resulted in errors in unexpected places.

The use case for this constructor is dubious. There were several tests
in the code that would create an empty field, add it to a data set, then
get it back out to pass to the worklet. The code is much simpler if you
just make an ArrayHandle of the right type and use that in the worklet
invoke directly. It is also faster to compile with smaller code because
the type is known statically (whereas it is lost the other way).

The other change was to declare references to ArrayHandle and
DynamicArrayHandle as const. There is nothing in the behavior that
invalidates the const, and it accepts arrays constructed in the
parameter.
2016-01-21 13:54:05 -07:00
Kenneth Moreland
c346d40eb4 Add WorkletMapCellToPoint class
The map topology worklets are to have convenience classes for all the
common mappings. However WorkletMapCellToPoint was left out as an
oversight. This adds the class.
2016-01-20 16:16:58 -07:00
Robert Maynard
8070586ea7 Merge topic 'less_temporary_copies'
4153c2c7 Found a few more places where we don't need to return by value.
dd85fc13 Document why we certain classes member variables need to be const ref.
6fb86da8 DynamicArrayHandle Casting methods now holds by const * const.
c1560e2d Perform less unnecessary copies when deducing a worklets parameters.

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Kenneth Moreland <kmorel@sandia.gov>
Merge-request: !320
2016-01-20 12:02:57 -05:00
Kenneth Moreland
9ccd7fa9c7 Change Regular to Uniform
There was an inconsistency in naming classes where axes-aligned grids
with even spacing were sometimes called "uniform" and sometimes called
"regular". Maintain consistency by always calling them uniform.
2016-01-19 15:54:05 -07:00
Robert Maynard
c1560e2d3f Perform less unnecessary copies when deducing a worklets parameters.
One of the causes of the large library size and slow compile times has been
that vtkm has been creating unnecessary copies when not needed. When the
objects being copied use shared_ptr this causes a bloom in library size. I
presume this bloom is caused by the atomic increment/decrement that is
required by shared_ptr.

For testing I used the following example:
```
struct ExampleFieldWorklet : public vtkm::worklet::WorkletMapField
{
  typedef void ControlSignature( FieldIn<>, FieldIn<>, FieldIn<>,
                                 FieldOut<>, FieldOut<>, FieldOut<> );
  typedef void ExecutionSignature( _1, _2, _3, _4, _5, _6 );

  template<typename T, typename U, typename V>
  VTKM_EXEC_EXPORT
  void operator()( const vtkm::Vec< T, 3 > & vec,
                   const U & scalar1,
                   const V& scalar2,
                   vtkm::Vec<T, 3>& out_vec,
                   U& out_scalar1,
                   V& out_scalar2 ) const
  {
    out_vec = vec * scalar1;
    out_scalar1 = scalar1 + scalar2;
    out_scalar2 = scalar2;
  }

  template<typename T, typename U, typename V, typename W, typename X, typename Y>
  VTKM_EXEC_EXPORT
  void operator()( const T & vec,
                   const U & scalar1,
                   const V& scalar2,
                   W& out_vec,
                   X& out_scalar,
                   Y& ) const
  {
  //no-op
  }
};

int main(int argc, char** argv)
{
  std::vector< vtkm::Vec<vtkm::Float32, 3> > inputVec;
  std::vector< vtkm::Int32 > inputScalar1;
  std::vector< vtkm::Float64 > inputScalar2;

  vtkm::cont::ArrayHandle< vtkm::Vec<vtkm::Float32, 3> > handleV =
    vtkm::cont::make_ArrayHandle(inputVec);

  vtkm::cont::ArrayHandle< vtkm::Vec<vtkm::Float32, 3> > handleS1 =
    vtkm::cont::make_ArrayHandle(inputVec);

  vtkm::cont::ArrayHandle< vtkm::Vec<vtkm::Float32, 3> > handleS2 =
    vtkm::cont::make_ArrayHandle(inputVec);

  vtkm::cont::ArrayHandle< vtkm::Vec<vtkm::Float32, 3> > handleOV;
  vtkm::cont::ArrayHandle< vtkm::Vec<vtkm::Float32, 3> > handleOS1;
  vtkm::cont::ArrayHandle< vtkm::Vec<vtkm::Float32, 3> > handleOS2;

  std::cout << "Making 3 output DynamicArrayHandles " << std::endl;
  vtkm::cont::DynamicArrayHandle out1(handleOV), out2(handleOS1), out3(handleOS2);

  typedef vtkm::worklet::DispatcherMapField<ExampleFieldWorklet> DispatcherType;

  std::cout << "Invoking ExampleFieldWorklet" << std::endl;
  DispatcherType dispatcher;

  dispatcher.Invoke(handleV, handleS1, handleS2, out1, out2, out3);

}
```

Original vtkm would generate a binary of size 4684kb and would perform 91
ArrayHandle copies or assignments. With this branch the binary size is
reduced to 2392kb and will perform 36 copies or assignments.
2016-01-19 09:20:49 -05:00
Kenneth Moreland
ed43dad6ca Simplify and unify cast interface.
Previously, DynamicArrayHandle and DynamicCellSet had slightly different
interfaces to their CastTo feature. It was a bit confusing and not all
that easy to use.

This change simplifies and unifies them by making each class have a single
CopyTo method that takes a reference to a cast object (an ArrayHandle or
CellSet, respectively) and fills that object with the data contained if
the cast is successfull. This interface gets around having to declare
strange types.

Each object also has a Cast method that has to have a template parameter
specified and returns a reference of that type (if possible).

In addition, the old behavior is preserved for DynamicArrayHandle (but
not DynamicCellSet). To avoid confusion, the name of that cast method is
CastToTypeStorage. However, the method was chaned to not take parameters
to make it consistent with the other Cast method.

Also, the IsType methods have been modified to reflect changes in
cast/copy. IsType now no longer takes arguments. However, an alternate
IsSameType does the same thing but does take an argument.
2016-01-18 15:58:04 -07:00
Robert Maynard
61ed34e154 Merge topic 'remove_fill_via_copy'
4bb3cce0 Use the DataSetBuilderExplicitIterative helper where it is useful.
eba2fb49 Fixed some warnings in the DataSetBuilder code.
dd312516 Fix issue found be moving over to  DataSetBuilderExplicit.
e7456fa1 Update vtkm tests and examples to use DataSetBuilders.
449c425a Allow DataSetBuilderExplicit to create CellSetSingleType.

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Kenneth Moreland <kmorel@sandia.gov>
Merge-request: !318
2016-01-18 17:17:40 -05:00
Robert Maynard
4bb3cce016 Use the DataSetBuilderExplicitIterative helper where it is useful. 2016-01-18 16:19:48 -05:00
Robert Maynard
dd312516f6 Fix issue found be moving over to DataSetBuilderExplicit.
Mainly issue dealing with dimensionality of cell sets and what that represents.
Have added in code to allow user to specify a custom dimensionality so that
tests continue to work properly.
2016-01-15 16:16:38 -05:00
Robert Maynard
e7456fa120 Update vtkm tests and examples to use DataSetBuilders. 2016-01-15 15:44:56 -05:00
Robert Maynard
9da2c081a6 Merge topic 'reduce_placeholder_name_length'
c8551cb7 Reduce the name length on Args<1>, etc to help reduce symbol size.

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !312
2016-01-15 10:12:10 -05:00
Robert Maynard
c8551cb758 Reduce the name length on Args<1>, etc to help reduce symbol size. 2016-01-15 08:32:50 -05:00
Robert Maynard
e39c7819aa Merge topic 'more_worklets_not_templated_on_deviceadapter'
956cedfd Turn off the benchmarking ExternalsFaces.
18b866d6 Threshold worklet is not templated on device adapter.
dbee9275 ExternalFaces worklet is not templated on device adapter.

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !315
2016-01-15 08:25:18 -05:00
Robert Maynard
f4d2b63fcb Merge topic 'vertex_clustering_not_templated_on_device'
12ddcfdd VertexClustering worklet is not templated on device adapter.

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !314
2016-01-14 16:15:10 -05:00
Robert Maynard
956cedfd17 Turn off the benchmarking ExternalsFaces. 2016-01-14 15:56:10 -05:00
Robert Maynard
18b866d6e0 Threshold worklet is not templated on device adapter.
This should help reduce the amount of code generation, when building the
Threshold worklet for all device adapters.
2016-01-14 15:55:22 -05:00
Robert Maynard
dbee92752e ExternalFaces worklet is not templated on device adapter.
This should help reduce the amount of code generation, when building the
ExternalFaces worklet for all device adapters.
2016-01-14 15:55:12 -05:00
Robert Maynard
12ddcfdda7 VertexClustering worklet is not templated on device adapter.
This should help reduce the amount of code generation, when building the
VertexClustering worklet for all device adapters.
2016-01-14 15:42:27 -05:00
Dave Pugmire
a5972e6a15 Merge topic 'dataset-builder2'
f86382f0 Fix support for CoordinateSystems using ArrayHandleCartesianProduct.
d6a2a142 Add toleranced compare for values. Add tests for vtkm::Float32,Float64,Id typed arrays.
5d438353 Add toleranced comparisions for bounds validation. Also, add vtkm::Float32 and vtkm::Float64 to the testing for rectilinear and regular datasets.
b225ae97 Rectilinear coordinates (created with DataSetBuilderRectilinear) are now converted to vtkm::FloatDefault. This reduces the number of types to consider when casting inside CoordinateSystem, and was felt by all to be a reasonable restriction.
d755e43d Use ArrayHandleCompositeVector to represent separated point arrays for DataSetBuilderExplicit.h.
c7b0ffb8 Add tests for DataSetBuilderExplicit. Added cont/testing/ExplicitTestData.h which includes several explicit datasets.  These datasets come from VTK data generated in VisIt.  The new unit tests build datasets in several different ways and do some basic validation.
b4d04fff Add specialization of printSummary_ArrayHandle for UInt8. It prints them as characters, which are a little hard to understand to this computer scientist.
bd929c20 Fix compiler warnings.
...

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Kenneth Moreland <kmorel@sandia.gov>
Merge-request: !262
2016-01-14 14:57:02 -05:00
T.J. Corona
15e1f80ddd Generalize MarchingCubes input with additional template parameters. 2016-01-08 14:56:10 -05:00
Robert Maynard
34ad520987 Merge topic 'marching_cubes_normal_generation_option'
82a573f7 MarchingCubes is now able to not generate normals.
502e7c28 Merge branch 'cleanup_scatter_counting_uses' into marching_cubes_normal_generation_option
8079dc28 MarchingCubes generate step now requires a ScatterCounting object.
4cd2f582 Add a default constructor for ScatterCounting.

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Kenneth Moreland <kmorel@sandia.gov>
Merge-request: !300
2016-01-08 11:50:10 -05:00
Robert Maynard
82a573f712 MarchingCubes is now able to not generate normals. 2016-01-08 10:42:49 -05:00
Kenneth Moreland
23c3cd3020 Add PointCount to WorkletMapPointToCell.
WorkletMapPointToCell is a convenience subclass of WorkletMapTopology.
As such, it renames all the From/To signature tags to say Point/Cell to
be easier to read. However, the alias for FromCount was missing. Add the
alias PointCount.
2016-01-07 15:26:29 -07:00
Robert Maynard
502e7c28f2 Merge branch 'cleanup_scatter_counting_uses' into marching_cubes_normal_generation_option 2016-01-04 16:52:46 -05:00
Robert Maynard
30ac46f20e We know the exact FieldOutCell types for MarchingCubes, so restrict it.
By restricting the types explicitly in the ControlSignature we reduce
the code bloat, if we ever pass in a DynamicArrayHandle as one of those
parameters.
2016-01-04 16:43:28 -05:00
Robert Maynard
8079dc28f0 MarchingCubes generate step now requires a ScatterCounting object.
Instead of having the generate step templated on the device adapter and
the counting handle, we take in a fully constructed scatter counting object.
2016-01-04 16:38:11 -05:00
Robert Maynard
4cd2f582f4 Add a default constructor for ScatterCounting.
Without a default constructor for ScatterCounting any class that wants
to hold onto a ScatterCounting object is required to know what device
they are running on. By allowing default construction, we can move that
requirement to just have a method on the object require a device adapter
object.
2016-01-04 16:00:29 -05:00
Robert Maynard
c70da5fc23 Extend vtkm::DeviceAdapterTraits to include a unique numeric identifier.
Previously each device adapter only had a unique string name. This was
not the best when it came to developing data structures to track the status
of a given device at runtime.

This adds in a unique numeric identifier to each device adapter. This will
allow classes to easily create bitmasks / lookup tables for the validity of
devices.
2015-12-16 11:18:52 -05:00
Robert Maynard
f96206338f Merge topic 'enable_runtime_detection_of_cuda'
a7127f0f Adding vtkm::cont::RuntimeDeviceInformation.
7d249e89 Move DeviceAdapterTraits into vtkm::cont as they are user API.

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Kenneth Moreland <kmorel@sandia.gov>
Merge-request: !287
2015-12-16 08:48:24 -05:00
Robert Maynard
a7127f0fc3 Adding vtkm::cont::RuntimeDeviceInformation.
The RuntimeDeviceInformation class allows developers to check if a given
device is supported on a machine at runtime. This allows developers to properly
check for CUDA support before running any worklets.
2015-12-15 17:25:27 -05:00
Robert Maynard
7b7a56c664 UnitTestCellAverage now properly verifies against an explicit cell set. 2015-12-14 10:07:32 -05:00
Robert Maynard
7d249e8996 Move DeviceAdapterTraits into vtkm::cont as they are user API.
When writing multiple backend code users of vtkm need to use the
DeviceAdapterTraits classes, so therefore we should move them to vtkm::cont
to signify this.
2015-12-11 09:52:18 -05:00
dpugmire
e674a6c80d Fix issue with PointToCell indices not being computed.
Also, mark them as valid, when valid.
2015-12-08 15:14:43 -05:00
Kenneth Moreland
6f03f72b49 Use WholeArrayIn instead of ExecObject for MarchingCubes worklets
The two worklets for marching cubes use tables stored in arrays that
have random access. Previously, they arrays were passed using the
ExecObject tag in ControlSignature along with ExecutionWholeArrayConst.
This changes to using a WholeArrayIn tag and just passing the
ArrayHandle directly to the Invoke method. The end result is the same,
but the code is a bit cleaner.
2015-12-07 09:52:29 -07:00
Kenneth Moreland
2ac8456b5e Add WholeArray* ControlSignature tags
The WholeArrayIn, WholeArrayInOut, and WholeArrayOut ControlSignature
tags behave similarly to using an ExecObject tag with an
ExecutionWholeArray or ExecutionWholeArrayConst object. However, the
WholeArray* tags can simplify some implementations in two ways. First,
it allows you to specify more precisely what data is passed in. You have
to pass in an ArrayHandle or else an error will occur (as opposed to be
able to pass in any type of execution object). Second, this allows you
to easily pass in arrays stored in DynamicArrayHandle objects. The
Invoke mechanism will automatically find the appropriate static class.
This cannot be done easily with ExecutionWholeArray.
2015-12-07 09:52:29 -07:00
T.J. Corona
baa73eaad8 Merge topic 'marching-cubes'
33b0d1bf Move marching cubes edge table out of the worklet.
a5ae4127 Remove IsosurfaceUniformGrid.
35355382 Generalize IsosurfaceUniformGrid to Accept explicit cell sets.

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Kenneth Moreland <kmorel@sandia.gov>
Merge-request: !272
2015-12-03 14:54:02 -05:00
T.J. Corona
33b0d1bfd7 Move marching cubes edge table out of the worklet. 2015-12-02 15:33:52 -05:00
T.J. Corona
a5ae4127e0 Remove IsosurfaceUniformGrid. 2015-12-02 15:11:56 -05:00
Dave Pugmire
29e4f06691 remove explicitdataset1, which was identical to dataset0. 2015-12-01 17:24:52 -05:00
Kenneth Moreland
a598f03fbb Fix initialization order of fields in MakeStreamLines class
When a C++ object is constructed, the fields (ivars) of that object are
initialized in the order they are declared in the structure regardless
of the order of initializers listed in the constructor. Thus, it is good
C++ convention to list the initializers of the constructor in the same
order they are declared in the class so that there is no confusion about
the order of initialization (which can matter if there are any
dependencies). To help enforce this convention, some compilers warn if
the order does not match. This commit fixes that issue.

This commit also removes trailing whitespace at the end of some lines in
StreamLineUniformGrid.h. My editor does this automatically because
trailing whitespace bugs some programmers.
2015-11-30 14:20:00 -07:00
Patricia Kroll Fasel - 090207
6c4fb856df Add example data file for streamline. 2015-11-23 17:00:22 -07:00
Patricia Kroll Fasel - 090207
cba0e218d8 Verify unit test results 2015-11-23 16:46:23 -07:00
Patricia Kroll Fasel - 090207
3946b0c462 Add unit test, pass all args in Run() 2015-11-23 16:19:26 -07:00
Patricia Kroll Fasel - 090207
02f84a1992 StreamLine filter outputs dataset. Add example. 2015-11-23 12:54:12 -07:00
T.J. Corona
353553829d Generalize IsosurfaceUniformGrid to Accept explicit cell sets. 2015-11-20 12:38:03 -05:00
Patricia Kroll Fasel - 090207
e34aaa02ea Merge branch 'master' of gitlab.kitware.com:Fasel/vtk-m into streamline 2015-11-12 16:08:44 -07:00
Patricia Kroll Fasel - 090207
82d9c10206 Pass input and output datasets and not arrays. Support FORWARD, BACKWARD and BOTH. 2015-11-12 15:35:46 -07:00
Sujin Philip
2b771418e6 Update Clip worklets to work with more types 2015-11-12 10:28:22 -05:00
Kenneth Moreland
2fd2174378 Use bit-wise math to compute MC case. 2015-11-10 14:56:26 -07:00
Patricia Kroll Fasel - 090207
add67881db Rework stream code 2015-11-10 10:33:21 -07:00
Kenneth Moreland
377b7123ff Remove divide from ClassifyCell.
Previously, there was a table holding the number of vertices produced
for each MC case. However, what we really need is the number of
triangles, so we would have to divide that by 3. Instead, just store the
number of triangles.
2015-11-09 22:13:26 -07:00
Patricia Kroll Fasel - 090207
d3e9d5df3b Compiles and runs under cuda. 2015-11-09 12:51:45 -07:00
Kenneth Moreland
1898ab473c Remove unnecessary comment.
It was a TODO comment that is already done.
2015-11-08 18:28:08 -07:00
Kenneth Moreland
9409a54191 Make new tetrahedralize functors work on CUDA
The previous implementation was declaring static arrays in methods,
which cannot be used on a CUDA device. Instead, make static tables that
can be passed to the device with array handles (much like clip tables
do).
2015-11-07 10:09:19 -07:00
Kenneth Moreland
d44860c3cf Change tetrahedralize filters to use new Scatter mechanism
The tetrahedralize algorithms have been changed to use the Scatter
classes to build indices rather than build them on their own.

To implement this efficiently with structured grids, a new ScatterUniform
class was made. I also added a new execution argument tag that allows
you to get the thread indices object from within the worklet.
2015-11-07 04:57:16 -07:00
Kenneth Moreland
740adc70f3 Save triangle counts from isosurface classify as IdComponent.
When compiling with 64-bit ids (which is the default), this can save
quite a bit of time.
2015-11-06 18:05:21 -07:00
Kenneth Moreland
8ab2938b8c When iteratively computing output map in count scatter, compute visit
It is the case that there are two ways to create the output to input map in
a count scatter. The first is to use a parallel find for every output index.
The second, which is used when there are lots of output, is to iterate over
the input and write out the reverse map. In this case, it is trivial to also
write out the visit indices, so do that instead of a bunch more searches.
2015-11-06 18:05:21 -07:00
Kenneth Moreland
b7fdbb7294 Fix issue with indexing into triangle table offset
Each triangle in the isosurface table has three index entries. Thus,
each visit index must increment by 3.
2015-11-06 18:05:20 -07:00
Kenneth Moreland
58aa46df74 Fix spacing in Isosurface test code.
The original isosurface code was not treating the origin and spacing of
the point coordinates correctly. Instead, it was ignoring the origin and
spacing and instead scaling all point coordinates to be in the unit cube
in world space (except there was also an off-by-one error in that). This
change recompensates by adjusting the origin and spacing to make the
correct position where the geometry was previously errantly placed.
2015-11-06 18:05:20 -07:00
Kenneth Moreland
5b54af546a Change Isosurface algorithm to work with scatter counting
Now that ScatterCounting is implemented, we can use that to implement a
good part of the triangle generation in the isosurface algorithm. This
changes the worklet from a basic map to a topology map, which also
reduces a lot of code.
2015-11-06 18:05:20 -07:00
Kenneth Moreland
e6a9c96c96 Adding ScatterCounting 2015-11-06 18:05:20 -07:00
Kenneth Moreland
7b6e6e4a66 Enable output to input map in fetch mechanism.
This changes the interface to the ThreadIndices classes to have both
input and output indices. It also adds a visit index to ThreadIndices.

Also added the VisitIndex execution signature tag, which relies on this
behavior.
2015-11-06 18:05:20 -07:00
Kenneth Moreland
b0c5a32611 Add Scatter parameters to Invocation.
We are passing in execution objects with the Invocation when the Worklet
is scheduled, but we are not using it yet.
2015-11-06 18:05:20 -07:00