Merge branch 'index-array-handle' into 'master'

Add ArrayHandleIndex

Add an ```ArrayHandleIndex``` class that echoes the index. This is really a special version of ```ArrayHandleCounting``` that is of type ```vtkm::Id``` and starts at 0, but it is the most common case and does not need the extra addition.

Also modified ```ArrayHandleCounting``` to support a step, which makes the use a bit more powerful.

See merge request !192
This commit is contained in:
Kenneth Moreland 2015-09-15 21:58:29 -04:00
commit fd401f0feb
18 changed files with 181 additions and 132 deletions

@ -42,20 +42,23 @@ public:
VTKM_EXEC_CONT_EXPORT VTKM_EXEC_CONT_EXPORT
ArrayPortalCounting() : ArrayPortalCounting() :
StartingValue(), Start(0),
Step(1),
NumberOfValues(0) NumberOfValues(0)
{ } { }
VTKM_EXEC_CONT_EXPORT VTKM_EXEC_CONT_EXPORT
ArrayPortalCounting(ValueType startingValue, vtkm::Id numValues) : ArrayPortalCounting(ValueType start, ValueType step, vtkm::Id numValues) :
StartingValue(startingValue), Start(start),
Step(step),
NumberOfValues(numValues) NumberOfValues(numValues)
{ } { }
template<typename OtherValueType> template<typename OtherValueType>
VTKM_EXEC_CONT_EXPORT VTKM_EXEC_CONT_EXPORT
ArrayPortalCounting(const ArrayPortalCounting<OtherValueType> &src) ArrayPortalCounting(const ArrayPortalCounting<OtherValueType> &src)
: StartingValue(src.StartingValue), : Start(src.Start),
Step(src.Step),
NumberOfValues(src.NumberOfValues) NumberOfValues(src.NumberOfValues)
{ } { }
@ -64,7 +67,8 @@ public:
ArrayPortalCounting<ValueType> &operator=( ArrayPortalCounting<ValueType> &operator=(
const ArrayPortalCounting<OtherValueType> &src) const ArrayPortalCounting<OtherValueType> &src)
{ {
this->StartingValue = src.StartingValue; this->Start= src.Start;
this->Step = src.Step;
this->NumberOfValues = src.NumberOfValues; this->NumberOfValues = src.NumberOfValues;
return *this; return *this;
} }
@ -74,12 +78,13 @@ public:
VTKM_EXEC_CONT_EXPORT VTKM_EXEC_CONT_EXPORT
ValueType Get(vtkm::Id index) const { ValueType Get(vtkm::Id index) const {
return ValueType(StartingValue + return ValueType(this->Start +
ValueType(static_cast<ComponentType>(index))); this->Step*ValueType(static_cast<ComponentType>(index)));
} }
private: private:
ValueType StartingValue; ValueType Start;
ValueType Step;
vtkm::Id NumberOfValues; vtkm::Id NumberOfValues;
}; };
@ -111,8 +116,10 @@ class ArrayHandleCounting
public: public:
VTKM_CONT_EXPORT VTKM_CONT_EXPORT
ArrayHandleCounting(CountingValueType startingValue, vtkm::Id length) ArrayHandleCounting(CountingValueType start,
:Superclass(typename Superclass::PortalConstControl(startingValue, length)) CountingValueType step,
vtkm::Id length)
:Superclass(typename Superclass::PortalConstControl(start, step, length))
{ {
} }
@ -125,10 +132,12 @@ public:
template<typename CountingValueType> template<typename CountingValueType>
VTKM_CONT_EXPORT VTKM_CONT_EXPORT
vtkm::cont::ArrayHandleCounting<CountingValueType> vtkm::cont::ArrayHandleCounting<CountingValueType>
make_ArrayHandleCounting(CountingValueType startingValue, make_ArrayHandleCounting(CountingValueType start,
CountingValueType step,
vtkm::Id length) vtkm::Id length)
{ {
return vtkm::cont::ArrayHandleCounting<CountingValueType>(startingValue, return vtkm::cont::ArrayHandleCounting<CountingValueType>(start,
step,
length); length);
} }

@ -0,0 +1,59 @@
//=============================================================================
//
// Copyright (c) Kitware, Inc.
// All rights reserved.
// See LICENSE.txt for details.
//
// This software is distributed WITHOUT ANY WARRANTY; without even
// the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
// PURPOSE. See the above copyright notice for more information.
//
// Copyright 2015 Sandia Corporation.
// Copyright 2015 UT-Battelle, LLC.
// Copyright 2015 Los Alamos National Security.
//
// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
// the U.S. Government retains certain rights in this software.
// Under the terms of Contract DE-AC52-06NA25396 with Los Alamos National
// Laboratory (LANL), the U.S. Government retains certain rights in
// this software.
//
//=============================================================================
#ifndef vtk_m_cont_ArrayHandleIndex_h
#define vtk_m_cont_ArrayHandleIndex_h
#include <vtkm/cont/ArrayHandleImplicit.h>
namespace vtkm {
namespace cont {
namespace detail {
struct IndexFunctor {
VTKM_EXEC_CONT_EXPORT
vtkm::Id operator()(vtkm::Id index) const { return index; }
};
} // namespace detail
/// \brief An implicit array handle containing the its own indices.
///
/// \c ArrayHandleIndex is an implicit array handle containing the values
/// 0, 1, 2, 3,... to a specified size. Every value in the array is the same
/// as the index to that value.
///
class ArrayHandleIndex
: public vtkm::cont::ArrayHandleImplicit<vtkm::Id, detail::IndexFunctor>
{
typedef vtkm::cont::ArrayHandleImplicit<vtkm::Id, detail::IndexFunctor>
Superclass;
public:
ArrayHandleIndex(vtkm::Id length = 0)
: Superclass(detail::IndexFunctor(), length) { }
};
}
} // namespace vtkm::cont
#endif //vtk_m_cont_ArrayHandleIndex_h

@ -27,6 +27,7 @@ set(headers
ArrayHandleConstant.h ArrayHandleConstant.h
ArrayHandleCounting.h ArrayHandleCounting.h
ArrayHandleImplicit.h ArrayHandleImplicit.h
ArrayHandleIndex.h
ArrayHandlePermutation.h ArrayHandlePermutation.h
ArrayHandleTransform.h ArrayHandleTransform.h
ArrayHandleUniformPointCoordinates.h ArrayHandleUniformPointCoordinates.h

@ -21,8 +21,8 @@
#define vtk_m_cont_internal_DeviceAdapterAlgorithmGeneral_h #define vtk_m_cont_internal_DeviceAdapterAlgorithmGeneral_h
#include <vtkm/cont/ArrayHandle.h> #include <vtkm/cont/ArrayHandle.h>
#include <vtkm/cont/ArrayHandleCounting.h>
#include <vtkm/cont/ArrayHandleImplicit.h> #include <vtkm/cont/ArrayHandleImplicit.h>
#include <vtkm/cont/ArrayHandleIndex.h>
#include <vtkm/cont/ArrayHandleZip.h> #include <vtkm/cont/ArrayHandleZip.h>
#include <vtkm/cont/ArrayPortalToIterators.h> #include <vtkm/cont/ArrayPortalToIterators.h>
#include <vtkm/cont/StorageBasic.h> #include <vtkm/cont/StorageBasic.h>
@ -1204,11 +1204,7 @@ template<typename T, typename U, class CIn, class CStencil, class COut>
const vtkm::cont::ArrayHandle<T,CStencil> &stencil, const vtkm::cont::ArrayHandle<T,CStencil> &stencil,
vtkm::cont::ArrayHandle<vtkm::Id,COut> &output) vtkm::cont::ArrayHandle<vtkm::Id,COut> &output)
{ {
typedef vtkm::cont::ArrayHandleCounting<vtkm::Id> CountingHandleType; vtkm::cont::ArrayHandleIndex input(stencil.GetNumberOfValues());
CountingHandleType input =
vtkm::cont::make_ArrayHandleCounting(vtkm::Id(0),
stencil.GetNumberOfValues());
DerivedAlgorithm::StreamCompact(input, stencil, output); DerivedAlgorithm::StreamCompact(input, stencil, output);
} }

@ -397,7 +397,7 @@ public:
IndexType indexArray; IndexType indexArray;
ValueType valuesScattered; ValueType valuesScattered;
Copy( make_ArrayHandleCounting(0, keys.GetNumberOfValues()), indexArray); Copy( ArrayHandleIndex(keys.GetNumberOfValues()), indexArray);
SortByKeyDirect(keys, indexArray, wrappedCompare); SortByKeyDirect(keys, indexArray, wrappedCompare);
Scatter(values, indexArray, valuesScattered); Scatter(values, indexArray, valuesScattered);
Copy( valuesScattered, values ); Copy( valuesScattered, values );

@ -27,6 +27,7 @@
#include <vtkm/exec/internal/ErrorMessageBuffer.h> #include <vtkm/exec/internal/ErrorMessageBuffer.h>
#include <vtkm/Extent.h> #include <vtkm/Extent.h>
#include <vtkm/cont/ArrayHandle.h> #include <vtkm/cont/ArrayHandle.h>
#include <vtkm/cont/ArrayHandleIndex.h>
#include <vtkm/cont/ArrayHandleZip.h> #include <vtkm/cont/ArrayHandleZip.h>
#include <vtkm/cont/DeviceAdapterAlgorithm.h> #include <vtkm/cont/DeviceAdapterAlgorithm.h>
#include <vtkm/cont/ErrorExecution.h> #include <vtkm/cont/ErrorExecution.h>
@ -652,7 +653,7 @@ public:
ValueType valuesScattered; ValueType valuesScattered;
const vtkm::Id size = values.GetNumberOfValues(); const vtkm::Id size = values.GetNumberOfValues();
Copy( make_ArrayHandleCounting(0, keys.GetNumberOfValues()), indexArray); Copy( ArrayHandleIndex(keys.GetNumberOfValues()), indexArray);
ZipHandleType zipHandle = vtkm::cont::make_ArrayHandleZip(keys,indexArray); ZipHandleType zipHandle = vtkm::cont::make_ArrayHandleZip(keys,indexArray);
Sort(zipHandle,KeyCompare<T,vtkm::Id,Compare>(comp)); Sort(zipHandle,KeyCompare<T,vtkm::Id,Compare>(comp));

@ -35,6 +35,7 @@ set(unit_tests
UnitTestArrayHandleCounting.cxx UnitTestArrayHandleCounting.cxx
UnitTestArrayHandleFancy.cxx UnitTestArrayHandleFancy.cxx
UnitTestArrayHandleImplicit.cxx UnitTestArrayHandleImplicit.cxx
UnitTestArrayHandleIndex.cxx
UnitTestArrayHandlePermutation.cxx UnitTestArrayHandlePermutation.cxx
UnitTestArrayHandleTransform.cxx UnitTestArrayHandleTransform.cxx
UnitTestArrayHandleUniformPointCoordinates.cxx UnitTestArrayHandleUniformPointCoordinates.cxx

@ -23,8 +23,8 @@
#include <vtkm/TypeTraits.h> #include <vtkm/TypeTraits.h>
#include <vtkm/BinaryPredicates.h> #include <vtkm/BinaryPredicates.h>
#include <vtkm/cont/ArrayHandle.h> #include <vtkm/cont/ArrayHandle.h>
#include <vtkm/cont/ArrayHandleCounting.h>
#include <vtkm/cont/ArrayHandleConstant.h> #include <vtkm/cont/ArrayHandleConstant.h>
#include <vtkm/cont/ArrayHandleIndex.h>
#include <vtkm/cont/ArrayHandlePermutation.h> #include <vtkm/cont/ArrayHandlePermutation.h>
#include <vtkm/cont/ArrayHandleZip.h> #include <vtkm/cont/ArrayHandleZip.h>
#include <vtkm/cont/ArrayPortalToIterators.h> #include <vtkm/cont/ArrayPortalToIterators.h>
@ -765,8 +765,8 @@ private:
std::cout << "Sort of a ArrayHandlePermutation" << std::endl; std::cout << "Sort of a ArrayHandlePermutation" << std::endl;
//verify that we can use ArrayHandlePermutation inplace //verify that we can use ArrayHandlePermutation inplace
vtkm::cont::ArrayHandleCounting< vtkm::Id > index(0, ARRAY_SIZE); vtkm::cont::ArrayHandleIndex index(ARRAY_SIZE);
vtkm::cont::ArrayHandlePermutation< vtkm::cont::ArrayHandleCounting< vtkm::Id >, vtkm::cont::ArrayHandlePermutation< vtkm::cont::ArrayHandleIndex,
IdArrayHandle> perm(index, sorted); IdArrayHandle> perm(index, sorted);
//verify we can use a custom operator sort with permutation handle //verify we can use a custom operator sort with permutation handle

@ -28,6 +28,7 @@
#include <vtkm/cont/ArrayHandleConstant.h> #include <vtkm/cont/ArrayHandleConstant.h>
#include <vtkm/cont/ArrayHandleCounting.h> #include <vtkm/cont/ArrayHandleCounting.h>
#include <vtkm/cont/ArrayHandleImplicit.h> #include <vtkm/cont/ArrayHandleImplicit.h>
#include <vtkm/cont/ArrayHandleIndex.h>
#include <vtkm/cont/ArrayHandlePermutation.h> #include <vtkm/cont/ArrayHandlePermutation.h>
#include <vtkm/cont/ArrayHandleTransform.h> #include <vtkm/cont/ArrayHandleTransform.h>
#include <vtkm/cont/ArrayHandleZip.h> #include <vtkm/cont/ArrayHandleZip.h>
@ -43,58 +44,6 @@
namespace fancy_array_detail namespace fancy_array_detail
{ {
class IncrementBy2
{
public:
VTKM_EXEC_CONT_EXPORT
IncrementBy2(): Value(0)
{
}
VTKM_EXEC_CONT_EXPORT
explicit IncrementBy2(vtkm::Id value): Value(2*value) { }
VTKM_EXEC_CONT_EXPORT
operator vtkm::Id() const { return this->Value; }
VTKM_EXEC_CONT_EXPORT
IncrementBy2 operator+(const IncrementBy2 &rhs) const
{
//don't want to trigger the vtkm::Id constructor
//when making a copy and cause this to be IncrementBy4
IncrementBy2 newValue;
newValue.Value = this->Value + rhs.Value;
return newValue;
}
VTKM_EXEC_CONT_EXPORT
bool operator==(const IncrementBy2 &other) const
{
return this->Value == other.Value;
}
VTKM_EXEC_CONT_EXPORT
IncrementBy2 &operator++()
{
this->Value++;
this->Value++;
return *this;
}
VTKM_CONT_EXPORT
friend std::ostream& operator<<(std::ostream &os, const IncrementBy2 &v)
{ os << v.Value; return os; }
vtkm::Id Value;
};
IncrementBy2 TestValue(vtkm::Id index, IncrementBy2)
{
return IncrementBy2(::TestValue(index, vtkm::Id()));
}
template<typename ValueType> template<typename ValueType>
struct IndexSquared struct IndexSquared
{ {
@ -113,28 +62,10 @@ struct ValueSquared
VTKM_EXEC_CONT_EXPORT VTKM_EXEC_CONT_EXPORT
ValueType operator()(U u) const ValueType operator()(U u) const
{ return vtkm::dot(u, u); } { return vtkm::dot(u, u); }
VTKM_EXEC_CONT_EXPORT
ValueType operator()( ::fancy_array_detail::IncrementBy2 u) const
{ return ValueType( vtkm::dot(u.Value, u.Value) ); }
}; };
} }
VTKM_BASIC_TYPE_VECTOR(::fancy_array_detail::IncrementBy2)
namespace vtkm { namespace testing {
template<>
struct TypeName< ::fancy_array_detail::IncrementBy2 >
{
static std::string Name()
{
return std::string("fancy_array_detail::IncrementBy2");
}
};
} }
namespace vtkm { namespace vtkm {
namespace cont { namespace cont {
namespace testing { namespace testing {
@ -247,7 +178,7 @@ private:
const ValueType start = ValueType(component_value); const ValueType start = ValueType(component_value);
vtkm::cont::ArrayHandleCounting< ValueType > counting = vtkm::cont::ArrayHandleCounting< ValueType > counting =
vtkm::cont::make_ArrayHandleCounting(start, length); vtkm::cont::make_ArrayHandleCounting(start, ValueType(1), length);
vtkm::cont::ArrayHandle< ValueType > result; vtkm::cont::ArrayHandle< ValueType > result;
vtkm::worklet::DispatcherMapField< PassThrough, DeviceAdapterTag > dispatcher; vtkm::worklet::DispatcherMapField< PassThrough, DeviceAdapterTag > dispatcher;
@ -322,6 +253,7 @@ private:
KeyHandleType counting = KeyHandleType counting =
vtkm::cont::make_ArrayHandleCounting<vtkm::Id>(start_pos, vtkm::cont::make_ArrayHandleCounting<vtkm::Id>(start_pos,
1,
counting_length); counting_length);
ValueHandleType implicit = ValueHandleType implicit =
@ -419,9 +351,9 @@ private:
ComponentType component_value(0); ComponentType component_value(0);
const ValueType start = ValueType(component_value); const ValueType start = ValueType(component_value);
vtkm::cont::ArrayHandleCounting< ValueType > counting = vtkm::cont::ArrayHandleCounting< ValueType > counting(start,
vtkm::cont::make_ArrayHandleCounting(start, ValueType(1),
length); length);
vtkm::cont::ArrayHandleTransform< vtkm::cont::ArrayHandleTransform<
OutputValueType, OutputValueType,
@ -459,9 +391,9 @@ private:
VTKM_CONT_EXPORT VTKM_CONT_EXPORT
void operator()(CastToType vtkmNotUsed(type)) const void operator()(CastToType vtkmNotUsed(type)) const
{ {
typedef vtkm::cont::ArrayHandleCounting<vtkm::Int64> InputArrayType; typedef vtkm::cont::ArrayHandleIndex InputArrayType;
InputArrayType input(0, ARRAY_SIZE); InputArrayType input(ARRAY_SIZE);
vtkm::cont::ArrayHandleCast<CastToType, InputArrayType> castArray = vtkm::cont::ArrayHandleCast<CastToType, InputArrayType> castArray =
vtkm::cont::make_ArrayHandleCast(input, CastToType()); vtkm::cont::make_ArrayHandleCast(input, CastToType());
vtkm::cont::ArrayHandle<CastToType> result; vtkm::cont::ArrayHandle<CastToType> result;
@ -556,7 +488,7 @@ private:
values.Allocate(length*2); values.Allocate(length*2);
KeyHandleType counting = KeyHandleType counting =
vtkm::cont::make_ArrayHandleCounting<vtkm::Id>(length, length); vtkm::cont::make_ArrayHandleCounting<vtkm::Id>(length, 1, length);
PermutationHandleType permutation = PermutationHandleType permutation =
vtkm::cont::make_ArrayHandlePermutation(counting, values); vtkm::cont::make_ArrayHandlePermutation(counting, values);
@ -641,8 +573,7 @@ private:
vtkm::Float32, vtkm::Float32,
vtkm::Float64, vtkm::Float64,
vtkm::Vec<vtkm::Float64,3>, vtkm::Vec<vtkm::Float64,3>,
vtkm::Vec<vtkm::Float32,4>, vtkm::Vec<vtkm::Float32,4>
::fancy_array_detail::IncrementBy2
> >
{ }; { };

@ -54,6 +54,16 @@ public:
return StringInt(this->Value + rhs.Value); return StringInt(this->Value + rhs.Value);
} }
StringInt operator*(const StringInt &rhs) const
{
StringInt result;
for (vtkm::Id i = 0; i < rhs; i++)
{
result = result + *this;
}
return result;
}
bool operator==(const StringInt &other) const bool operator==(const StringInt &other) const
{ {
return this->Value.size() == other.Value.size(); return this->Value.size() == other.Value.size();
@ -88,14 +98,14 @@ struct TemplatedTests
typedef typename ArrayHandleType::PortalConstControl PortalType; typedef typename ArrayHandleType::PortalConstControl PortalType;
void operator()( const ValueType startingValue ) void operator()(const ValueType &startingValue, const ValueType &step)
{ {
ArrayHandleType arrayConst(startingValue, ARRAY_SIZE); ArrayHandleType arrayConst(startingValue, step, ARRAY_SIZE);
ArrayHandleType arrayMake = vtkm::cont::make_ArrayHandleCounting(startingValue,ARRAY_SIZE); ArrayHandleType arrayMake = vtkm::cont::make_ArrayHandleCounting(startingValue, step, ARRAY_SIZE);
ArrayHandleType2 arrayHandle = ArrayHandleType2 arrayHandle =
ArrayHandleType2(PortalType(startingValue, ARRAY_SIZE)); ArrayHandleType2(PortalType(startingValue, step, ARRAY_SIZE));
VTKM_TEST_ASSERT(arrayConst.GetNumberOfValues() == ARRAY_SIZE, VTKM_TEST_ASSERT(arrayConst.GetNumberOfValues() == ARRAY_SIZE,
"Counting array using constructor has wrong size."); "Counting array using constructor has wrong size.");
@ -116,28 +126,21 @@ struct TemplatedTests
VTKM_TEST_ASSERT(arrayHandle.GetPortalConstControl().Get(index) == properValue, VTKM_TEST_ASSERT(arrayHandle.GetPortalConstControl().Get(index) == properValue,
"Counting array using raw array handle + tag has unexpected value."); "Counting array using raw array handle + tag has unexpected value.");
++properValue; properValue = properValue + step;
} }
} }
}; };
struct TestFunctor
{
template <typename T>
void operator()(const T t)
{
TemplatedTests<T> tests;
tests(t);
}
};
void TestArrayHandleCounting() void TestArrayHandleCounting()
{ {
TestFunctor()(vtkm::Id(0)); TemplatedTests<vtkm::Id>()(0, 1);
TestFunctor()(vtkm::Float32(0)); TemplatedTests<vtkm::Id>()(8, 2);
TestFunctor()(vtkm::Float64(0)); TemplatedTests<vtkm::Float32>()(0.0f, 1.0f);
TestFunctor()(StringInt(0)); TemplatedTests<vtkm::Float32>()(3.0f, -0.5f);
TestFunctor()(StringInt(10)); TemplatedTests<vtkm::Float64>()(0.0, 1.0);
TemplatedTests<vtkm::Float64>()(-3.0, 2.0);
TemplatedTests<StringInt>()(StringInt(0), StringInt(1));
TemplatedTests<StringInt>()(StringInt(10), StringInt(2));
} }

@ -0,0 +1,47 @@
//============================================================================
// Copyright (c) Kitware, Inc.
// All rights reserved.
// See LICENSE.txt for details.
// This software is distributed WITHOUT ANY WARRANTY; without even
// the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
// PURPOSE. See the above copyright notice for more information.
//
// Copyright 2015 Sandia Corporation.
// Copyright 2015 UT-Battelle, LLC.
// Copyright 2015 Los Alamos National Security.
//
// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
// the U.S. Government retains certain rights in this software.
//
// Under the terms of Contract DE-AC52-06NA25396 with Los Alamos National
// Laboratory (LANL), the U.S. Government retains certain rights in
// this software.
//============================================================================
#include <vtkm/cont/ArrayHandleIndex.h>
#include <vtkm/cont/testing/Testing.h>
namespace UnitTestArrayHandleIndexNamespace {
const vtkm::Id ARRAY_SIZE = 10;
void TestArrayHandleIndex()
{
vtkm::cont::ArrayHandleIndex array(ARRAY_SIZE);
VTKM_TEST_ASSERT(array.GetNumberOfValues() == ARRAY_SIZE, "Bad size.");
for (vtkm::Id index = 0; index < ARRAY_SIZE; index++)
{
VTKM_TEST_ASSERT(array.GetPortalConstControl().Get(index) == index,
"Index array has unexpected value.");
}
}
} // namespace UnitTestArrayHandleIndexNamespace
int UnitTestArrayHandleIndex(int, char *[])
{
using namespace UnitTestArrayHandleIndexNamespace;
return vtkm::cont::testing::Testing::Run(TestArrayHandleIndex);
}

@ -142,6 +142,7 @@ struct TransformTests
<< std::endl; << std::endl;
vtkm::cont::ArrayHandleCounting<InputValueType> counting = vtkm::cont::ArrayHandleCounting<InputValueType> counting =
vtkm::cont::make_ArrayHandleCounting(InputValueType(OutputValueType(0)), vtkm::cont::make_ArrayHandleCounting(InputValueType(OutputValueType(0)),
InputValueType(1),
ARRAY_SIZE); ARRAY_SIZE);
CountingTransformHandle countingTransformed = CountingTransformHandle countingTransformed =
vtkm::cont::make_ArrayHandleTransform<OutputValueType>(counting, functor); vtkm::cont::make_ArrayHandleTransform<OutputValueType>(counting, functor);

@ -26,7 +26,7 @@
#include <vtkm/cont/DeviceAdapterAlgorithm.h> #include <vtkm/cont/DeviceAdapterAlgorithm.h>
#include <vtkm/cont/ArrayHandle.h> #include <vtkm/cont/ArrayHandle.h>
#include <vtkm/cont/ArrayHandleConstant.h> #include <vtkm/cont/ArrayHandleConstant.h>
#include <vtkm/cont/ArrayHandleCounting.h> #include <vtkm/cont/ArrayHandleIndex.h>
#include <vtkm/cont/ArrayHandlePermutation.h> #include <vtkm/cont/ArrayHandlePermutation.h>
#include <vtkm/cont/ArrayHandleZip.h> #include <vtkm/cont/ArrayHandleZip.h>
@ -71,7 +71,7 @@ void AverageByKey(const vtkm::cont::ArrayHandle<KeyType, KeyInStorage> &keyArray
typedef vtkm::cont::ArrayHandle<ValueType> ValueArray; typedef vtkm::cont::ArrayHandle<ValueType> ValueArray;
// sort the indexed array // sort the indexed array
vtkm::cont::ArrayHandleCounting<vtkm::Id> indexArray(0, keyArray.GetNumberOfValues()); vtkm::cont::ArrayHandleIndex indexArray(keyArray.GetNumberOfValues());
IdArray indexArraySorted; IdArray indexArraySorted;
vtkm::cont::ArrayHandle<KeyType> keyArraySorted; vtkm::cont::ArrayHandle<KeyType> keyArraySorted;

@ -25,8 +25,8 @@
#include <vtkm/cont/ArrayHandle.h> #include <vtkm/cont/ArrayHandle.h>
#include <vtkm/cont/ArrayHandleConstant.h> #include <vtkm/cont/ArrayHandleConstant.h>
#include <vtkm/cont/ArrayHandleCounting.h>
#include <vtkm/cont/ArrayHandleImplicit.h> #include <vtkm/cont/ArrayHandleImplicit.h>
#include <vtkm/cont/ArrayHandleIndex.h>
#include <vtkm/cont/ArrayHandlePermutation.h> #include <vtkm/cont/ArrayHandlePermutation.h>
#include <vtkm/cont/CellSetExplicit.h> #include <vtkm/cont/CellSetExplicit.h>
#include <vtkm/cont/DataSet.h> #include <vtkm/cont/DataSet.h>
@ -280,7 +280,8 @@ public:
vtkm::cont::ArrayHandle<vtkm::Id> face2CellId; vtkm::cont::ArrayHandle<vtkm::Id> face2CellId;
vtkm::cont::ArrayHandle<vtkm::Id> localFaceIds; vtkm::cont::ArrayHandle<vtkm::Id> localFaceIds;
localFaceIds.Allocate(static_cast<vtkm::Id>(totalFaces)); localFaceIds.Allocate(static_cast<vtkm::Id>(totalFaces));
vtkm::cont::ArrayHandleCounting<vtkm::Id> countingArray(vtkm::Id(0), vtkm::Id(totalFaces)); vtkm::cont::ArrayHandleIndex countingArray =
vtkm::cont::ArrayHandleIndex(vtkm::Id(totalFaces));
#ifdef __VTKM_EXTERNAL_FACES_BENCHMARK #ifdef __VTKM_EXTERNAL_FACES_BENCHMARK
timer.Reset(); timer.Reset();

@ -23,7 +23,7 @@
#include <vtkm/cont/DeviceAdapter.h> #include <vtkm/cont/DeviceAdapter.h>
#include <vtkm/cont/ArrayHandle.h> #include <vtkm/cont/ArrayHandle.h>
#include <vtkm/cont/ArrayHandleCounting.h> #include <vtkm/cont/ArrayHandleIndex.h>
#include <vtkm/cont/DynamicArrayHandle.h> #include <vtkm/cont/DynamicArrayHandle.h>
#include <vtkm/worklet/DispatcherMapField.h> #include <vtkm/worklet/DispatcherMapField.h>
#include <vtkm/worklet/WorkletMapField.h> #include <vtkm/worklet/WorkletMapField.h>
@ -309,7 +309,7 @@ public:
if (numOutputCells == 0) return; if (numOutputCells == 0) return;
vtkm::cont::ArrayHandle<vtkm::Id> validCellIndicesArray, inputCellIterationNumber; vtkm::cont::ArrayHandle<vtkm::Id> validCellIndicesArray, inputCellIterationNumber;
vtkm::cont::ArrayHandleCounting<vtkm::Id> validCellCountImplicitArray(0, numOutputCells); vtkm::cont::ArrayHandleIndex validCellCountImplicitArray(numOutputCells);
DeviceAlgorithms::UpperBounds(numOutputTrisPerCell, DeviceAlgorithms::UpperBounds(numOutputTrisPerCell,
validCellCountImplicitArray, validCellCountImplicitArray,
validCellIndicesArray); validCellIndicesArray);

@ -75,7 +75,7 @@ vtkm::cont::DataSet MakeIsosurfaceTestDataSet(vtkm::Id3 dims)
float maxs[3] = {1.0f, 1.0f, 1.0f}; float maxs[3] = {1.0f, 1.0f, 1.0f};
vtkm::cont::ArrayHandle<vtkm::Float32> fieldArray; vtkm::cont::ArrayHandle<vtkm::Float32> fieldArray;
vtkm::cont::ArrayHandleCounting<vtkm::Id> vertexCountImplicitArray(0, vdims[0]*vdims[1]*vdims[2]); vtkm::cont::ArrayHandleIndex vertexCountImplicitArray(vdims[0]*vdims[1]*vdims[2]);
vtkm::worklet::DispatcherMapField<TangleField> tangleFieldDispatcher(TangleField(vdims, mins, maxs)); vtkm::worklet::DispatcherMapField<TangleField> tangleFieldDispatcher(TangleField(vdims, mins, maxs));
tangleFieldDispatcher.Invoke(vertexCountImplicitArray, fieldArray); tangleFieldDispatcher.Invoke(vertexCountImplicitArray, fieldArray);

@ -20,7 +20,6 @@
#include <iostream> #include <iostream>
#include <vtkm/cont/ArrayHandleCounting.h>
#include <vtkm/cont/DataSet.h> #include <vtkm/cont/DataSet.h>
#include <vtkm/cont/DeviceAdapter.h> #include <vtkm/cont/DeviceAdapter.h>
#include <vtkm/cont/testing/MakeTestDataSet.h> #include <vtkm/cont/testing/MakeTestDataSet.h>

@ -18,7 +18,7 @@
// this software. // this software.
//============================================================================ //============================================================================
#include <vtkm/cont/ArrayHandle.h> #include <vtkm/cont/ArrayHandle.h>
#include <vtkm/cont/ArrayHandleCounting.h> #include <vtkm/cont/ArrayHandleIndex.h>
#include <vtkm/cont/DynamicArrayHandle.h> #include <vtkm/cont/DynamicArrayHandle.h>
#include <vtkm/worklet/DispatcherMapField.h> #include <vtkm/worklet/DispatcherMapField.h>
@ -76,7 +76,7 @@ struct DoTestWorklet
inputArray[index] = TestValue(index, T()) + T(100); inputArray[index] = TestValue(index, T()) + T(100);
} }
vtkm::cont::ArrayHandleCounting<vtkm::Id> counting(0,ARRAY_SIZE); vtkm::cont::ArrayHandleIndex counting(ARRAY_SIZE);
vtkm::cont::ArrayHandle<T> inputHandle = vtkm::cont::ArrayHandle<T> inputHandle =
vtkm::cont::make_ArrayHandle(inputArray, ARRAY_SIZE); vtkm::cont::make_ArrayHandle(inputArray, ARRAY_SIZE);
vtkm::cont::ArrayHandle<T> outputHandle; vtkm::cont::ArrayHandle<T> outputHandle;