mirror of
https://gitlab.kitware.com/vtk/vtk-m
synced 2024-10-05 01:49:02 +00:00
Use new ways to get array portal in control environment
Also fix deadlocks that occur when portals are not destroyed in time.
This commit is contained in:
parent
8ddde979f0
commit
ec34cb56c4
@ -238,7 +238,7 @@ void BenchRoundTripRead(benchmark::State& state)
|
||||
invoker(ReadValues{}, array);
|
||||
|
||||
// Copy back to host and read:
|
||||
auto portal = array.GetPortalConstControl();
|
||||
auto portal = array.ReadPortal();
|
||||
for (vtkm::Id i = 0; i < numValues; ++i)
|
||||
{
|
||||
benchmark::DoNotOptimize(portal.Get(i));
|
||||
@ -292,7 +292,7 @@ void BenchRoundTripReadWrite(benchmark::State& state)
|
||||
// Do work on device:
|
||||
invoker(ReadWriteValues{}, array);
|
||||
|
||||
auto portal = array.GetPortalControl();
|
||||
auto portal = array.WritePortal();
|
||||
for (vtkm::Id i = 0; i < numValues; ++i)
|
||||
{
|
||||
portal.Set(i, portal.Get(i) - static_cast<ValueType>(i));
|
||||
@ -345,7 +345,7 @@ void BenchExecToContRead(benchmark::State& state)
|
||||
invoker(WriteValues{}, array);
|
||||
|
||||
// Read back on host:
|
||||
auto portal = array.GetPortalControl();
|
||||
auto portal = array.WritePortal();
|
||||
for (vtkm::Id i = 0; i < numValues; ++i)
|
||||
{
|
||||
benchmark::DoNotOptimize(portal.Get(i));
|
||||
@ -397,7 +397,7 @@ void BenchExecToContWrite(benchmark::State& state)
|
||||
invoker(WriteValues{}, array);
|
||||
|
||||
// Read back on host:
|
||||
auto portal = array.GetPortalControl();
|
||||
auto portal = array.WritePortal();
|
||||
for (vtkm::Id i = 0; i < numValues; ++i)
|
||||
{
|
||||
portal.Set(i, portal.Get(i) - static_cast<ValueType>(i));
|
||||
@ -449,7 +449,7 @@ void BenchExecToContReadWrite(benchmark::State& state)
|
||||
invoker(WriteValues{}, array);
|
||||
|
||||
// Read back on host:
|
||||
auto portal = array.GetPortalControl();
|
||||
auto portal = array.WritePortal();
|
||||
for (vtkm::Id i = 0; i < numValues; ++i)
|
||||
{
|
||||
benchmark::DoNotOptimize(portal.Get(i));
|
||||
|
@ -173,7 +173,7 @@ VTKM_CONT void FillRandomTestValue(ArrayT& array, vtkm::Id numValues)
|
||||
std::mt19937_64 rng;
|
||||
|
||||
array.Allocate(numValues);
|
||||
auto portal = array.GetPortalControl();
|
||||
auto portal = array.WritePortal();
|
||||
for (vtkm::Id i = 0; i < portal.GetNumberOfValues(); ++i)
|
||||
{
|
||||
portal.Set(i, TestValue(static_cast<vtkm::Id>(rng()), ValueType{}));
|
||||
@ -188,7 +188,7 @@ VTKM_CONT void FillRandomModTestValue(ArrayT& array, vtkm::Id mod, vtkm::Id numV
|
||||
std::mt19937_64 rng;
|
||||
|
||||
array.Allocate(numValues);
|
||||
auto portal = array.GetPortalControl();
|
||||
auto portal = array.WritePortal();
|
||||
for (vtkm::Id i = 0; i < portal.GetNumberOfValues(); ++i)
|
||||
{
|
||||
portal.Set(i, TestValue(static_cast<vtkm::Id>(rng()) % mod, ValueType{}));
|
||||
|
@ -375,9 +375,9 @@ struct BenchBlackScholesImpl
|
||||
this->OptionStrike.Allocate(this->ArraySize);
|
||||
this->OptionYears.Allocate(this->ArraySize);
|
||||
|
||||
auto stockPricePortal = this->StockPrice.GetPortalControl();
|
||||
auto optionStrikePortal = this->OptionStrike.GetPortalControl();
|
||||
auto optionYearsPortal = this->OptionYears.GetPortalControl();
|
||||
auto stockPricePortal = this->StockPrice.WritePortal();
|
||||
auto optionStrikePortal = this->OptionStrike.WritePortal();
|
||||
auto optionYearsPortal = this->OptionYears.WritePortal();
|
||||
|
||||
for (vtkm::Id i = 0; i < this->ArraySize; ++i)
|
||||
{
|
||||
@ -488,7 +488,7 @@ struct BenchMathImpl
|
||||
std::uniform_real_distribution<Value> range;
|
||||
|
||||
this->InputHandle.Allocate(this->ArraySize);
|
||||
auto portal = this->InputHandle.GetPortalControl();
|
||||
auto portal = this->InputHandle.WritePortal();
|
||||
for (vtkm::Id i = 0; i < this->ArraySize; ++i)
|
||||
{
|
||||
portal.Set(i, vtkm::Vec<Value, 3>{ range(rng), range(rng), range(rng) });
|
||||
@ -590,7 +590,7 @@ struct BenchFusedMathImpl
|
||||
std::uniform_real_distribution<Value> range;
|
||||
|
||||
this->InputHandle.Allocate(this->ArraySize);
|
||||
auto portal = this->InputHandle.GetPortalControl();
|
||||
auto portal = this->InputHandle.WritePortal();
|
||||
for (vtkm::Id i = 0; i < this->ArraySize; ++i)
|
||||
{
|
||||
portal.Set(i, vtkm::Vec<Value, 3>{ range(rng), range(rng), range(rng) });
|
||||
@ -702,7 +702,7 @@ struct BenchEdgeInterpImpl
|
||||
|
||||
{ // Per-edge weights
|
||||
this->WeightHandle.Allocate(numberOfEdges);
|
||||
auto portal = this->WeightHandle.GetPortalControl();
|
||||
auto portal = this->WeightHandle.WritePortal();
|
||||
for (vtkm::Id i = 0; i < numberOfEdges; ++i)
|
||||
{
|
||||
portal.Set(i, weight_range(rng));
|
||||
@ -711,7 +711,7 @@ struct BenchEdgeInterpImpl
|
||||
|
||||
{ // Point field
|
||||
this->FieldHandle.Allocate(cellSet.GetNumberOfPoints());
|
||||
auto portal = this->FieldHandle.GetPortalControl();
|
||||
auto portal = this->FieldHandle.WritePortal();
|
||||
for (vtkm::Id i = 0; i < portal.GetNumberOfValues(); ++i)
|
||||
{
|
||||
portal.Set(i, field_range(rng));
|
||||
@ -788,7 +788,7 @@ static ImplicitFunctionBenchData MakeImplicitFunctionBenchData()
|
||||
std::uniform_real_distribution<vtkm::FloatDefault> disty(bounds[2], bounds[3]);
|
||||
std::uniform_real_distribution<vtkm::FloatDefault> distz(bounds[4], bounds[5]);
|
||||
|
||||
auto portal = data.Points.GetPortalControl();
|
||||
auto portal = data.Points.WritePortal();
|
||||
for (vtkm::Id i = 0; i < count; ++i)
|
||||
{
|
||||
portal.Set(i, vtkm::make_Vec(distx(rangen), disty(rangen), distz(rangen)));
|
||||
|
@ -71,7 +71,7 @@ void BenchRayTracing(::benchmark::State& state)
|
||||
rays.Buffers.at(0).InitConst(0.f);
|
||||
|
||||
vtkm::cont::Field field = dataset.GetField("pointvar");
|
||||
vtkm::Range range = field.GetRange().GetPortalConstControl().Get(0);
|
||||
vtkm::Range range = field.GetRange().ReadPortal().Get(0);
|
||||
|
||||
tracer.SetField(field, range);
|
||||
|
||||
@ -81,8 +81,8 @@ void BenchRayTracing(::benchmark::State& state)
|
||||
|
||||
vtkm::cont::ArrayHandle<vtkm::Vec4f_32> colors;
|
||||
colors.Allocate(100);
|
||||
auto portal = colors.GetPortalControl();
|
||||
auto colorPortal = temp.GetPortalConstControl();
|
||||
auto portal = colors.WritePortal();
|
||||
auto colorPortal = temp.ReadPortal();
|
||||
constexpr vtkm::Float32 conversionToFloatSpace = (1.0f / 255.0f);
|
||||
for (vtkm::Id i = 0; i < 100; ++i)
|
||||
{
|
||||
|
@ -160,7 +160,7 @@ VTKM_CONT typename ArrayT::ValueType FillRandomValues(ArrayT& array,
|
||||
|
||||
NumberGenerator<ValueType> generator{ static_cast<ValueType>(min), static_cast<ValueType>(max) };
|
||||
array.Allocate(size);
|
||||
auto portal = array.GetPortalControl();
|
||||
auto portal = array.WritePortal();
|
||||
for (vtkm::Id i = 0; i < size; ++i)
|
||||
{
|
||||
portal.Set(i, generator.next());
|
||||
|
@ -558,9 +558,9 @@ int main(int argc, char* argv[])
|
||||
localBlockIndices.Allocate(blocksPerRank);
|
||||
localBlockOrigins.Allocate(blocksPerRank);
|
||||
localBlockSizes.Allocate(blocksPerRank);
|
||||
auto localBlockIndicesPortal = localBlockIndices.GetPortalControl();
|
||||
auto localBlockOriginsPortal = localBlockOrigins.GetPortalControl();
|
||||
auto localBlockSizesPortal = localBlockSizes.GetPortalControl();
|
||||
auto localBlockIndicesPortal = localBlockIndices.WritePortal();
|
||||
auto localBlockOriginsPortal = localBlockOrigins.WritePortal();
|
||||
auto localBlockSizesPortal = localBlockSizes.WritePortal();
|
||||
|
||||
{
|
||||
vtkm::Id lastDimSize =
|
||||
|
@ -43,8 +43,8 @@ VTKM_CONT vtkm::cont::ArrayHandle<T> CreateArray(T min, T max, vtkm::Id numVals)
|
||||
vtkm::cont::ArrayHandle<T> handle;
|
||||
handle.Allocate(numVals);
|
||||
|
||||
std::generate(vtkm::cont::ArrayPortalToIteratorBegin(handle.GetPortalControl()),
|
||||
vtkm::cont::ArrayPortalToIteratorEnd(handle.GetPortalControl()),
|
||||
std::generate(vtkm::cont::ArrayPortalToIteratorBegin(handle.WritePortal()),
|
||||
vtkm::cont::ArrayPortalToIteratorEnd(handle.WritePortal()),
|
||||
[&]() { return static_cast<T>(dis(gen)); });
|
||||
return handle;
|
||||
}
|
||||
@ -92,7 +92,7 @@ int main(int argc, char* argv[])
|
||||
|
||||
vtkm::cont::ArrayHandle<vtkm::Id> bins;
|
||||
result.GetPartition(0).GetField("histogram").GetData().CopyTo(bins);
|
||||
auto binPortal = bins.GetPortalConstControl();
|
||||
auto binPortal = bins.ReadPortal();
|
||||
if (rank == 0)
|
||||
{
|
||||
// print histogram.
|
||||
|
@ -58,8 +58,8 @@ public:
|
||||
// reduce local bins first.
|
||||
vtkm::cont::ArrayHandle<vtkm::Id> local;
|
||||
local.Allocate(numBins);
|
||||
std::fill(vtkm::cont::ArrayPortalToIteratorBegin(local.GetPortalControl()),
|
||||
vtkm::cont::ArrayPortalToIteratorEnd(local.GetPortalControl()),
|
||||
std::fill(vtkm::cont::ArrayPortalToIteratorBegin(local.WritePortal()),
|
||||
vtkm::cont::ArrayPortalToIteratorEnd(local.WritePortal()),
|
||||
static_cast<vtkm::Id>(0));
|
||||
for (const auto& lbins : this->LocalBlocks)
|
||||
{
|
||||
@ -70,8 +70,8 @@ public:
|
||||
|
||||
// converting to std::vector
|
||||
std::vector<vtkm::Id> send_buf(static_cast<std::size_t>(numBins));
|
||||
std::copy(vtkm::cont::ArrayPortalToIteratorBegin(local.GetPortalConstControl()),
|
||||
vtkm::cont::ArrayPortalToIteratorEnd(local.GetPortalConstControl()),
|
||||
std::copy(vtkm::cont::ArrayPortalToIteratorBegin(local.ReadPortal()),
|
||||
vtkm::cont::ArrayPortalToIteratorEnd(local.ReadPortal()),
|
||||
send_buf.begin());
|
||||
|
||||
std::vector<vtkm::Id> recv_buf(static_cast<std::size_t>(numBins));
|
||||
@ -88,7 +88,7 @@ public:
|
||||
local.Allocate(numBins);
|
||||
std::copy(recv_buf.begin(),
|
||||
recv_buf.end(),
|
||||
vtkm::cont::ArrayPortalToIteratorBegin(local.GetPortalControl()));
|
||||
vtkm::cont::ArrayPortalToIteratorBegin(local.WritePortal()));
|
||||
return local;
|
||||
}
|
||||
return vtkm::cont::ArrayHandle<vtkm::Id>();
|
||||
@ -158,7 +158,7 @@ inline VTKM_CONT void HistogramMPI::PreExecute(const vtkm::cont::PartitionedData
|
||||
{
|
||||
throw vtkm::cont::ErrorFilterExecution("expecting scalar field.");
|
||||
}
|
||||
this->ComputedRange = handle.GetPortalConstControl().Get(0);
|
||||
this->ComputedRange = handle.ReadPortal().Get(0);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -65,7 +65,7 @@ vtkm::cont::DataSet make3DRectilinearDataSet(double time)
|
||||
double vec[3];
|
||||
double loc[3] = { i * xdiff + xmin, j * ydiff + ymax, k * zdiff + zmin };
|
||||
field.calculateVelocity(loc, time, vec);
|
||||
velocityField.GetPortalControl().Set(count, vtkm::Vec3f_64(vec[0], vec[1], vec[2]));
|
||||
velocityField.WritePortal().Set(count, vtkm::Vec3f_64(vec[0], vec[1], vec[2]));
|
||||
count++;
|
||||
}
|
||||
}
|
||||
|
@ -76,8 +76,8 @@ int main(int argc, char** argv)
|
||||
|
||||
vtkm::Id numPts = pts.GetNumberOfValues();
|
||||
seeds.Allocate(numPts);
|
||||
auto ptsPortal = pts.GetPortalConstControl();
|
||||
auto seedPortal = seeds.GetPortalConstControl();
|
||||
auto ptsPortal = pts.ReadPortal();
|
||||
auto seedPortal = seeds.ReadPortal();
|
||||
for (vtkm::Id i = 0; i < numPts; i++)
|
||||
{
|
||||
vtkm::Particle p;
|
||||
|
@ -35,8 +35,8 @@ namespace cont
|
||||
///
|
||||
/// These functions should not be called repeatedly in a loop to fetch all
|
||||
/// values from an array handle. The much more efficient way to do this is to
|
||||
/// use the proper control-side portals (ArrayHandle::GetPortalControl() and
|
||||
/// ArrayHandle::GetPortalConstControl()).
|
||||
/// use the proper control-side portals (ArrayHandle::WritePortal() and
|
||||
/// ArrayHandle::ReadPortal()).
|
||||
///
|
||||
/// This method will attempt to copy the data using the device that the input
|
||||
/// data is already valid on. If the input data is only valid in the control
|
||||
@ -111,10 +111,10 @@ VTKM_CONT void ArrayGetValues(const vtkm::cont::ArrayHandle<vtkm::Id, SIds>& ids
|
||||
{ // Fallback to a control-side copy if the device copy fails or if the device
|
||||
// is undefined:
|
||||
const vtkm::Id numVals = ids.GetNumberOfValues();
|
||||
auto idPortal = ids.GetPortalConstControl();
|
||||
auto dataPortal = data.GetPortalConstControl();
|
||||
auto idPortal = ids.ReadPortal();
|
||||
auto dataPortal = data.ReadPortal();
|
||||
output.Allocate(numVals);
|
||||
auto outPortal = output.GetPortalControl();
|
||||
auto outPortal = output.WritePortal();
|
||||
for (vtkm::Id i = 0; i < numVals; ++i)
|
||||
{
|
||||
outPortal.Set(i, dataPortal.Get(idPortal.Get(i)));
|
||||
|
@ -82,7 +82,7 @@ using IsInValidArrayHandle =
|
||||
///
|
||||
template <typename ArrayHandle>
|
||||
using IsWritableArrayHandle =
|
||||
vtkm::internal::PortalSupportsSets<typename std::decay<ArrayHandle>::type::PortalControl>;
|
||||
vtkm::internal::PortalSupportsSets<typename std::decay<ArrayHandle>::type::WritePortalType>;
|
||||
/// @}
|
||||
|
||||
/// Checks to see if the given object is an array handle. This check is
|
||||
@ -804,8 +804,7 @@ make_ArrayHandle(const T* array, vtkm::Id length, vtkm::CopyFlag copy = vtkm::Co
|
||||
{
|
||||
ArrayHandleType handle;
|
||||
handle.Allocate(length);
|
||||
std::copy(
|
||||
array, array + length, vtkm::cont::ArrayPortalToIteratorBegin(handle.GetPortalControl()));
|
||||
std::copy(array, array + length, vtkm::cont::ArrayPortalToIteratorBegin(handle.WritePortal()));
|
||||
return handle;
|
||||
}
|
||||
else
|
||||
@ -907,7 +906,7 @@ VTKM_NEVER_EXPORT VTKM_CONT inline void printSummary_ArrayHandle(
|
||||
bool full = false)
|
||||
{
|
||||
using ArrayType = vtkm::cont::ArrayHandle<T, StorageT>;
|
||||
using PortalType = typename ArrayType::PortalConstControl;
|
||||
using PortalType = typename ArrayType::ReadPortalType;
|
||||
using IsVec = typename vtkm::VecTraits<T>::HasMultipleComponents;
|
||||
|
||||
vtkm::Id sz = array.GetNumberOfValues();
|
||||
@ -915,7 +914,7 @@ VTKM_NEVER_EXPORT VTKM_CONT inline void printSummary_ArrayHandle(
|
||||
out << "valueType=" << typeid(T).name() << " storageType=" << typeid(StorageT).name()
|
||||
<< " numValues=" << sz << " bytes=" << (static_cast<size_t>(sz) * sizeof(T)) << " [";
|
||||
|
||||
PortalType portal = array.GetPortalConstControl();
|
||||
PortalType portal = array.ReadPortal();
|
||||
if (full || sz <= 7)
|
||||
{
|
||||
for (vtkm::Id i = 0; i < sz; i++)
|
||||
|
@ -451,7 +451,7 @@ inline void VTKM_CONT StorageSerialization(vtkmdiy::BinaryBuffer& bb,
|
||||
vtkmdiy::save(bb, count);
|
||||
|
||||
vtkmdiy::save(bb, vtkm::Id(0)); //not a basic storage
|
||||
auto portal = obj.GetPortalConstControl();
|
||||
auto portal = obj.ReadPortal();
|
||||
for (vtkm::Id i = 0; i < count; ++i)
|
||||
{
|
||||
vtkmdiy::save(bb, portal.Get(i));
|
||||
@ -501,7 +501,7 @@ VTKM_CONT void Serialization<vtkm::cont::ArrayHandle<T>>::load(BinaryBuffer& bb,
|
||||
}
|
||||
else
|
||||
{
|
||||
auto portal = obj.GetPortalControl();
|
||||
auto portal = obj.WritePortal();
|
||||
for (vtkm::Id i = 0; i < count; ++i)
|
||||
{
|
||||
T val{};
|
||||
|
@ -88,10 +88,10 @@ public:
|
||||
VTKM_CONT Storage& operator=(Storage&&) noexcept = default;
|
||||
|
||||
VTKM_CONT
|
||||
PortalType GetPortal() { return PortalType{ this->Data.GetPortalControl() }; }
|
||||
PortalType GetPortal() { return PortalType{ this->Data.WritePortal() }; }
|
||||
|
||||
VTKM_CONT
|
||||
PortalConstType GetPortalConst() { return PortalConstType{ this->Data.GetPortalConstControl() }; }
|
||||
PortalConstType GetPortalConst() { return PortalConstType{ this->Data.ReadPortal() }; }
|
||||
|
||||
VTKM_CONT vtkm::Id GetNumberOfValues() const { return this->Data.GetNumberOfBits(); }
|
||||
VTKM_CONT void Allocate(vtkm::Id numberOfValues) { this->Data.Allocate(numberOfValues); }
|
||||
|
@ -208,15 +208,16 @@ class Storage<vtkm::Vec<T, 3>, vtkm::cont::StorageTagCartesianProduct<ST1, ST2,
|
||||
public:
|
||||
using ValueType = vtkm::Vec<typename AH1::ValueType, 3>;
|
||||
|
||||
using PortalType = vtkm::exec::internal::ArrayPortalCartesianProduct<ValueType,
|
||||
typename AH1::PortalControl,
|
||||
typename AH2::PortalControl,
|
||||
typename AH3::PortalControl>;
|
||||
using PortalType =
|
||||
vtkm::exec::internal::ArrayPortalCartesianProduct<ValueType,
|
||||
typename AH1::WritePortalType,
|
||||
typename AH2::WritePortalType,
|
||||
typename AH3::WritePortalType>;
|
||||
using PortalConstType =
|
||||
vtkm::exec::internal::ArrayPortalCartesianProduct<ValueType,
|
||||
typename AH1::PortalConstControl,
|
||||
typename AH2::PortalConstControl,
|
||||
typename AH3::PortalConstControl>;
|
||||
typename AH1::ReadPortalType,
|
||||
typename AH2::ReadPortalType,
|
||||
typename AH3::ReadPortalType>;
|
||||
|
||||
VTKM_CONT
|
||||
Storage()
|
||||
@ -237,17 +238,16 @@ public:
|
||||
VTKM_CONT
|
||||
PortalType GetPortal()
|
||||
{
|
||||
return PortalType(this->FirstArray.GetPortalControl(),
|
||||
this->SecondArray.GetPortalControl(),
|
||||
this->ThirdArray.GetPortalControl());
|
||||
return PortalType(this->FirstArray.WritePortal(),
|
||||
this->SecondArray.WritePortal(),
|
||||
this->ThirdArray.WritePortal());
|
||||
}
|
||||
|
||||
VTKM_CONT
|
||||
PortalConstType GetPortalConst() const
|
||||
{
|
||||
return PortalConstType(this->FirstArray.GetPortalConstControl(),
|
||||
this->SecondArray.GetPortalConstControl(),
|
||||
this->ThirdArray.GetPortalConstControl());
|
||||
return PortalConstType(
|
||||
this->FirstArray.ReadPortal(), this->SecondArray.ReadPortal(), this->ThirdArray.ReadPortal());
|
||||
}
|
||||
|
||||
VTKM_CONT
|
||||
|
@ -120,14 +120,14 @@ struct ArrayTupleForEach
|
||||
template <typename PortalTuple>
|
||||
VTKM_CONT static void GetPortalTupleControl(ArrayTuple& arrays, PortalTuple& portals)
|
||||
{
|
||||
vtkmstd::get<Index>(portals) = vtkmstd::get<Index>(arrays).GetPortalControl();
|
||||
vtkmstd::get<Index>(portals) = vtkmstd::get<Index>(arrays).WritePortal();
|
||||
Next::GetPortalTupleControl(arrays, portals);
|
||||
}
|
||||
|
||||
template <typename PortalTuple>
|
||||
VTKM_CONT static void GetPortalConstTupleControl(const ArrayTuple& arrays, PortalTuple& portals)
|
||||
{
|
||||
vtkmstd::get<Index>(portals) = vtkmstd::get<Index>(arrays).GetPortalConstControl();
|
||||
vtkmstd::get<Index>(portals) = vtkmstd::get<Index>(arrays).ReadPortal();
|
||||
Next::GetPortalConstTupleControl(arrays, portals);
|
||||
}
|
||||
|
||||
@ -228,10 +228,10 @@ template <typename Head, typename... Tail>
|
||||
struct PortalTupleTypeGeneratorImpl<vtkmstd::tuple<Head, Tail...>>
|
||||
{
|
||||
using Next = PortalTupleTypeGeneratorImpl<vtkmstd::tuple<Tail...>>;
|
||||
using PortalControlTuple = typename TupleTypePrepend<typename Head::PortalControl,
|
||||
using PortalControlTuple = typename TupleTypePrepend<typename Head::WritePortalType,
|
||||
typename Next::PortalControlTuple>::Type;
|
||||
using PortalConstControlTuple =
|
||||
typename TupleTypePrepend<typename Head::PortalConstControl,
|
||||
typename TupleTypePrepend<typename Head::ReadPortalType,
|
||||
typename Next::PortalConstControlTuple>::Type;
|
||||
|
||||
template <typename DeviceTag>
|
||||
@ -249,8 +249,8 @@ struct PortalTupleTypeGeneratorImpl<vtkmstd::tuple<Head, Tail...>>
|
||||
template <typename Head>
|
||||
struct PortalTupleTypeGeneratorImpl<vtkmstd::tuple<Head>>
|
||||
{
|
||||
using PortalControlTuple = vtkmstd::tuple<typename Head::PortalControl>;
|
||||
using PortalConstControlTuple = vtkmstd::tuple<typename Head::PortalConstControl>;
|
||||
using PortalControlTuple = vtkmstd::tuple<typename Head::WritePortalType>;
|
||||
using PortalConstControlTuple = vtkmstd::tuple<typename Head::ReadPortalType>;
|
||||
|
||||
template <typename DeviceTag>
|
||||
struct ExecutionTypes
|
||||
|
@ -155,10 +155,10 @@ class Storage<T, StorageTagConcatenate<ST1, ST2>>
|
||||
|
||||
public:
|
||||
using ValueType = T;
|
||||
using PortalType = ArrayPortalConcatenate<typename ArrayHandleType1::PortalControl,
|
||||
typename ArrayHandleType2::PortalControl>;
|
||||
using PortalConstType = ArrayPortalConcatenate<typename ArrayHandleType1::PortalConstControl,
|
||||
typename ArrayHandleType2::PortalConstControl>;
|
||||
using PortalType = ArrayPortalConcatenate<typename ArrayHandleType1::WritePortalType,
|
||||
typename ArrayHandleType2::WritePortalType>;
|
||||
using PortalConstType = ArrayPortalConcatenate<typename ArrayHandleType1::ReadPortalType,
|
||||
typename ArrayHandleType2::ReadPortalType>;
|
||||
|
||||
VTKM_CONT
|
||||
Storage()
|
||||
@ -178,15 +178,14 @@ public:
|
||||
PortalConstType GetPortalConst() const
|
||||
{
|
||||
VTKM_ASSERT(this->valid);
|
||||
return PortalConstType(this->array1.GetPortalConstControl(),
|
||||
this->array2.GetPortalConstControl());
|
||||
return PortalConstType(this->array1.ReadPortal(), this->array2.ReadPortal());
|
||||
}
|
||||
|
||||
VTKM_CONT
|
||||
PortalType GetPortal()
|
||||
{
|
||||
VTKM_ASSERT(this->valid);
|
||||
return PortalType(this->array1.GetPortalControl(), this->array2.GetPortalControl());
|
||||
return PortalType(this->array1.WritePortal(), this->array2.WritePortal());
|
||||
}
|
||||
|
||||
VTKM_CONT
|
||||
|
@ -79,8 +79,8 @@ public:
|
||||
|
||||
VTKM_CONT
|
||||
ArrayHandleConstant(T value, vtkm::Id numberOfValues = 0)
|
||||
: Superclass(typename Superclass::PortalConstControl(internal::ConstantFunctor<T>(value),
|
||||
numberOfValues))
|
||||
: Superclass(
|
||||
typename Superclass::ReadPortalType(internal::ConstantFunctor<T>(value), numberOfValues))
|
||||
{
|
||||
}
|
||||
};
|
||||
@ -137,7 +137,7 @@ public:
|
||||
static VTKM_CONT void save(BinaryBuffer& bb, const BaseType& obj)
|
||||
{
|
||||
vtkmdiy::save(bb, obj.GetNumberOfValues());
|
||||
vtkmdiy::save(bb, obj.GetPortalConstControl().Get(0));
|
||||
vtkmdiy::save(bb, obj.ReadPortal().Get(0));
|
||||
}
|
||||
|
||||
static VTKM_CONT void load(BinaryBuffer& bb, BaseType& obj)
|
||||
|
@ -126,7 +126,7 @@ public:
|
||||
|
||||
VTKM_CONT
|
||||
ArrayHandleCounting(CountingValueType start, CountingValueType step, vtkm::Id length)
|
||||
: Superclass(typename Superclass::PortalConstControl(start, step, length))
|
||||
: Superclass(typename Superclass::ReadPortalType(start, step, length))
|
||||
{
|
||||
}
|
||||
};
|
||||
@ -181,7 +181,7 @@ private:
|
||||
public:
|
||||
static VTKM_CONT void save(BinaryBuffer& bb, const BaseType& obj)
|
||||
{
|
||||
auto portal = obj.GetPortalConstControl();
|
||||
auto portal = obj.ReadPortal();
|
||||
vtkmdiy::save(bb, portal.GetStart());
|
||||
vtkmdiy::save(bb, portal.GetStep());
|
||||
vtkmdiy::save(bb, portal.GetNumberOfValues());
|
||||
|
@ -211,17 +211,17 @@ struct GetInverseFunctorTypeImpl<std::false_type, DecoratorImplT, PortalList>
|
||||
// See note below about using non-writable portals in invertible functors.
|
||||
// We need to sub in const portals when writable ones don't exist.
|
||||
template <typename ArrayT>
|
||||
typename std::decay<ArrayT>::type::PortalControl GetPortalControlImpl(std::true_type,
|
||||
typename std::decay<ArrayT>::type::WritePortalType GetPortalControlImpl(std::true_type,
|
||||
ArrayT&& array)
|
||||
{
|
||||
return array.GetPortalControl();
|
||||
return array.WritePortal();
|
||||
}
|
||||
|
||||
template <typename ArrayT>
|
||||
typename std::decay<ArrayT>::type::PortalConstControl GetPortalControlImpl(std::false_type,
|
||||
typename std::decay<ArrayT>::type::ReadPortalType GetPortalControlImpl(std::false_type,
|
||||
ArrayT&& array)
|
||||
{
|
||||
return array.GetPortalConstControl();
|
||||
return array.ReadPortal();
|
||||
}
|
||||
|
||||
template <typename ArrayT, typename Device>
|
||||
@ -265,13 +265,13 @@ GetPortalOutputImpl(std::false_type, ArrayT&& array, Device, vtkm::cont::Token&
|
||||
// const array handles so we can at least read from them in the inverse
|
||||
// functors.
|
||||
template <typename ArrayT,
|
||||
typename Portal = typename std::decay<ArrayT>::type::PortalControl,
|
||||
typename PortalConst = typename std::decay<ArrayT>::type::PortalConstControl>
|
||||
typename Portal = typename std::decay<ArrayT>::type::WritePortalType,
|
||||
typename PortalConst = typename std::decay<ArrayT>::type::ReadPortalType>
|
||||
using GetPortalControlType =
|
||||
typename brigand::if_<vtkm::internal::PortalSupportsSets<Portal>, Portal, PortalConst>::type;
|
||||
|
||||
template <typename ArrayT>
|
||||
using GetPortalConstControlType = typename std::decay<ArrayT>::type::PortalConstControl;
|
||||
using GetPortalConstControlType = typename std::decay<ArrayT>::type::ReadPortalType;
|
||||
|
||||
template <typename ArrayT,
|
||||
typename Device,
|
||||
@ -289,16 +289,15 @@ using GetPortalConstExecutionType =
|
||||
// Get portal objects:
|
||||
// See note above -- we swap in const portals sometimes.
|
||||
template <typename ArrayT>
|
||||
GetPortalControlType<typename std::decay<ArrayT>::type> GetPortalControl(ArrayT&& array)
|
||||
GetPortalControlType<typename std::decay<ArrayT>::type> WritePortal(ArrayT&& array)
|
||||
{
|
||||
return detail::GetPortalControlImpl(IsWritableArrayHandle<ArrayT>{}, std::forward<ArrayT>(array));
|
||||
}
|
||||
|
||||
template <typename ArrayT>
|
||||
GetPortalConstControlType<typename std::decay<ArrayT>::type> GetPortalConstControl(
|
||||
const ArrayT& array)
|
||||
GetPortalConstControlType<typename std::decay<ArrayT>::type> ReadPortal(const ArrayT& array)
|
||||
{
|
||||
return array.GetPortalConstControl();
|
||||
return array.ReadPortal();
|
||||
}
|
||||
|
||||
template <typename ArrayT, typename Device>
|
||||
@ -377,15 +376,14 @@ using GetInverseFunctorType =
|
||||
// - So we jump through some decltype/declval hoops here to get this to work:
|
||||
template <typename... ArrayTs>
|
||||
using GetPortalConstControlList =
|
||||
brigand::list<decltype((GetPortalConstControl(std::declval<ArrayTs&>())))...>;
|
||||
brigand::list<decltype((ReadPortal(std::declval<ArrayTs&>())))...>;
|
||||
|
||||
template <typename Device, typename... ArrayTs>
|
||||
using GetPortalConstExecutionList = brigand::list<decltype(
|
||||
(GetPortalInput(std::declval<ArrayTs&>(), Device{}, std::declval<vtkm::cont::Token&>())))...>;
|
||||
|
||||
template <typename... ArrayTs>
|
||||
using GetPortalControlList =
|
||||
brigand::list<decltype((GetPortalControl(std::declval<ArrayTs&>())))...>;
|
||||
using GetPortalControlList = brigand::list<decltype((WritePortal(std::declval<ArrayTs&>())))...>;
|
||||
|
||||
template <typename Device, typename... ArrayTs>
|
||||
using GetPortalExecutionList = brigand::list<decltype(
|
||||
@ -553,7 +551,7 @@ struct DecoratorStorageTraits
|
||||
// Indices{}.value : Works on both MSVC2015 and MSVC2017.
|
||||
//
|
||||
// Don't touch the following line unless you really, really have to.
|
||||
GetPortalControl(vtkmstd::get<Indices{}.value>(arrays))...);
|
||||
WritePortal(vtkmstd::get<Indices{}.value>(arrays))...);
|
||||
}
|
||||
|
||||
template <template <typename...> class List, typename... Indices>
|
||||
@ -567,7 +565,7 @@ struct DecoratorStorageTraits
|
||||
impl,
|
||||
// Don't touch the following line unless you really, really have to. See
|
||||
// note in MakePortalControl.
|
||||
GetPortalConstControl(vtkmstd::get<Indices{}.value>(arrays))...);
|
||||
ReadPortal(vtkmstd::get<Indices{}.value>(arrays))...);
|
||||
}
|
||||
|
||||
template <template <typename...> class List, typename... Indices, typename Device>
|
||||
@ -646,7 +644,7 @@ struct DecoratorStorageTraits
|
||||
List<std::size_t, Indices...>)
|
||||
{
|
||||
return CreatePortalDecorator<PortalControlType>(
|
||||
numValues, impl, GetPortalControl(vtkmstd::get<Indices>(arrays))...);
|
||||
numValues, impl, WritePortal(vtkmstd::get<Indices>(arrays))...);
|
||||
}
|
||||
|
||||
template <template <typename, std::size_t...> class List, std::size_t... Indices>
|
||||
@ -656,7 +654,7 @@ struct DecoratorStorageTraits
|
||||
List<std::size_t, Indices...>)
|
||||
{
|
||||
return CreatePortalDecorator<PortalConstControlType>(
|
||||
numValues, impl, GetPortalConstControl(vtkmstd::get<Indices>(arrays))...);
|
||||
numValues, impl, ReadPortal(vtkmstd::get<Indices>(arrays))...);
|
||||
}
|
||||
|
||||
template <template <typename, std::size_t...> class List, std::size_t... Indices, typename Device>
|
||||
|
@ -95,8 +95,8 @@ class Storage<typename vtkm::VecTraits<typename ArrayHandleType::ValueType>::Com
|
||||
StorageTagExtractComponent<ArrayHandleType>>
|
||||
{
|
||||
public:
|
||||
using PortalType = ArrayPortalExtractComponent<typename ArrayHandleType::PortalControl>;
|
||||
using PortalConstType = ArrayPortalExtractComponent<typename ArrayHandleType::PortalConstControl>;
|
||||
using PortalType = ArrayPortalExtractComponent<typename ArrayHandleType::WritePortalType>;
|
||||
using PortalConstType = ArrayPortalExtractComponent<typename ArrayHandleType::ReadPortalType>;
|
||||
using ValueType = typename PortalType::ValueType;
|
||||
|
||||
VTKM_CONT
|
||||
@ -119,14 +119,14 @@ public:
|
||||
PortalConstType GetPortalConst() const
|
||||
{
|
||||
VTKM_ASSERT(this->Valid);
|
||||
return PortalConstType(this->Array.GetPortalConstControl(), this->Component);
|
||||
return PortalConstType(this->Array.ReadPortal(), this->Component);
|
||||
}
|
||||
|
||||
VTKM_CONT
|
||||
PortalType GetPortal()
|
||||
{
|
||||
VTKM_ASSERT(this->Valid);
|
||||
return PortalType(this->Array.GetPortalControl(), this->Component);
|
||||
return PortalType(this->Array.WritePortal(), this->Component);
|
||||
}
|
||||
|
||||
VTKM_CONT
|
||||
|
@ -127,10 +127,10 @@ public:
|
||||
using ValueType = vtkm::Vec<ComponentType, NUM_COMPONENTS>;
|
||||
|
||||
using PortalType =
|
||||
vtkm::exec::internal::ArrayPortalGroupVec<typename SourceArrayHandleType::PortalControl,
|
||||
vtkm::exec::internal::ArrayPortalGroupVec<typename SourceArrayHandleType::WritePortalType,
|
||||
NUM_COMPONENTS>;
|
||||
using PortalConstType =
|
||||
vtkm::exec::internal::ArrayPortalGroupVec<typename SourceArrayHandleType::PortalConstControl,
|
||||
vtkm::exec::internal::ArrayPortalGroupVec<typename SourceArrayHandleType::ReadPortalType,
|
||||
NUM_COMPONENTS>;
|
||||
|
||||
VTKM_CONT
|
||||
@ -150,14 +150,14 @@ public:
|
||||
PortalType GetPortal()
|
||||
{
|
||||
VTKM_ASSERT(this->Valid);
|
||||
return PortalType(this->SourceArray.GetPortalControl());
|
||||
return PortalType(this->SourceArray.WritePortal());
|
||||
}
|
||||
|
||||
VTKM_CONT
|
||||
PortalConstType GetPortalConst() const
|
||||
{
|
||||
VTKM_ASSERT(this->Valid);
|
||||
return PortalConstType(this->SourceArray.GetPortalConstControl());
|
||||
return PortalConstType(this->SourceArray.ReadPortal());
|
||||
}
|
||||
|
||||
VTKM_CONT
|
||||
|
@ -178,18 +178,18 @@ class Storage<vtkm::VecFromPortal<SourcePortal>,
|
||||
using OffsetsArrayHandleType = vtkm::cont::ArrayHandle<vtkm::Id, OffsetsStorageTag>;
|
||||
|
||||
VTKM_STATIC_ASSERT_MSG(
|
||||
(std::is_same<SourcePortal, typename SourceArrayHandleType::PortalControl>::value),
|
||||
(std::is_same<SourcePortal, typename SourceArrayHandleType::WritePortalType>::value),
|
||||
"Used invalid SourcePortal type with expected SourceStorageTag.");
|
||||
|
||||
public:
|
||||
using ValueType = vtkm::VecFromPortal<SourcePortal>;
|
||||
|
||||
using PortalType = vtkm::exec::internal::ArrayPortalGroupVecVariable<
|
||||
typename SourceArrayHandleType::PortalControl,
|
||||
typename OffsetsArrayHandleType::PortalConstControl>;
|
||||
typename SourceArrayHandleType::WritePortalType,
|
||||
typename OffsetsArrayHandleType::ReadPortalType>;
|
||||
using PortalConstType = vtkm::exec::internal::ArrayPortalGroupVecVariable<
|
||||
typename SourceArrayHandleType::PortalConstControl,
|
||||
typename OffsetsArrayHandleType::PortalConstControl>;
|
||||
typename SourceArrayHandleType::ReadPortalType,
|
||||
typename OffsetsArrayHandleType::ReadPortalType>;
|
||||
|
||||
VTKM_CONT
|
||||
Storage()
|
||||
@ -208,15 +208,13 @@ public:
|
||||
VTKM_CONT
|
||||
PortalType GetPortal()
|
||||
{
|
||||
return PortalType(this->SourceArray.GetPortalControl(),
|
||||
this->OffsetsArray.GetPortalConstControl());
|
||||
return PortalType(this->SourceArray.WritePortal(), this->OffsetsArray.ReadPortal());
|
||||
}
|
||||
|
||||
VTKM_CONT
|
||||
PortalConstType GetPortalConst() const
|
||||
{
|
||||
return PortalConstType(this->SourceArray.GetPortalConstControl(),
|
||||
this->OffsetsArray.GetPortalConstControl());
|
||||
return PortalConstType(this->SourceArray.ReadPortal(), this->OffsetsArray.ReadPortal());
|
||||
}
|
||||
|
||||
VTKM_CONT
|
||||
@ -395,7 +393,7 @@ private:
|
||||
template <typename SourceArrayHandleType, typename OffsetsArrayHandleType>
|
||||
class ArrayHandleGroupVecVariable
|
||||
: public vtkm::cont::ArrayHandle<
|
||||
vtkm::VecFromPortal<typename SourceArrayHandleType::PortalControl>,
|
||||
vtkm::VecFromPortal<typename SourceArrayHandleType::WritePortalType>,
|
||||
vtkm::cont::StorageTagGroupVecVariable<typename SourceArrayHandleType::StorageTag,
|
||||
typename OffsetsArrayHandleType::StorageTag>>
|
||||
{
|
||||
@ -411,7 +409,7 @@ public:
|
||||
ArrayHandleGroupVecVariable,
|
||||
(ArrayHandleGroupVecVariable<SourceArrayHandleType, OffsetsArrayHandleType>),
|
||||
(vtkm::cont::ArrayHandle<
|
||||
vtkm::VecFromPortal<typename SourceArrayHandleType::PortalControl>,
|
||||
vtkm::VecFromPortal<typename SourceArrayHandleType::WritePortalType>,
|
||||
vtkm::cont::StorageTagGroupVecVariable<typename SourceArrayHandleType::StorageTag,
|
||||
typename OffsetsArrayHandleType::StorageTag>>));
|
||||
|
||||
|
@ -32,6 +32,8 @@ struct ArrayHandleImplicitTraits
|
||||
using ValueType = decltype(FunctorType{}(vtkm::Id{}));
|
||||
using StorageTag = vtkm::cont::StorageTagImplicit<ArrayPortalImplicit<FunctorType>>;
|
||||
using Superclass = vtkm::cont::ArrayHandle<ValueType, StorageTag>;
|
||||
using StorageType = vtkm::cont::internal::Storage<ValueType, StorageTag>;
|
||||
using PortalType = typename StorageType::PortalType;
|
||||
};
|
||||
|
||||
/// \brief An array portal that returns the result of a functor
|
||||
@ -102,7 +104,7 @@ public:
|
||||
|
||||
VTKM_CONT
|
||||
ArrayHandleImplicit(FunctorType functor, vtkm::Id length)
|
||||
: Superclass(typename Superclass::PortalConstControl(functor, length))
|
||||
: Superclass(typename ArrayTraits::PortalType(functor, length))
|
||||
{
|
||||
}
|
||||
};
|
||||
@ -162,7 +164,7 @@ public:
|
||||
static VTKM_CONT void save(BinaryBuffer& bb, const BaseType& obj)
|
||||
{
|
||||
vtkmdiy::save(bb, obj.GetNumberOfValues());
|
||||
vtkmdiy::save(bb, obj.GetPortalConstControl().GetFunctor());
|
||||
vtkmdiy::save(bb, obj.ReadPortal().GetFunctor());
|
||||
}
|
||||
|
||||
static VTKM_CONT void load(BinaryBuffer& bb, BaseType& obj)
|
||||
|
@ -64,7 +64,9 @@ public:
|
||||
|
||||
VTKM_CONT
|
||||
ArrayHandleIndex(vtkm::Id length)
|
||||
: Superclass(typename Superclass::PortalConstControl(internal::IndexFunctor{}, length))
|
||||
: Superclass(
|
||||
typename internal::Storage<vtkm::Id, StorageTagIndex>::PortalType(internal::IndexFunctor{},
|
||||
length))
|
||||
{
|
||||
}
|
||||
};
|
||||
|
@ -180,10 +180,10 @@ private:
|
||||
using StorageToArrayHandle = vtkm::cont::ArrayHandle<ValueType, S>;
|
||||
|
||||
template <typename S>
|
||||
using StorageToPortalControl = typename StorageToArrayHandle<S>::PortalControl;
|
||||
using StorageToPortalControl = typename StorageToArrayHandle<S>::WritePortalType;
|
||||
|
||||
template <typename S>
|
||||
using StorageToPortalConstControl = typename StorageToArrayHandle<S>::PortalConstControl;
|
||||
using StorageToPortalConstControl = typename StorageToArrayHandle<S>::ReadPortalType;
|
||||
|
||||
using ArrayHandleVariantType = vtkm::internal::Variant<StorageToArrayHandle<StorageTags>...>;
|
||||
ArrayHandleVariantType ArrayHandleVariant;
|
||||
@ -231,7 +231,7 @@ private:
|
||||
template <typename ArrayHandleType>
|
||||
VTKM_CONT PortalType operator()(ArrayHandleType&& array) const
|
||||
{
|
||||
return PortalType(array.GetPortalControl());
|
||||
return PortalType(array.WritePortal());
|
||||
}
|
||||
};
|
||||
|
||||
@ -240,7 +240,7 @@ private:
|
||||
template <typename ArrayHandleType>
|
||||
VTKM_CONT PortalConstType operator()(ArrayHandleType&& array) const
|
||||
{
|
||||
return PortalConstType(array.GetPortalConstControl());
|
||||
return PortalConstType(array.ReadPortal());
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -124,11 +124,11 @@ public:
|
||||
using ValueType = T;
|
||||
|
||||
using PortalType =
|
||||
vtkm::exec::internal::ArrayPortalPermutation<typename IndexArrayType::PortalConstControl,
|
||||
typename ValueArrayType::PortalControl>;
|
||||
vtkm::exec::internal::ArrayPortalPermutation<typename IndexArrayType::ReadPortalType,
|
||||
typename ValueArrayType::WritePortalType>;
|
||||
using PortalConstType =
|
||||
vtkm::exec::internal::ArrayPortalPermutation<typename IndexArrayType::PortalConstControl,
|
||||
typename ValueArrayType::PortalConstControl>;
|
||||
vtkm::exec::internal::ArrayPortalPermutation<typename IndexArrayType::ReadPortalType,
|
||||
typename ValueArrayType::ReadPortalType>;
|
||||
|
||||
VTKM_CONT
|
||||
Storage()
|
||||
@ -148,16 +148,14 @@ public:
|
||||
PortalType GetPortal()
|
||||
{
|
||||
VTKM_ASSERT(this->Valid);
|
||||
return PortalType(this->IndexArray.GetPortalConstControl(),
|
||||
this->ValueArray.GetPortalControl());
|
||||
return PortalType(this->IndexArray.ReadPortal(), this->ValueArray.WritePortal());
|
||||
}
|
||||
|
||||
VTKM_CONT
|
||||
PortalConstType GetPortalConst() const
|
||||
{
|
||||
VTKM_ASSERT(this->Valid);
|
||||
return PortalConstType(this->IndexArray.GetPortalConstControl(),
|
||||
this->ValueArray.GetPortalConstControl());
|
||||
return PortalConstType(this->IndexArray.ReadPortal(), this->ValueArray.ReadPortal());
|
||||
}
|
||||
|
||||
VTKM_CONT
|
||||
|
@ -123,8 +123,8 @@ class Storage<T, StorageTagReverse<ST>>
|
||||
public:
|
||||
using ValueType = T;
|
||||
using ArrayHandleType = typename detail::ReverseTypeArg<T, ST>::ArrayHandle;
|
||||
using PortalType = ArrayPortalReverse<typename ArrayHandleType::PortalControl>;
|
||||
using PortalConstType = ArrayPortalReverse<typename ArrayHandleType::PortalConstControl>;
|
||||
using PortalType = ArrayPortalReverse<typename ArrayHandleType::WritePortalType>;
|
||||
using PortalConstType = ArrayPortalReverse<typename ArrayHandleType::ReadPortalType>;
|
||||
|
||||
VTKM_CONT
|
||||
Storage()
|
||||
@ -140,13 +140,10 @@ public:
|
||||
|
||||
|
||||
VTKM_CONT
|
||||
PortalConstType GetPortalConst() const
|
||||
{
|
||||
return PortalConstType(this->Array.GetPortalConstControl());
|
||||
}
|
||||
PortalConstType GetPortalConst() const { return PortalConstType(this->Array.ReadPortal()); }
|
||||
|
||||
VTKM_CONT
|
||||
PortalType GetPortal() { return PortalType(this->Array.GetPortalControl()); }
|
||||
PortalType GetPortal() { return PortalType(this->Array.WritePortal()); }
|
||||
|
||||
VTKM_CONT
|
||||
vtkm::Id GetNumberOfValues() const { return this->Array.GetNumberOfValues(); }
|
||||
|
@ -182,11 +182,11 @@ struct ArrayHandleSOATraits
|
||||
using IsTrueVec = std::integral_constant<bool, (NUM_COMPONENTS > 1)>;
|
||||
|
||||
using PortalControl = typename detail::SOAPortalChooser<ValueType,
|
||||
typename BaseArrayType::PortalControl,
|
||||
typename BaseArrayType::WritePortalType,
|
||||
IsTrueVec>::Type;
|
||||
using PortalConstControl =
|
||||
typename detail::SOAPortalChooser<ValueType,
|
||||
typename BaseArrayType::PortalConstControl,
|
||||
typename BaseArrayType::ReadPortalType,
|
||||
IsTrueVec>::Type;
|
||||
|
||||
template <typename Device>
|
||||
@ -282,7 +282,7 @@ public:
|
||||
VTKM_ASSERT(this->IsValid());
|
||||
return detail::MakeSOAPortal<PortalType>(
|
||||
this->Arrays, this->GetNumberOfValues(), [](BaseArrayType& array) {
|
||||
return array.GetPortalControl();
|
||||
return array.WritePortal();
|
||||
});
|
||||
}
|
||||
|
||||
@ -291,7 +291,7 @@ public:
|
||||
VTKM_ASSERT(this->IsValid());
|
||||
return detail::MakeSOAPortal<PortalConstType>(
|
||||
this->Arrays, this->GetNumberOfValues(), [](const BaseArrayType& array) {
|
||||
return array.GetPortalConstControl();
|
||||
return array.ReadPortal();
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -120,9 +120,9 @@ public:
|
||||
using ValueType = typename ArrayHandleInputType::ValueType;
|
||||
|
||||
using PortalType =
|
||||
vtkm::cont::internal::ArrayPortalStreaming<typename ArrayHandleInputType::PortalControl>;
|
||||
vtkm::cont::internal::ArrayPortalStreaming<typename ArrayHandleInputType::WritePortalType>;
|
||||
using PortalConstType =
|
||||
vtkm::cont::internal::ArrayPortalStreaming<typename ArrayHandleInputType::PortalConstControl>;
|
||||
vtkm::cont::internal::ArrayPortalStreaming<typename ArrayHandleInputType::ReadPortalType>;
|
||||
|
||||
VTKM_CONT
|
||||
Storage()
|
||||
@ -147,15 +147,14 @@ public:
|
||||
PortalType GetPortal()
|
||||
{
|
||||
VTKM_ASSERT(this->Valid);
|
||||
return PortalType(this->InputArray.GetPortalControl(), BlockSize, BlockIndex, CurBlockSize);
|
||||
return PortalType(this->InputArray.WritePortal(), BlockSize, BlockIndex, CurBlockSize);
|
||||
}
|
||||
|
||||
VTKM_CONT
|
||||
PortalConstType GetPortalConst() const
|
||||
{
|
||||
VTKM_ASSERT(this->Valid);
|
||||
return PortalConstType(
|
||||
this->InputArray.GetPortalConstControl(), BlockSize, BlockIndex, CurBlockSize);
|
||||
return PortalConstType(this->InputArray.ReadPortal(), BlockSize, BlockIndex, CurBlockSize);
|
||||
}
|
||||
|
||||
VTKM_CONT
|
||||
@ -238,9 +237,9 @@ public:
|
||||
const vtkm::Id curBlockSize)
|
||||
: Superclass(StorageType(inputArray, blockIndex, blockSize, curBlockSize))
|
||||
{
|
||||
this->GetPortalConstControl().SetBlockIndex(blockIndex);
|
||||
this->GetPortalConstControl().SetBlockSize(blockSize);
|
||||
this->GetPortalConstControl().SetCurBlockSize(curBlockSize);
|
||||
this->ReadPortal().SetBlockIndex(blockIndex);
|
||||
this->ReadPortal().SetBlockSize(blockSize);
|
||||
this->ReadPortal().SetCurBlockSize(curBlockSize);
|
||||
}
|
||||
|
||||
VTKM_CONT
|
||||
|
@ -195,9 +195,9 @@ class Storage<typename ResizeVectorType<typename ArrayHandleType::ValueType, Out
|
||||
|
||||
public:
|
||||
using PortalType =
|
||||
ArrayPortalSwizzle<typename ArrayHandleType::PortalControl, ArrayHandleType, OutSize>;
|
||||
ArrayPortalSwizzle<typename ArrayHandleType::WritePortalType, ArrayHandleType, OutSize>;
|
||||
using PortalConstType =
|
||||
ArrayPortalSwizzle<typename ArrayHandleType::PortalConstControl, ArrayHandleType, OutSize>;
|
||||
ArrayPortalSwizzle<typename ArrayHandleType::ReadPortalType, ArrayHandleType, OutSize>;
|
||||
using MapType = typename Traits::MapType;
|
||||
using ValueType = typename Traits::OutValueType;
|
||||
|
||||
@ -220,14 +220,14 @@ public:
|
||||
PortalConstType GetPortalConst() const
|
||||
{
|
||||
VTKM_ASSERT(this->Valid);
|
||||
return PortalConstType(this->Array.GetPortalConstControl(), this->Map);
|
||||
return PortalConstType(this->Array.ReadPortal(), this->Map);
|
||||
}
|
||||
|
||||
VTKM_CONT
|
||||
PortalType GetPortal()
|
||||
{
|
||||
VTKM_ASSERT(this->Valid);
|
||||
return PortalType(this->Array.GetPortalControl(), this->Map);
|
||||
return PortalType(this->Array.WritePortal(), this->Map);
|
||||
}
|
||||
|
||||
VTKM_CONT
|
||||
|
@ -273,7 +273,7 @@ public:
|
||||
|
||||
using PortalConstType =
|
||||
vtkm::exec::internal::ArrayPortalTransform<ValueType,
|
||||
typename ArrayHandleType::PortalConstControl,
|
||||
typename ArrayHandleType::ReadPortalType,
|
||||
typename FunctorManager::FunctorType>;
|
||||
|
||||
// Note that this array is read only, so you really should only be getting the const
|
||||
@ -307,7 +307,7 @@ public:
|
||||
{
|
||||
VTKM_ASSERT(this->Valid);
|
||||
vtkm::cont::ScopedRuntimeDeviceTracker trackerScope(vtkm::cont::DeviceAdapterTagSerial{});
|
||||
return PortalConstType(this->Array.GetPortalConstControl(), this->Functor.PrepareForControl());
|
||||
return PortalConstType(this->Array.ReadPortal(), this->Functor.PrepareForControl());
|
||||
}
|
||||
|
||||
VTKM_CONT
|
||||
@ -367,12 +367,12 @@ public:
|
||||
|
||||
using PortalType =
|
||||
vtkm::exec::internal::ArrayPortalTransform<ValueType,
|
||||
typename ArrayHandleType::PortalControl,
|
||||
typename ArrayHandleType::WritePortalType,
|
||||
typename FunctorManager::FunctorType,
|
||||
typename InverseFunctorManager::FunctorType>;
|
||||
using PortalConstType =
|
||||
vtkm::exec::internal::ArrayPortalTransform<ValueType,
|
||||
typename ArrayHandleType::PortalConstControl,
|
||||
typename ArrayHandleType::ReadPortalType,
|
||||
typename FunctorManager::FunctorType,
|
||||
typename InverseFunctorManager::FunctorType>;
|
||||
|
||||
@ -398,7 +398,7 @@ public:
|
||||
{
|
||||
VTKM_ASSERT(this->Valid);
|
||||
vtkm::cont::ScopedRuntimeDeviceTracker trackerScope(vtkm::cont::DeviceAdapterTagSerial{});
|
||||
return PortalType(this->Array.GetPortalControl(),
|
||||
return PortalType(this->Array.WritePortal(),
|
||||
this->Functor.PrepareForControl(),
|
||||
this->InverseFunctor.PrepareForControl());
|
||||
}
|
||||
@ -408,7 +408,7 @@ public:
|
||||
{
|
||||
VTKM_ASSERT(this->Valid);
|
||||
vtkm::cont::ScopedRuntimeDeviceTracker trackerScope(vtkm::cont::DeviceAdapterTagSerial{});
|
||||
return PortalConstType(this->Array.GetPortalConstControl(),
|
||||
return PortalConstType(this->Array.ReadPortal(),
|
||||
this->Functor.PrepareForControl(),
|
||||
this->InverseFunctor.PrepareForControl());
|
||||
}
|
||||
|
@ -121,7 +121,7 @@ private:
|
||||
public:
|
||||
static VTKM_CONT void save(BinaryBuffer& bb, const BaseType& obj)
|
||||
{
|
||||
auto portal = obj.GetPortalConstControl();
|
||||
auto portal = obj.ReadPortal();
|
||||
vtkmdiy::save(bb, portal.GetDimensions());
|
||||
vtkmdiy::save(bb, portal.GetOrigin());
|
||||
vtkmdiy::save(bb, portal.GetSpacing());
|
||||
|
@ -134,8 +134,8 @@ class Storage<T, StorageTagView<ST>>
|
||||
public:
|
||||
using ValueType = T;
|
||||
|
||||
using PortalType = ArrayPortalView<typename ArrayHandleType::PortalControl>;
|
||||
using PortalConstType = ArrayPortalView<typename ArrayHandleType::PortalConstControl>;
|
||||
using PortalType = ArrayPortalView<typename ArrayHandleType::WritePortalType>;
|
||||
using PortalConstType = ArrayPortalView<typename ArrayHandleType::ReadPortalType>;
|
||||
|
||||
VTKM_CONT
|
||||
Storage()
|
||||
@ -158,14 +158,14 @@ public:
|
||||
PortalType GetPortal()
|
||||
{
|
||||
VTKM_ASSERT(this->Valid);
|
||||
return PortalType(this->Array.GetPortalControl(), this->StartIndex, this->NumValues);
|
||||
return PortalType(this->Array.WritePortal(), this->StartIndex, this->NumValues);
|
||||
}
|
||||
|
||||
VTKM_CONT
|
||||
PortalConstType GetPortalConst() const
|
||||
{
|
||||
VTKM_ASSERT(this->Valid);
|
||||
return PortalConstType(this->Array.GetPortalConstControl(), this->StartIndex, this->NumValues);
|
||||
return PortalConstType(this->Array.ReadPortal(), this->StartIndex, this->NumValues);
|
||||
}
|
||||
|
||||
VTKM_CONT
|
||||
|
@ -143,13 +143,14 @@ class Storage<vtkm::Pair<T1, T2>, vtkm::cont::StorageTagZip<ST1, ST2>>
|
||||
public:
|
||||
using ValueType = vtkm::Pair<T1, T2>;
|
||||
|
||||
using PortalType = vtkm::exec::internal::ArrayPortalZip<ValueType,
|
||||
typename FirstHandleType::PortalControl,
|
||||
typename SecondHandleType::PortalControl>;
|
||||
using PortalType =
|
||||
vtkm::exec::internal::ArrayPortalZip<ValueType,
|
||||
typename FirstHandleType::WritePortalType,
|
||||
typename SecondHandleType::WritePortalType>;
|
||||
using PortalConstType =
|
||||
vtkm::exec::internal::ArrayPortalZip<ValueType,
|
||||
typename FirstHandleType::PortalConstControl,
|
||||
typename SecondHandleType::PortalConstControl>;
|
||||
typename FirstHandleType::ReadPortalType,
|
||||
typename SecondHandleType::ReadPortalType>;
|
||||
|
||||
VTKM_CONT
|
||||
Storage()
|
||||
@ -168,14 +169,13 @@ public:
|
||||
VTKM_CONT
|
||||
PortalType GetPortal()
|
||||
{
|
||||
return PortalType(this->FirstArray.GetPortalControl(), this->SecondArray.GetPortalControl());
|
||||
return PortalType(this->FirstArray.WritePortal(), this->SecondArray.WritePortal());
|
||||
}
|
||||
|
||||
VTKM_CONT
|
||||
PortalConstType GetPortalConst() const
|
||||
{
|
||||
return PortalConstType(this->FirstArray.GetPortalConstControl(),
|
||||
this->SecondArray.GetPortalConstControl());
|
||||
return PortalConstType(this->FirstArray.ReadPortal(), this->SecondArray.ReadPortal());
|
||||
}
|
||||
|
||||
VTKM_CONT
|
||||
|
@ -77,7 +77,7 @@ vtkm::cont::ArrayHandle<vtkm::Range> ArrayRangeCompute(
|
||||
vtkm::cont::ArrayHandleUniformPointCoordinates::StorageTag>& array,
|
||||
vtkm::cont::DeviceAdapterId)
|
||||
{
|
||||
vtkm::internal::ArrayPortalUniformPointCoordinates portal = array.GetPortalConstControl();
|
||||
vtkm::internal::ArrayPortalUniformPointCoordinates portal = array.ReadPortal();
|
||||
|
||||
// In this portal we know that the min value is the first entry and the
|
||||
// max value is the last entry.
|
||||
@ -86,7 +86,7 @@ vtkm::cont::ArrayHandle<vtkm::Range> ArrayRangeCompute(
|
||||
|
||||
vtkm::cont::ArrayHandle<vtkm::Range> rangeArray;
|
||||
rangeArray.Allocate(3);
|
||||
vtkm::cont::ArrayHandle<vtkm::Range>::PortalControl outPortal = rangeArray.GetPortalControl();
|
||||
vtkm::cont::ArrayHandle<vtkm::Range>::WritePortalType outPortal = rangeArray.WritePortal();
|
||||
outPortal.Set(0, vtkm::Range(minimum[0], maximum[0]));
|
||||
outPortal.Set(1, vtkm::Range(minimum[1], maximum[1]));
|
||||
outPortal.Set(2, vtkm::Range(minimum[2], maximum[2]));
|
||||
|
@ -131,18 +131,18 @@ VTKM_CONT inline vtkm::cont::ArrayHandle<vtkm::Range> ArrayRangeCompute(
|
||||
|
||||
vtkm::cont::ArrayHandle<T, ST1> firstArray = input.GetStorage().GetFirstArray();
|
||||
componentRangeArray = vtkm::cont::ArrayRangeCompute(firstArray, device);
|
||||
componentRange = componentRangeArray.GetPortalConstControl().Get(0);
|
||||
result.GetPortalControl().Set(0, componentRange);
|
||||
componentRange = componentRangeArray.ReadPortal().Get(0);
|
||||
result.WritePortal().Set(0, componentRange);
|
||||
|
||||
vtkm::cont::ArrayHandle<T, ST2> secondArray = input.GetStorage().GetSecondArray();
|
||||
componentRangeArray = vtkm::cont::ArrayRangeCompute(secondArray, device);
|
||||
componentRange = componentRangeArray.GetPortalConstControl().Get(0);
|
||||
result.GetPortalControl().Set(1, componentRange);
|
||||
componentRange = componentRangeArray.ReadPortal().Get(0);
|
||||
result.WritePortal().Set(1, componentRange);
|
||||
|
||||
vtkm::cont::ArrayHandle<T, ST3> thirdArray = input.GetStorage().GetThirdArray();
|
||||
componentRangeArray = vtkm::cont::ArrayRangeCompute(thirdArray, device);
|
||||
componentRange = componentRangeArray.GetPortalConstControl().Get(0);
|
||||
result.GetPortalControl().Set(2, componentRange);
|
||||
componentRange = componentRangeArray.ReadPortal().Get(0);
|
||||
result.WritePortal().Set(2, componentRange);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
@ -56,7 +56,7 @@ inline vtkm::cont::ArrayHandle<vtkm::Range> ArrayRangeComputeImpl(
|
||||
|
||||
if (input.GetNumberOfValues() < 1)
|
||||
{
|
||||
auto portal = range.GetPortalControl();
|
||||
auto portal = range.WritePortal();
|
||||
for (vtkm::IdComponent i = 0; i < VecTraits::NUM_COMPONENTS; ++i)
|
||||
{
|
||||
portal.Set(i, vtkm::Range());
|
||||
@ -79,7 +79,7 @@ inline vtkm::cont::ArrayHandle<vtkm::Range> ArrayRangeComputeImpl(
|
||||
}
|
||||
else
|
||||
{
|
||||
auto portal = range.GetPortalControl();
|
||||
auto portal = range.WritePortal();
|
||||
for (vtkm::IdComponent i = 0; i < VecTraits::NUM_COMPONENTS; ++i)
|
||||
{
|
||||
portal.Set(i,
|
||||
|
@ -501,10 +501,17 @@ public:
|
||||
using ArrayHandleType = ArrayHandle<WordTypeDefault, StorageTagBasic>;
|
||||
|
||||
/// The BitPortal used in the control environment.
|
||||
using PortalControl = detail::BitPortal<vtkm::cont::internal::AtomicInterfaceControl>;
|
||||
using WritePortalType = vtkm::cont::internal::ArrayPortalToken<
|
||||
detail::BitPortal<vtkm::cont::internal::AtomicInterfaceControl>>;
|
||||
|
||||
/// A read-only BitPortal used in the control environment.
|
||||
using PortalConstControl = detail::BitPortalConst<vtkm::cont::internal::AtomicInterfaceControl>;
|
||||
using ReadPortalType = vtkm::cont::internal::ArrayPortalToken<
|
||||
detail::BitPortalConst<vtkm::cont::internal::AtomicInterfaceControl>>;
|
||||
|
||||
using PortalControl VTKM_DEPRECATED(1.6, "Use BitField::WritePortalType instead.") =
|
||||
detail::BitPortal<vtkm::cont::internal::AtomicInterfaceControl>;
|
||||
using PortalConstControl VTKM_DEPRECATED(1.6, "Use ArrayBitField::ReadPortalType instead.") =
|
||||
detail::BitPortalConst<vtkm::cont::internal::AtomicInterfaceControl>;
|
||||
|
||||
template <typename Device>
|
||||
struct ExecutionTypes
|
||||
@ -625,20 +632,46 @@ public:
|
||||
VTKM_CONT
|
||||
DeviceAdapterId GetDeviceAdapterId() const { return this->Internals->Data.GetDeviceAdapterId(); }
|
||||
|
||||
/// Get a portal to the data that is usable from the control environment.
|
||||
VTKM_CONT
|
||||
PortalControl GetPortalControl()
|
||||
/// \brief Get a portal to the data that is usable from the control environment.
|
||||
///
|
||||
/// As long as this portal is in scope, no one else will be able to read or write the BitField.
|
||||
VTKM_CONT WritePortalType WritePortal() const
|
||||
{
|
||||
return PortalControl{ this->Internals->Data.GetPortalControl(), this->Internals->NumberOfBits };
|
||||
auto dataPortal = this->Internals->Data.WritePortal();
|
||||
return WritePortalType{ dataPortal.GetToken(), dataPortal, this->Internals->NumberOfBits };
|
||||
}
|
||||
|
||||
/// \brief Get a read-only portal to the data that is usable from the control environment.
|
||||
///
|
||||
/// As long as this portal is in scope, no one else will be able to write in the BitField.
|
||||
VTKM_CONT ReadPortalType ReadPortal() const
|
||||
{
|
||||
auto dataPortal = this->Internals->Data.ReadPortal();
|
||||
return ReadPortalType{ dataPortal.GetToken(), dataPortal, this->Internals->NumberOfBits };
|
||||
}
|
||||
|
||||
VTKM_CONT
|
||||
VTKM_DEPRECATED(1.6,
|
||||
"Use BitField::WritePortal() instead. "
|
||||
"Note that the returned portal will lock the array while it is in scope.")
|
||||
detail::BitPortal<vtkm::cont::internal::AtomicInterfaceControl> GetPortalControl()
|
||||
{
|
||||
return detail::BitPortal<vtkm::cont::internal::AtomicInterfaceControl>{
|
||||
this->Internals->Data.WritePortal(), this->Internals->NumberOfBits
|
||||
};
|
||||
}
|
||||
|
||||
/// Get a read-only portal to the data that is usable from the control
|
||||
/// environment.
|
||||
VTKM_CONT
|
||||
PortalConstControl GetPortalConstControl() const
|
||||
VTKM_DEPRECATED(1.6,
|
||||
"Use BitField::ReadPortal() instead. "
|
||||
"Note that the returned portal will lock the array while it is in scope.")
|
||||
detail::BitPortalConst<vtkm::cont::internal::AtomicInterfaceControl> GetPortalConstControl() const
|
||||
{
|
||||
return PortalConstControl{ this->Internals->Data.GetPortalConstControl(),
|
||||
this->Internals->NumberOfBits };
|
||||
return detail::BitPortalConst<vtkm::cont::internal::AtomicInterfaceControl>{
|
||||
this->Internals->Data.ReadPortal(), this->Internals->NumberOfBits
|
||||
};
|
||||
}
|
||||
|
||||
/// Prepares this BitField to be used as an input to an operation in the
|
||||
|
@ -29,12 +29,12 @@ vtkm::Bounds MergeBoundsGlobal(const vtkm::Bounds& local)
|
||||
{
|
||||
vtkm::cont::ArrayHandle<vtkm::Range> ranges;
|
||||
ranges.Allocate(3);
|
||||
ranges.GetPortalControl().Set(0, local.X);
|
||||
ranges.GetPortalControl().Set(1, local.Y);
|
||||
ranges.GetPortalControl().Set(2, local.Z);
|
||||
ranges.WritePortal().Set(0, local.X);
|
||||
ranges.WritePortal().Set(1, local.Y);
|
||||
ranges.WritePortal().Set(2, local.Z);
|
||||
|
||||
ranges = vtkm::cont::detail::MergeRangesGlobal(ranges);
|
||||
auto portal = ranges.GetPortalConstControl();
|
||||
auto portal = ranges.ReadPortal();
|
||||
return vtkm::Bounds(portal.Get(0), portal.Get(1), portal.Get(2));
|
||||
}
|
||||
}
|
||||
|
@ -266,13 +266,13 @@ void CellLocatorBoundingIntervalHierarchy::Build()
|
||||
IdArrayHandle discardKeys;
|
||||
IdArrayHandle segmentSizes;
|
||||
segmentSizes.Allocate(1);
|
||||
segmentSizes.GetPortalControl().Set(0, numCells);
|
||||
segmentSizes.WritePortal().Set(0, numCells);
|
||||
this->ProcessedCellIds.Allocate(numCells);
|
||||
vtkm::Id cellIdsOffset = 0;
|
||||
|
||||
IdArrayHandle parentIndices;
|
||||
parentIndices.Allocate(1);
|
||||
parentIndices.GetPortalControl().Set(0, -1);
|
||||
parentIndices.WritePortal().Set(0, -1);
|
||||
|
||||
while (!done)
|
||||
{
|
||||
|
@ -54,9 +54,9 @@ void CellLocatorUniformGrid::Build()
|
||||
}
|
||||
|
||||
UniformType uniformCoords = coords.GetData().Cast<UniformType>();
|
||||
this->Origin = uniformCoords.GetPortalConstControl().GetOrigin();
|
||||
this->Origin = uniformCoords.ReadPortal().GetOrigin();
|
||||
|
||||
vtkm::Vec3f spacing = uniformCoords.GetPortalConstControl().GetSpacing();
|
||||
vtkm::Vec3f spacing = uniformCoords.ReadPortal().GetSpacing();
|
||||
vtkm::Vec3f unitLength;
|
||||
unitLength[0] = static_cast<vtkm::FloatDefault>(this->PointDims[0] - 1);
|
||||
unitLength[1] = static_cast<vtkm::FloatDefault>(this->PointDims[1] - 1);
|
||||
|
@ -135,11 +135,11 @@ VTKM_CONT
|
||||
void CellSetExplicit<SST, CST, OST>::GetCellPointIds(vtkm::Id cellId,
|
||||
vtkm::Id* ptids) const
|
||||
{
|
||||
const auto offPortal = this->Data->CellPointIds.Offsets.GetPortalConstControl();
|
||||
const auto offPortal = this->Data->CellPointIds.Offsets.ReadPortal();
|
||||
const vtkm::Id start = offPortal.Get(cellId);
|
||||
const vtkm::Id end = offPortal.Get(cellId + 1);
|
||||
const vtkm::IdComponent numIndices = static_cast<vtkm::IdComponent>(end - start);
|
||||
auto connPortal = this->Data->CellPointIds.Connectivity.GetPortalConstControl();
|
||||
auto connPortal = this->Data->CellPointIds.Connectivity.ReadPortal();
|
||||
for (vtkm::IdComponent i = 0; i < numIndices; i++)
|
||||
{
|
||||
ptids[i] = connPortal.Get(start + i);
|
||||
@ -169,7 +169,7 @@ VTKM_CONT
|
||||
vtkm::IdComponent CellSetExplicit<SST, CST, OST>
|
||||
::GetNumberOfPointsInCell(vtkm::Id cellid) const
|
||||
{
|
||||
const auto portal = this->Data->CellPointIds.Offsets.GetPortalConstControl();
|
||||
const auto portal = this->Data->CellPointIds.Offsets.ReadPortal();
|
||||
return static_cast<vtkm::IdComponent>(portal.Get(cellid + 1) -
|
||||
portal.Get(cellid));
|
||||
}
|
||||
@ -179,7 +179,7 @@ VTKM_CONT
|
||||
vtkm::UInt8 CellSetExplicit<SST, CST, OST>
|
||||
::GetCellShape(vtkm::Id cellid) const
|
||||
{
|
||||
return this->Data->CellPointIds.Shapes.GetPortalConstControl().Get(cellid);
|
||||
return this->Data->CellPointIds.Shapes.ReadPortal().Get(cellid);
|
||||
}
|
||||
|
||||
template <typename SST, typename CST, typename OST>
|
||||
@ -188,11 +188,11 @@ VTKM_CONT
|
||||
void CellSetExplicit<SST, CST, OST>
|
||||
::GetIndices(vtkm::Id cellId, vtkm::Vec<vtkm::Id, NumVecIndices>& ids) const
|
||||
{
|
||||
const auto offPortal = this->Data->CellPointIds.Offsets.GetPortalConstControl();
|
||||
const auto offPortal = this->Data->CellPointIds.Offsets.ReadPortal();
|
||||
const vtkm::Id start = offPortal.Get(cellId);
|
||||
const vtkm::Id end = offPortal.Get(cellId + 1);
|
||||
const auto numCellIndices = static_cast<vtkm::IdComponent>(end - start);
|
||||
const auto connPortal = this->Data->CellPointIds.Connectivity.GetPortalConstControl();
|
||||
const auto connPortal = this->Data->CellPointIds.Connectivity.ReadPortal();
|
||||
|
||||
VTKM_LOG_IF_S(vtkm::cont::LogLevel::Warn,
|
||||
numCellIndices != NumVecIndices,
|
||||
@ -213,14 +213,14 @@ VTKM_CONT
|
||||
void CellSetExplicit<SST, CST, OST>
|
||||
::GetIndices(vtkm::Id cellId, vtkm::cont::ArrayHandle<vtkm::Id>& ids) const
|
||||
{
|
||||
const auto offPortal = this->Data->CellPointIds.Offsets.GetPortalConstControl();
|
||||
const auto offPortal = this->Data->CellPointIds.Offsets.ReadPortal();
|
||||
const vtkm::Id start = offPortal.Get(cellId);
|
||||
const vtkm::Id end = offPortal.Get(cellId + 1);
|
||||
const vtkm::IdComponent numIndices = static_cast<vtkm::IdComponent>(end - start);
|
||||
ids.Allocate(numIndices);
|
||||
auto connPortal = this->Data->CellPointIds.Connectivity.GetPortalConstControl();
|
||||
auto connPortal = this->Data->CellPointIds.Connectivity.ReadPortal();
|
||||
|
||||
auto outIdPortal = ids.GetPortalControl();
|
||||
auto outIdPortal = ids.WritePortal();
|
||||
|
||||
for (vtkm::IdComponent i = 0; i < numIndices; i++)
|
||||
{
|
||||
@ -241,7 +241,7 @@ SetFirstToZeroIfWritable(ArrayType&& array)
|
||||
{
|
||||
using ValueType = typename std::decay<ArrayType>::type::ValueType;
|
||||
using Traits = vtkm::TypeTraits<ValueType>;
|
||||
array.GetPortalControl().Set(0, Traits::ZeroInitialization());
|
||||
array.WritePortal().Set(0, Traits::ZeroInitialization());
|
||||
}
|
||||
|
||||
template <typename ArrayType>
|
||||
@ -292,9 +292,9 @@ void CellSetExplicit<SST, CST, OST>::AddCell(vtkm::UInt8 cellType,
|
||||
"Connectivity increased past estimated maximum connectivity.");
|
||||
}
|
||||
|
||||
auto shapes = this->Data->CellPointIds.Shapes.GetPortalControl();
|
||||
auto conn = this->Data->CellPointIds.Connectivity.GetPortalControl();
|
||||
auto offsets = this->Data->CellPointIds.Offsets.GetPortalControl();
|
||||
auto shapes = this->Data->CellPointIds.Shapes.WritePortal();
|
||||
auto conn = this->Data->CellPointIds.Connectivity.WritePortal();
|
||||
auto offsets = this->Data->CellPointIds.Offsets.WritePortal();
|
||||
|
||||
shapes.Set(this->Data->NumberOfCellsAdded, cellType);
|
||||
for (vtkm::IdComponent iVec = 0; iVec < numVertices; ++iVec)
|
||||
|
@ -352,18 +352,17 @@ public:
|
||||
vtkm::IdComponent GetNumberOfPointsInCell(vtkm::Id cellIndex) const override
|
||||
{
|
||||
return this->FullCellSet.GetNumberOfPointsInCell(
|
||||
this->ValidCellIds.GetPortalConstControl().Get(cellIndex));
|
||||
this->ValidCellIds.ReadPortal().Get(cellIndex));
|
||||
}
|
||||
|
||||
vtkm::UInt8 GetCellShape(vtkm::Id id) const override
|
||||
{
|
||||
return this->FullCellSet.GetCellShape(this->ValidCellIds.GetPortalConstControl().Get(id));
|
||||
return this->FullCellSet.GetCellShape(this->ValidCellIds.ReadPortal().Get(id));
|
||||
}
|
||||
|
||||
void GetCellPointIds(vtkm::Id id, vtkm::Id* ptids) const override
|
||||
{
|
||||
return this->FullCellSet.GetCellPointIds(this->ValidCellIds.GetPortalConstControl().Get(id),
|
||||
ptids);
|
||||
return this->FullCellSet.GetCellPointIds(this->ValidCellIds.ReadPortal().Get(id), ptids);
|
||||
}
|
||||
|
||||
std::shared_ptr<CellSet> NewInstance() const override
|
||||
|
@ -144,7 +144,7 @@ public:
|
||||
"Inconsistent number of points in cells for CellSetSingleType.");
|
||||
}
|
||||
}
|
||||
auto conn = this->Data->CellPointIds.Connectivity.GetPortalControl();
|
||||
auto conn = this->Data->CellPointIds.Connectivity.WritePortal();
|
||||
for (vtkm::IdComponent iVert = 0; iVert < numVertices; ++iVert)
|
||||
{
|
||||
conn.Set(this->Data->ConnectivityAdded + iVert, Traits::GetComponent(ids, iVert));
|
||||
|
@ -230,7 +230,7 @@ inline vtkm::cont::ArrayHandle<T> buildSampleHandle(vtkm::Int32 numSamples,
|
||||
vtkm::cont::ArrayHandle<T> handle;
|
||||
handle.Allocate(allocationSize);
|
||||
|
||||
auto portal = handle.GetPortalControl();
|
||||
auto portal = handle.WritePortal();
|
||||
vtkm::Id index = 0;
|
||||
|
||||
//Insert the below range first
|
||||
|
@ -71,9 +71,9 @@ public:
|
||||
{
|
||||
vtkm::cont::ArrayHandle<T> yvals, zvals;
|
||||
yvals.Allocate(1);
|
||||
yvals.GetPortalControl().Set(0, 0.0);
|
||||
yvals.WritePortal().Set(0, 0.0);
|
||||
zvals.Allocate(1);
|
||||
zvals.GetPortalControl().Set(0, 0.0);
|
||||
zvals.WritePortal().Set(0, 0.0);
|
||||
return DataSetBuilderRectilinear::BuildDataSet(xvals, yvals, zvals, coordNm);
|
||||
}
|
||||
|
||||
@ -105,7 +105,7 @@ public:
|
||||
{
|
||||
vtkm::cont::ArrayHandle<T> zvals;
|
||||
zvals.Allocate(1);
|
||||
zvals.GetPortalControl().Set(0, 0.0);
|
||||
zvals.WritePortal().Set(0, 0.0);
|
||||
return DataSetBuilderRectilinear::BuildDataSet(xvals, yvals, zvals, coordNm);
|
||||
}
|
||||
|
||||
|
@ -94,7 +94,7 @@ public:
|
||||
const vtkm::Id length = this->Range.GetNumberOfValues();
|
||||
for (vtkm::Id i = 0; i < length; ++i)
|
||||
{
|
||||
range[i] = this->Range.GetPortalConstControl().Get(i);
|
||||
range[i] = this->Range.ReadPortal().Get(i);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -68,7 +68,7 @@ VTKM_CONT vtkm::cont::ArrayHandle<vtkm::Range> FieldRangeComputeImpl(
|
||||
result.resize(
|
||||
std::max(result.size(), static_cast<size_t>(partition_range.GetNumberOfValues())));
|
||||
|
||||
auto portal = partition_range.GetPortalConstControl();
|
||||
auto portal = partition_range.ReadPortal();
|
||||
std::transform(vtkm::cont::ArrayPortalToIteratorBegin(portal),
|
||||
vtkm::cont::ArrayPortalToIteratorEnd(portal),
|
||||
result.begin(),
|
||||
|
@ -54,8 +54,8 @@ vtkm::cont::ArrayHandle<vtkm::Range> MergeRangesGlobal(
|
||||
}
|
||||
|
||||
std::vector<vtkm::Range> v_ranges(static_cast<size_t>(ranges.GetNumberOfValues()));
|
||||
std::copy(vtkm::cont::ArrayPortalToIteratorBegin(ranges.GetPortalConstControl()),
|
||||
vtkm::cont::ArrayPortalToIteratorEnd(ranges.GetPortalConstControl()),
|
||||
std::copy(vtkm::cont::ArrayPortalToIteratorBegin(ranges.ReadPortal()),
|
||||
vtkm::cont::ArrayPortalToIteratorEnd(ranges.ReadPortal()),
|
||||
v_ranges.begin());
|
||||
|
||||
using VectorOfRangesT = std::vector<vtkm::Range>;
|
||||
|
@ -98,8 +98,7 @@ class VTKM_ALWAYS_EXPORT Storage<T, internal::StorageTagExtrudePlane>
|
||||
public:
|
||||
using ValueType = T;
|
||||
|
||||
using PortalConstType =
|
||||
vtkm::exec::ArrayPortalExtrudePlane<typename HandleType::PortalConstControl>;
|
||||
using PortalConstType = vtkm::exec::ArrayPortalExtrudePlane<typename HandleType::ReadPortalType>;
|
||||
|
||||
// Note that this array is read only, so you really should only be getting the const
|
||||
// version of the portal. If you actually try to write to this portal, you will
|
||||
@ -126,7 +125,7 @@ public:
|
||||
|
||||
PortalConstType GetPortalConst() const
|
||||
{
|
||||
return PortalConstType(this->Array.GetPortalConstControl(), this->NumberOfPlanes);
|
||||
return PortalConstType(this->Array.ReadPortal(), this->NumberOfPlanes);
|
||||
}
|
||||
|
||||
vtkm::Id GetNumberOfValues() const
|
||||
@ -377,7 +376,7 @@ class Storage<T, internal::StorageTagExtrude>
|
||||
{
|
||||
using BaseT = typename VecTraits<T>::BaseComponentType;
|
||||
using HandleType = vtkm::cont::ArrayHandle<BaseT>;
|
||||
using TPortalType = typename HandleType::PortalConstControl;
|
||||
using TPortalType = typename HandleType::ReadPortalType;
|
||||
|
||||
public:
|
||||
using ValueType = T;
|
||||
@ -421,7 +420,7 @@ public:
|
||||
PortalConstType GetPortalConst() const
|
||||
{
|
||||
VTKM_ASSERT(this->Array.GetNumberOfValues() >= 0);
|
||||
return PortalConstType(this->Array.GetPortalConstControl(),
|
||||
return PortalConstType(this->Array.ReadPortal(),
|
||||
static_cast<vtkm::Int32>(this->Array.GetNumberOfValues()),
|
||||
this->NumberOfPlanes,
|
||||
this->UseCylindrical);
|
||||
|
@ -145,7 +145,7 @@ const vtkm::internal::PortalVirtualBase* StorageVirtual::PrepareForInPlace(
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
const vtkm::internal::PortalVirtualBase* StorageVirtual::GetPortalControl()
|
||||
const vtkm::internal::PortalVirtualBase* StorageVirtual::WritePortal()
|
||||
{
|
||||
if (!this->HostUpToDate)
|
||||
{
|
||||
@ -160,7 +160,7 @@ const vtkm::internal::PortalVirtualBase* StorageVirtual::GetPortalControl()
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
const vtkm::internal::PortalVirtualBase* StorageVirtual::GetPortalConstControl() const
|
||||
const vtkm::internal::PortalVirtualBase* StorageVirtual::ReadPortal() const
|
||||
{
|
||||
if (!this->HostUpToDate)
|
||||
{
|
||||
|
@ -122,11 +122,11 @@ public:
|
||||
|
||||
//This needs to cause a host side sync!
|
||||
//This needs to work before we execute on a device
|
||||
const vtkm::internal::PortalVirtualBase* GetPortalControl();
|
||||
const vtkm::internal::PortalVirtualBase* WritePortal();
|
||||
|
||||
//This needs to cause a host side sync!
|
||||
//This needs to work before we execute on a device
|
||||
const vtkm::internal::PortalVirtualBase* GetPortalConstControl() const;
|
||||
const vtkm::internal::PortalVirtualBase* ReadPortal() const;
|
||||
|
||||
/// Returns the DeviceAdapterId for the current device. If there is no device
|
||||
/// with an up-to-date copy of the data, VTKM_DEVICE_ADAPTER_UNDEFINED is
|
||||
@ -249,14 +249,14 @@ public:
|
||||
PortalType GetPortal()
|
||||
{
|
||||
return make_ArrayPortalRef(
|
||||
static_cast<const vtkm::ArrayPortalVirtual<T>*>(this->VirtualStorage->GetPortalControl()),
|
||||
static_cast<const vtkm::ArrayPortalVirtual<T>*>(this->VirtualStorage->WritePortal()),
|
||||
this->GetNumberOfValues());
|
||||
}
|
||||
|
||||
PortalConstType GetPortalConst() const
|
||||
{
|
||||
return make_ArrayPortalRef(static_cast<const vtkm::ArrayPortalVirtual<T>*>(
|
||||
this->VirtualStorage->GetPortalConstControl()),
|
||||
return make_ArrayPortalRef(
|
||||
static_cast<const vtkm::ArrayPortalVirtual<T>*>(this->VirtualStorage->ReadPortal()),
|
||||
this->GetNumberOfValues());
|
||||
}
|
||||
|
||||
|
@ -180,7 +180,7 @@ template <typename T, typename S>
|
||||
void StorageVirtualImpl<T, S>::ControlPortalForInput(
|
||||
vtkm::cont::internal::TransferInfoArray& payload) const
|
||||
{
|
||||
auto portal = this->Handle.GetPortalConstControl();
|
||||
auto portal = this->Handle.ReadPortal();
|
||||
using DerivedPortal = vtkm::ArrayPortalWrapper<decltype(portal)>;
|
||||
vtkm::cont::make_hostPortal<DerivedPortal>(payload, portal);
|
||||
}
|
||||
@ -190,7 +190,7 @@ inline void make_writableHostPortal(std::true_type,
|
||||
vtkm::cont::internal::TransferInfoArray& payload,
|
||||
HandleType& handle)
|
||||
{
|
||||
auto portal = handle.GetPortalControl();
|
||||
auto portal = handle.WritePortal();
|
||||
using DerivedPortal = vtkm::ArrayPortalWrapper<decltype(portal)>;
|
||||
vtkm::cont::make_hostPortal<DerivedPortal>(payload, portal);
|
||||
}
|
||||
|
@ -64,7 +64,7 @@ struct TryArrayInOutType
|
||||
vtkm::cont::DeviceAdapterAlgorithm<Device>::Schedule(kernel, ARRAY_SIZE);
|
||||
token.DetachFromAll();
|
||||
|
||||
typename ArrayHandleType::PortalConstControl portal = handle.GetPortalConstControl();
|
||||
typename ArrayHandleType::ReadPortalType portal = handle.ReadPortal();
|
||||
VTKM_TEST_ASSERT(portal.GetNumberOfValues() == ARRAY_SIZE,
|
||||
"Portal has wrong number of values.");
|
||||
for (vtkm::Id index = 0; index < ARRAY_SIZE; index++)
|
||||
|
@ -62,7 +62,7 @@ struct TryArrayOutType
|
||||
vtkm::cont::DeviceAdapterAlgorithm<Device>::Schedule(kernel, ARRAY_SIZE);
|
||||
token.DetachFromAll();
|
||||
|
||||
CheckPortal(handle.GetPortalConstControl());
|
||||
CheckPortal(handle.ReadPortal());
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -132,7 +132,7 @@ struct TryWholeArrayType
|
||||
vtkm::cont::DeviceAdapterAlgorithm<Device>::Schedule(outKernel, ARRAY_SIZE);
|
||||
token.DetachFromAll();
|
||||
|
||||
CheckPortal(array.GetPortalConstControl());
|
||||
CheckPortal(array.ReadPortal());
|
||||
|
||||
std::cout << "Check Transport WholeArrayIn" << std::endl;
|
||||
TestInKernel<typename InTransportType::ExecObjectType> inKernel;
|
||||
@ -152,7 +152,7 @@ struct TryWholeArrayType
|
||||
for (vtkm::Id index = 0; index < ARRAY_SIZE; index++)
|
||||
{
|
||||
T expectedValue = TestValue(index, T()) + T(OFFSET);
|
||||
T retrievedValue = array.GetPortalConstControl().Get(index);
|
||||
T retrievedValue = array.ReadPortal().Get(index);
|
||||
VTKM_TEST_ASSERT(test_equal(expectedValue, retrievedValue),
|
||||
"In/Out array not set correctly.");
|
||||
}
|
||||
@ -172,7 +172,7 @@ struct TryAtomicArrayType
|
||||
|
||||
ArrayHandleType array;
|
||||
array.Allocate(1);
|
||||
array.GetPortalControl().Set(0, 0);
|
||||
array.WritePortal().Set(0, 0);
|
||||
|
||||
vtkm::cont::Token token;
|
||||
|
||||
@ -183,7 +183,7 @@ struct TryAtomicArrayType
|
||||
vtkm::cont::DeviceAdapterAlgorithm<Device>::Schedule(kernel, ARRAY_SIZE);
|
||||
token.DetachFromAll();
|
||||
|
||||
T result = array.GetPortalConstControl().Get(0);
|
||||
T result = array.ReadPortal().Get(0);
|
||||
VTKM_TEST_ASSERT(result == ((ARRAY_SIZE - 1) * ARRAY_SIZE) / 2,
|
||||
"Got wrong summation in atomic array.");
|
||||
}
|
||||
|
@ -41,7 +41,7 @@ struct TryArraysOfType
|
||||
"Composite array type check failed.");
|
||||
|
||||
// Just some type that is not a valid array.
|
||||
using NotAnArray = typename StandardArray::PortalControl;
|
||||
using NotAnArray = typename StandardArray::WritePortalType;
|
||||
VTKM_TEST_ASSERT(!(TypeCheck<TypeCheckTagArray, NotAnArray>::value),
|
||||
"Not an array type check failed.");
|
||||
|
||||
|
@ -144,7 +144,7 @@ void RunEdgeCases()
|
||||
dispatcher.SetDevice(Device());
|
||||
dispatcher.Invoke(bad, sane, result);
|
||||
|
||||
auto portal = result.GetPortalConstControl();
|
||||
auto portal = result.ReadPortal();
|
||||
|
||||
//the first 6 values should be nan
|
||||
VTKM_TEST_ASSERT(vtkm::IsNan(portal.Get(0)), "Value should be NaN.");
|
||||
|
@ -209,7 +209,7 @@ void TestRoundTrip(bool managed)
|
||||
|
||||
try
|
||||
{
|
||||
handle.GetPortalControl();
|
||||
handle.WritePortal();
|
||||
}
|
||||
catch (vtkm::cont::ErrorBadValue&)
|
||||
{
|
||||
|
@ -379,7 +379,7 @@ void ArrayHandleImpl::WaitToRead(LockType& lock, const vtkm::cont::Token& token)
|
||||
{
|
||||
// Note that if you deadlocked here, that means that you are trying to do a read operation on an
|
||||
// array where an object is writing to it. This could happen on the same thread. For example, if
|
||||
// you call `GetPortalControl()` then no other operation that can result in reading or writing
|
||||
// you call `WritePortal()` then no other operation that can result in reading or writing
|
||||
// data in the array can happen while the resulting portal is still in scope.
|
||||
this->Internals->ConditionVariable.wait(
|
||||
lock, [&lock, &token, this] { return this->CanRead(lock, token); });
|
||||
@ -389,7 +389,7 @@ void ArrayHandleImpl::WaitToWrite(LockType& lock, const vtkm::cont::Token& token
|
||||
{
|
||||
// Note that if you deadlocked here, that means that you are trying to do a write operation on an
|
||||
// array where an object is reading or writing to it. This could happen on the same thread. For
|
||||
// example, if you call `GetPortalControl()` then no other operation that can result in reading
|
||||
// example, if you call `WritePortal()` then no other operation that can result in reading
|
||||
// or writing data in the array can happen while the resulting portal is still in scope.
|
||||
this->Internals->ConditionVariable.wait(
|
||||
lock, [&lock, &token, this] { return this->CanWrite(lock, token); });
|
||||
|
@ -31,31 +31,47 @@ namespace internal
|
||||
///
|
||||
/// Because `Token`s only work in the control environment, so it is for this class.
|
||||
///
|
||||
template <typename PortalType>
|
||||
class VTKM_ALWAYS_EXPORT ArrayPortalToken : public PortalType
|
||||
template <typename PortalType_>
|
||||
class VTKM_ALWAYS_EXPORT ArrayPortalToken : public PortalType_
|
||||
{
|
||||
std::shared_ptr<vtkm::cont::Token> Token;
|
||||
|
||||
using Superclass = PortalType_;
|
||||
|
||||
public:
|
||||
template <typename... PortalArgs>
|
||||
VTKM_CONT ArrayPortalToken(vtkm::cont::Token&& token, PortalArgs&... args)
|
||||
: PortalType(std::forward<PortalArgs>(args)...)
|
||||
VTKM_CONT ArrayPortalToken(vtkm::cont::Token&& token, PortalArgs&&... args)
|
||||
: Superclass(std::forward<PortalArgs>(args)...)
|
||||
, Token(new vtkm::cont::Token(std::move(token)))
|
||||
{
|
||||
}
|
||||
|
||||
template <typename... PortalArgs>
|
||||
VTKM_CONT ArrayPortalToken(PortalArgs&... args)
|
||||
: PortalType(std::forward<PortalArgs>(args)...)
|
||||
VTKM_CONT ArrayPortalToken(std::shared_ptr<vtkm::cont::Token> token, PortalArgs&&... args)
|
||||
: Superclass(std::forward<PortalArgs>(args)...)
|
||||
, Token(token)
|
||||
{
|
||||
}
|
||||
|
||||
template <typename... PortalArgs>
|
||||
VTKM_CONT ArrayPortalToken(PortalArgs&&... args)
|
||||
: Superclass(std::forward<PortalArgs>(args)...)
|
||||
, Token(new vtkm::cont::Token)
|
||||
{
|
||||
}
|
||||
|
||||
VTKM_CONT void Detach() const
|
||||
{
|
||||
this->Token.DetachFromAll();
|
||||
this->Portal = PortalType();
|
||||
}
|
||||
/// \brief Detach this portal from the `ArrayHandle`.
|
||||
///
|
||||
/// This will open up the `ArrayHandle` for reading and/or writing.
|
||||
///
|
||||
VTKM_CONT void Detach() { this->Token->DetachFromAll(); }
|
||||
|
||||
/// \brief Get the `Token` of the `ArrayPortal`.
|
||||
///
|
||||
/// You can keep a copy of this shared pointer to keep the scope around longer than this
|
||||
/// object exists (unless, of course, the `Token` is explicitly detached).
|
||||
///
|
||||
VTKM_CONT std::shared_ptr<vtkm::cont::Token> GetToken() const { return this->Token; }
|
||||
};
|
||||
}
|
||||
}
|
||||
|
@ -114,7 +114,7 @@ private:
|
||||
DerivedAlgorithm::Schedule(kernel, 1);
|
||||
}
|
||||
|
||||
return output.GetPortalConstControl().Get(0);
|
||||
return output.ReadPortal().Get(0);
|
||||
}
|
||||
|
||||
public:
|
||||
@ -748,7 +748,7 @@ public:
|
||||
if (numValues <= 0)
|
||||
{
|
||||
output.Allocate(1);
|
||||
output.GetPortalControl().Set(0, initialValue);
|
||||
output.WritePortal().Set(0, initialValue);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -808,7 +808,7 @@ public:
|
||||
else if (numberOfKeys == 1)
|
||||
{
|
||||
output.Allocate(1);
|
||||
output.GetPortalControl().Set(0, initialValue);
|
||||
output.WritePortal().Set(0, initialValue);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -122,7 +122,7 @@ private:
|
||||
{
|
||||
return (this->Array.GetNumberOfValues() == 0)
|
||||
? 0
|
||||
: vtkm::VecTraits<T>::GetNumberOfComponents(this->Array.GetPortalConstControl().Get(0));
|
||||
: vtkm::VecTraits<T>::GetNumberOfComponents(this->Array.ReadPortal().Get(0));
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -1509,7 +1509,7 @@ inline vtkm::cont::DataSet MakeTestDataSet::Make3DExplicitDataSetCowNose()
|
||||
|
||||
for (vtkm::Id i = 0; i < connectivitySize; ++i)
|
||||
{
|
||||
connectivity.GetPortalControl().Set(i, pointId[i]);
|
||||
connectivity.WritePortal().Set(i, pointId[i]);
|
||||
}
|
||||
vtkm::cont::CellSetSingleType<> cellSet;
|
||||
cellSet.Fill(nVerts, vtkm::CELL_SHAPE_TRIANGLE, 3, connectivity);
|
||||
@ -1522,11 +1522,11 @@ inline vtkm::cont::DataSet MakeTestDataSet::Make3DExplicitDataSetCowNose()
|
||||
|
||||
vtkm::cont::ArrayHandle<vtkm::Vec3f> pointvec;
|
||||
pointvec.Allocate(nVerts);
|
||||
SetPortal(pointvec.GetPortalControl());
|
||||
SetPortal(pointvec.WritePortal());
|
||||
|
||||
vtkm::cont::ArrayHandle<vtkm::Vec3f> cellvec;
|
||||
cellvec.Allocate(connectivitySize / 3);
|
||||
SetPortal(cellvec.GetPortalControl());
|
||||
SetPortal(cellvec.WritePortal());
|
||||
|
||||
vtkm::cont::DataSetFieldAdd dsf;
|
||||
dsf.AddPointField(dataSet, "pointvar", pointvar);
|
||||
|
@ -178,8 +178,8 @@ struct TestEqualArrayHandle
|
||||
result.PushMessage("sizes don't match");
|
||||
return;
|
||||
}
|
||||
auto portal1 = array1.GetPortalConstControl();
|
||||
auto portal2 = array2.GetPortalConstControl();
|
||||
auto portal1 = array1.ReadPortal();
|
||||
auto portal2 = array2.ReadPortal();
|
||||
for (vtkm::Id i = 0; i < portal1.GetNumberOfValues(); ++i)
|
||||
{
|
||||
if (!test_equal(portal1.Get(i), portal2.Get(i)))
|
||||
|
@ -45,14 +45,12 @@ class TestingArrayHandleMultiplexer
|
||||
using T = typename std::remove_reference<decltype(multiplexerArray)>::type::ValueType;
|
||||
|
||||
vtkm::cont::printSummary_ArrayHandle(multiplexerArray, std::cout);
|
||||
VTKM_TEST_ASSERT(test_equal_portals(multiplexerArray.GetPortalConstControl(),
|
||||
expectedArray.GetPortalConstControl()),
|
||||
VTKM_TEST_ASSERT(test_equal_portals(multiplexerArray.ReadPortal(), expectedArray.ReadPortal()),
|
||||
"Multiplexer array gave wrong result in control environment");
|
||||
|
||||
vtkm::cont::ArrayHandle<T> copy;
|
||||
vtkm::cont::ArrayCopy(multiplexerArray, copy);
|
||||
VTKM_TEST_ASSERT(
|
||||
test_equal_portals(copy.GetPortalConstControl(), expectedArray.GetPortalConstControl()),
|
||||
VTKM_TEST_ASSERT(test_equal_portals(copy.ReadPortal(), expectedArray.ReadPortal()),
|
||||
"Multiplexer did not copy correctly in execution environment");
|
||||
}
|
||||
|
||||
|
@ -60,7 +60,7 @@ inline void TestVirtualAccess(const vtkm::cont::ArrayHandle<T, S>& in,
|
||||
vtkm::worklet::DispatcherMapField<CopyWorklet>().Invoke(
|
||||
vtkm::cont::ArrayHandleVirtualCoordinates(in), vtkm::cont::ArrayHandleVirtualCoordinates(out));
|
||||
|
||||
VTKM_TEST_ASSERT(test_equal_portals(in.GetPortalConstControl(), out.GetPortalConstControl()),
|
||||
VTKM_TEST_ASSERT(test_equal_portals(in.ReadPortal(), out.ReadPortal()),
|
||||
"Input and output portals don't match");
|
||||
}
|
||||
|
||||
@ -90,7 +90,7 @@ private:
|
||||
a1.Allocate(length);
|
||||
for (vtkm::Id i = 0; i < length; ++i)
|
||||
{
|
||||
a1.GetPortalControl().Set(i, TestValue(i, PointType()));
|
||||
a1.WritePortal().Set(i, TestValue(i, PointType()));
|
||||
}
|
||||
TestVirtualAccess(a1, out);
|
||||
|
||||
@ -105,10 +105,10 @@ private:
|
||||
c3.Allocate(length);
|
||||
for (vtkm::Id i = 0; i < length; ++i)
|
||||
{
|
||||
auto p = a1.GetPortalConstControl().Get(i);
|
||||
c1.GetPortalControl().Set(i, p[0]);
|
||||
c2.GetPortalControl().Set(i, p[1]);
|
||||
c3.GetPortalControl().Set(i, p[2]);
|
||||
auto p = a1.ReadPortal().Get(i);
|
||||
c1.WritePortal().Set(i, p[0]);
|
||||
c2.WritePortal().Set(i, p[1]);
|
||||
c3.WritePortal().Set(i, p[2]);
|
||||
}
|
||||
TestVirtualAccess(vtkm::cont::make_ArrayHandleCartesianProduct(c1, c2, c3), out);
|
||||
|
||||
|
@ -55,7 +55,7 @@ void CheckValues(IteratorType begin, IteratorType end, T)
|
||||
template <typename T>
|
||||
void CheckArray(const vtkm::cont::ArrayHandle<T>& handle)
|
||||
{
|
||||
CheckPortal(handle.GetPortalConstControl());
|
||||
CheckPortal(handle.ReadPortal());
|
||||
}
|
||||
}
|
||||
|
||||
@ -139,7 +139,7 @@ private:
|
||||
VTKM_TEST_ASSERT(arrayHandle.GetNumberOfValues() == 0,
|
||||
"Uninitialized array does not report zero values.");
|
||||
arrayHandle = vtkm::cont::ArrayHandle<T>();
|
||||
VTKM_TEST_ASSERT(arrayHandle.GetPortalConstControl().GetNumberOfValues() == 0,
|
||||
VTKM_TEST_ASSERT(arrayHandle.ReadPortal().GetNumberOfValues() == 0,
|
||||
"Uninitialized array does not give portal with zero values.");
|
||||
vtkm::cont::Token token;
|
||||
arrayHandle = vtkm::cont::ArrayHandle<T>();
|
||||
@ -226,7 +226,7 @@ private:
|
||||
vtkm::cont::Token token;
|
||||
arrayHandle.PrepareForOutput(ARRAY_SIZE * 2, DeviceAdapterTag(), token);
|
||||
token.DetachFromAll();
|
||||
arrayHandle.GetPortalControl();
|
||||
arrayHandle.WritePortal();
|
||||
}
|
||||
catch (vtkm::cont::Error&)
|
||||
{
|
||||
@ -313,7 +313,7 @@ private:
|
||||
vtkm::cont::Token token;
|
||||
arrayHandle.PrepareForOutput(ARRAY_SIZE * 2, DeviceAdapterTag(), token);
|
||||
token.DetachFromAll();
|
||||
arrayHandle.GetPortalControl();
|
||||
arrayHandle.WritePortal();
|
||||
}
|
||||
catch (vtkm::cont::Error&)
|
||||
{
|
||||
@ -377,8 +377,7 @@ private:
|
||||
InplaceFunctor<T, ExecutionPortalType> functor(executionPortal);
|
||||
Algorithm::Schedule(functor, ARRAY_SIZE * 2);
|
||||
}
|
||||
typename vtkm::cont::ArrayHandle<T>::PortalConstControl controlPortal =
|
||||
arrayHandle.GetPortalConstControl();
|
||||
typename vtkm::cont::ArrayHandle<T>::ReadPortalType controlPortal = arrayHandle.ReadPortal();
|
||||
for (vtkm::Id index = 0; index < ARRAY_SIZE; index++)
|
||||
{
|
||||
VTKM_TEST_ASSERT(test_equal(controlPortal.Get(index), TestValue(index, T()) + T(1)),
|
||||
@ -411,7 +410,7 @@ private:
|
||||
VTKM_TEST_ASSERT(a1 == a2, "Shallow copied array not equal.");
|
||||
VTKM_TEST_ASSERT(!(a1 != a2), "Shallow copied array not equal.");
|
||||
|
||||
a1.GetPortalConstControl();
|
||||
a1.ReadPortal();
|
||||
VTKM_TEST_ASSERT(a1 == a2, "Shallow copied array not equal.");
|
||||
VTKM_TEST_ASSERT(!(a1 != a2), "Shallow copied array not equal.");
|
||||
|
||||
|
@ -135,7 +135,7 @@ struct TestingBitField
|
||||
{
|
||||
BitField field;
|
||||
field.Allocate(numBits);
|
||||
auto portal = field.GetPortalControl();
|
||||
auto portal = field.WritePortal();
|
||||
for (vtkm::Id i = 0; i < numBits; ++i)
|
||||
{
|
||||
portal.SetBit(i, RandomBitFromIndex(i));
|
||||
@ -166,8 +166,8 @@ struct TestingBitField
|
||||
"memory.");
|
||||
}
|
||||
|
||||
template <typename PortalType, typename PortalConstType>
|
||||
VTKM_EXEC_CONT static bool HelpTestBit(vtkm::Id i, PortalType portal, PortalConstType portalConst)
|
||||
template <typename PortalType>
|
||||
VTKM_EXEC_CONT static bool HelpTestBit(vtkm::Id i, PortalType portal)
|
||||
{
|
||||
const auto origBit = RandomBitFromIndex(i);
|
||||
auto bit = origBit;
|
||||
@ -177,9 +177,7 @@ struct TestingBitField
|
||||
auto testValues = [&](const char* op) -> bool {
|
||||
auto expected = bit;
|
||||
auto result = portal.GetBitAtomic(i);
|
||||
auto resultConst = portalConst.GetBitAtomic(i);
|
||||
DEVICE_ASSERT_MSG(result == expected, op);
|
||||
DEVICE_ASSERT_MSG(resultConst == expected, op);
|
||||
|
||||
// Reset:
|
||||
bit = origBit;
|
||||
@ -211,19 +209,15 @@ struct TestingBitField
|
||||
bool casResult = portal.CompareAndSwapBitAtomic(i, bit, notBit);
|
||||
DEVICE_ASSERT(casResult == bit);
|
||||
DEVICE_ASSERT(portal.GetBit(i) == bit);
|
||||
DEVICE_ASSERT(portalConst.GetBit(i) == bit);
|
||||
casResult = portal.CompareAndSwapBitAtomic(i, notBit, bit);
|
||||
DEVICE_ASSERT(casResult == bit);
|
||||
DEVICE_ASSERT(portal.GetBit(i) == notBit);
|
||||
DEVICE_ASSERT(portalConst.GetBit(i) == notBit);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
template <typename WordType, typename PortalType, typename PortalConstType>
|
||||
VTKM_EXEC_CONT static bool HelpTestWord(vtkm::Id i,
|
||||
PortalType portal,
|
||||
PortalConstType portalConst)
|
||||
template <typename WordType, typename PortalType>
|
||||
VTKM_EXEC_CONT static bool HelpTestWord(vtkm::Id i, PortalType portal)
|
||||
{
|
||||
const auto origWord = RandomWordFromIndex<WordType>(i);
|
||||
auto word = origWord;
|
||||
@ -233,9 +227,7 @@ struct TestingBitField
|
||||
auto testValues = [&](const char* op) -> bool {
|
||||
auto expected = word;
|
||||
auto result = portal.template GetWordAtomic<WordType>(i);
|
||||
auto resultConst = portalConst.template GetWordAtomic<WordType>(i);
|
||||
DEVICE_ASSERT_MSG(result == expected, op);
|
||||
DEVICE_ASSERT_MSG(resultConst == expected, op);
|
||||
|
||||
// Reset:
|
||||
word = origWord;
|
||||
@ -273,25 +265,21 @@ struct TestingBitField
|
||||
auto casResult = portal.CompareAndSwapWordAtomic(i, word, notWord);
|
||||
DEVICE_ASSERT(casResult == word);
|
||||
DEVICE_ASSERT(portal.template GetWord<WordType>(i) == word);
|
||||
DEVICE_ASSERT(portalConst.template GetWord<WordType>(i) == word);
|
||||
casResult = portal.CompareAndSwapWordAtomic(i, notWord, word);
|
||||
DEVICE_ASSERT(casResult == word);
|
||||
DEVICE_ASSERT(portal.template GetWord<WordType>(i) == notWord);
|
||||
DEVICE_ASSERT(portalConst.template GetWord<WordType>(i) == notWord);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
template <typename PortalType, typename PortalConstType>
|
||||
template <typename PortalType>
|
||||
struct HelpTestWordOpsControl
|
||||
{
|
||||
PortalType Portal;
|
||||
PortalConstType PortalConst;
|
||||
|
||||
VTKM_CONT
|
||||
HelpTestWordOpsControl(PortalType portal, PortalConstType portalConst)
|
||||
HelpTestWordOpsControl(PortalType portal)
|
||||
: Portal(portal)
|
||||
, PortalConst(portalConst)
|
||||
{
|
||||
}
|
||||
|
||||
@ -299,16 +287,15 @@ struct TestingBitField
|
||||
VTKM_CONT void operator()(WordType)
|
||||
{
|
||||
const auto numWords = this->Portal.template GetNumberOfWords<WordType>();
|
||||
VTKM_TEST_ASSERT(numWords == this->PortalConst.template GetNumberOfWords<WordType>());
|
||||
for (vtkm::Id i = 0; i < numWords; ++i)
|
||||
{
|
||||
VTKM_TEST_ASSERT(HelpTestWord<WordType>(i, this->Portal, this->PortalConst));
|
||||
VTKM_TEST_ASSERT(HelpTestWord<WordType>(i, this->Portal));
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
template <typename Portal, typename PortalConst>
|
||||
VTKM_CONT static void HelpTestPortalsControl(Portal portal, PortalConst portalConst)
|
||||
template <typename Portal>
|
||||
VTKM_CONT static void HelpTestPortalsControl(Portal portal)
|
||||
{
|
||||
const auto numWords8 = (NUM_BITS + 7) / 8;
|
||||
const auto numWords16 = (NUM_BITS + 15) / 16;
|
||||
@ -320,18 +307,13 @@ struct TestingBitField
|
||||
VTKM_TEST_ASSERT(portal.template GetNumberOfWords<vtkm::UInt16>() == numWords16);
|
||||
VTKM_TEST_ASSERT(portal.template GetNumberOfWords<vtkm::UInt32>() == numWords32);
|
||||
VTKM_TEST_ASSERT(portal.template GetNumberOfWords<vtkm::UInt64>() == numWords64);
|
||||
VTKM_TEST_ASSERT(portalConst.GetNumberOfBits() == NUM_BITS);
|
||||
VTKM_TEST_ASSERT(portalConst.template GetNumberOfWords<vtkm::UInt8>() == numWords8);
|
||||
VTKM_TEST_ASSERT(portalConst.template GetNumberOfWords<vtkm::UInt16>() == numWords16);
|
||||
VTKM_TEST_ASSERT(portalConst.template GetNumberOfWords<vtkm::UInt32>() == numWords32);
|
||||
VTKM_TEST_ASSERT(portalConst.template GetNumberOfWords<vtkm::UInt64>() == numWords64);
|
||||
|
||||
for (vtkm::Id i = 0; i < NUM_BITS; ++i)
|
||||
{
|
||||
HelpTestBit(i, portal, portalConst);
|
||||
HelpTestBit(i, portal);
|
||||
}
|
||||
|
||||
HelpTestWordOpsControl<Portal, PortalConst> test(portal, portalConst);
|
||||
HelpTestWordOpsControl<Portal> test(portal);
|
||||
vtkm::ListForEach(test, typename Portal::AtomicInterface::WordTypes{});
|
||||
}
|
||||
|
||||
@ -339,10 +321,8 @@ struct TestingBitField
|
||||
static void TestControlPortals()
|
||||
{
|
||||
auto field = RandomBitField();
|
||||
auto portal = field.GetPortalControl();
|
||||
auto portalConst = field.GetPortalConstControl();
|
||||
|
||||
HelpTestPortalsControl(portal, portalConst);
|
||||
HelpTestPortalsControl(field.WritePortal());
|
||||
}
|
||||
|
||||
template <typename Portal>
|
||||
@ -362,15 +342,13 @@ struct TestingBitField
|
||||
return true;
|
||||
}
|
||||
|
||||
template <typename WordType, typename PortalType, typename PortalConstType>
|
||||
template <typename WordType, typename PortalType>
|
||||
struct HelpTestPortalsExecutionWordsFunctor : vtkm::exec::FunctorBase
|
||||
{
|
||||
PortalType Portal;
|
||||
PortalConstType PortalConst;
|
||||
|
||||
HelpTestPortalsExecutionWordsFunctor(PortalType portal, PortalConstType portalConst)
|
||||
HelpTestPortalsExecutionWordsFunctor(PortalType portal)
|
||||
: Portal(portal)
|
||||
, PortalConst(portalConst)
|
||||
{
|
||||
}
|
||||
|
||||
@ -384,14 +362,9 @@ struct TestingBitField
|
||||
this->RaiseError("Testing Portal sanity failed.");
|
||||
return;
|
||||
}
|
||||
if (!HelpTestPortalSanityExecution(this->PortalConst))
|
||||
{
|
||||
this->RaiseError("Testing PortalConst sanity failed.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (!HelpTestWord<WordType>(i, this->Portal, this->PortalConst))
|
||||
if (!HelpTestWord<WordType>(i, this->Portal))
|
||||
{
|
||||
this->RaiseError("Testing word operations failed.");
|
||||
return;
|
||||
@ -399,22 +372,20 @@ struct TestingBitField
|
||||
}
|
||||
};
|
||||
|
||||
template <typename PortalType, typename PortalConstType>
|
||||
template <typename PortalType>
|
||||
struct HelpTestPortalsExecutionBitsFunctor : vtkm::exec::FunctorBase
|
||||
{
|
||||
PortalType Portal;
|
||||
PortalConstType PortalConst;
|
||||
|
||||
HelpTestPortalsExecutionBitsFunctor(PortalType portal, PortalConstType portalConst)
|
||||
HelpTestPortalsExecutionBitsFunctor(PortalType portal)
|
||||
: Portal(portal)
|
||||
, PortalConst(portalConst)
|
||||
{
|
||||
}
|
||||
|
||||
VTKM_EXEC_CONT
|
||||
void operator()(vtkm::Id i) const
|
||||
{
|
||||
if (!HelpTestBit(i, this->Portal, this->PortalConst))
|
||||
if (!HelpTestBit(i, this->Portal))
|
||||
{
|
||||
this->RaiseError("Testing bit operations failed.");
|
||||
return;
|
||||
@ -422,16 +393,14 @@ struct TestingBitField
|
||||
}
|
||||
};
|
||||
|
||||
template <typename PortalType, typename PortalConstType>
|
||||
template <typename PortalType>
|
||||
struct HelpTestWordOpsExecution
|
||||
{
|
||||
PortalType Portal;
|
||||
PortalConstType PortalConst;
|
||||
|
||||
VTKM_CONT
|
||||
HelpTestWordOpsExecution(PortalType portal, PortalConstType portalConst)
|
||||
HelpTestWordOpsExecution(PortalType portal)
|
||||
: Portal(portal)
|
||||
, PortalConst(portalConst)
|
||||
{
|
||||
}
|
||||
|
||||
@ -439,23 +408,21 @@ struct TestingBitField
|
||||
VTKM_CONT void operator()(WordType)
|
||||
{
|
||||
const auto numWords = this->Portal.template GetNumberOfWords<WordType>();
|
||||
VTKM_TEST_ASSERT(numWords == this->PortalConst.template GetNumberOfWords<WordType>());
|
||||
|
||||
using WordFunctor =
|
||||
HelpTestPortalsExecutionWordsFunctor<WordType, PortalType, PortalConstType>;
|
||||
WordFunctor test{ this->Portal, this->PortalConst };
|
||||
using WordFunctor = HelpTestPortalsExecutionWordsFunctor<WordType, PortalType>;
|
||||
WordFunctor test{ this->Portal };
|
||||
Algo::Schedule(test, numWords);
|
||||
}
|
||||
};
|
||||
|
||||
template <typename Portal, typename PortalConst>
|
||||
VTKM_CONT static void HelpTestPortalsExecution(Portal portal, PortalConst portalConst)
|
||||
template <typename Portal>
|
||||
VTKM_CONT static void HelpTestPortalsExecution(Portal portal)
|
||||
{
|
||||
HelpTestPortalsExecutionBitsFunctor<Portal, PortalConst> bitTest{ portal, portalConst };
|
||||
HelpTestPortalsExecutionBitsFunctor<Portal> bitTest{ portal };
|
||||
Algo::Schedule(bitTest, portal.GetNumberOfBits());
|
||||
|
||||
|
||||
HelpTestWordOpsExecution<Portal, PortalConst> test(portal, portalConst);
|
||||
HelpTestWordOpsExecution<Portal> test(portal);
|
||||
vtkm::ListForEach(test, typename Portal::AtomicInterface::WordTypes{});
|
||||
}
|
||||
|
||||
@ -465,9 +432,8 @@ struct TestingBitField
|
||||
vtkm::cont::Token token;
|
||||
auto field = RandomBitField();
|
||||
auto portal = field.PrepareForInPlace(DeviceAdapterTag{}, token);
|
||||
auto portalConst = field.PrepareForInput(DeviceAdapterTag{}, token);
|
||||
|
||||
HelpTestPortalsExecution(portal, portalConst);
|
||||
HelpTestPortalsExecution(portal);
|
||||
}
|
||||
|
||||
VTKM_CONT
|
||||
@ -476,7 +442,7 @@ struct TestingBitField
|
||||
auto testMask32 = [](vtkm::Id numBits, vtkm::UInt32 expectedMask) {
|
||||
vtkm::cont::BitField field;
|
||||
field.Allocate(numBits);
|
||||
auto mask = field.GetPortalConstControl().GetFinalWordMask<vtkm::UInt32>();
|
||||
auto mask = field.ReadPortal().GetFinalWordMask<vtkm::UInt32>();
|
||||
|
||||
VTKM_TEST_ASSERT(expectedMask == mask,
|
||||
"Unexpected mask for BitField size ",
|
||||
@ -491,7 +457,7 @@ struct TestingBitField
|
||||
auto testMask64 = [](vtkm::Id numBits, vtkm::UInt64 expectedMask) {
|
||||
vtkm::cont::BitField field;
|
||||
field.Allocate(numBits);
|
||||
auto mask = field.GetPortalConstControl().GetFinalWordMask<vtkm::UInt64>();
|
||||
auto mask = field.ReadPortal().GetFinalWordMask<vtkm::UInt64>();
|
||||
|
||||
VTKM_TEST_ASSERT(expectedMask == mask,
|
||||
"Unexpected mask for BitField size ",
|
||||
@ -602,10 +568,10 @@ struct TestingBitField
|
||||
vtkm::cont::Invoker invoke;
|
||||
invoke(ConditionalMergeWorklet{}, condArray, trueArray, falseArray, output);
|
||||
|
||||
auto condVals = condArray.GetPortalConstControl();
|
||||
auto trueVals = trueArray.GetPortalConstControl();
|
||||
auto falseVals = falseArray.GetPortalConstControl();
|
||||
auto outVals = output.GetPortalConstControl();
|
||||
auto condVals = condArray.ReadPortal();
|
||||
auto trueVals = trueArray.ReadPortal();
|
||||
auto falseVals = falseArray.ReadPortal();
|
||||
auto outVals = output.ReadPortal();
|
||||
|
||||
VTKM_TEST_ASSERT(condVals.GetNumberOfValues() == trueVals.GetNumberOfValues());
|
||||
VTKM_TEST_ASSERT(condVals.GetNumberOfValues() == falseVals.GetNumberOfValues());
|
||||
@ -628,10 +594,10 @@ struct TestingBitField
|
||||
vtkm::cont::Invoker invoke;
|
||||
invoke(ConditionalMergeWorklet2{}, condBits, trueArray, falseArray, output);
|
||||
|
||||
auto condVals = condBits.GetPortalConstControl();
|
||||
auto trueVals = trueArray.GetPortalConstControl();
|
||||
auto falseVals = falseArray.GetPortalConstControl();
|
||||
auto outVals = output.GetPortalConstControl();
|
||||
auto condVals = condBits.ReadPortal();
|
||||
auto trueVals = trueArray.ReadPortal();
|
||||
auto falseVals = falseArray.ReadPortal();
|
||||
auto outVals = output.ReadPortal();
|
||||
|
||||
VTKM_TEST_ASSERT(condVals.GetNumberOfBits() == trueVals.GetNumberOfValues());
|
||||
VTKM_TEST_ASSERT(condVals.GetNumberOfBits() == falseVals.GetNumberOfValues());
|
||||
|
@ -184,7 +184,7 @@ public:
|
||||
dispatcher.SetDevice(DeviceAdapter());
|
||||
dispatcher.Invoke(points, locator, cellIds, parametric, match);
|
||||
|
||||
auto matchPortal = match.GetPortalConstControl();
|
||||
auto matchPortal = match.ReadPortal();
|
||||
for (vtkm::Id index = 0; index < match.GetNumberOfValues(); index++)
|
||||
{
|
||||
VTKM_TEST_ASSERT(matchPortal.Get(index), "Points do not match");
|
||||
|
@ -95,7 +95,7 @@ vtkm::cont::DataSet MakeTestDataSet(const vtkm::Vec<vtkm::Id, DIMENSIONS>& dims)
|
||||
|
||||
// Warp the coordinates
|
||||
std::uniform_real_distribution<vtkm::FloatDefault> warpFactor(-0.10f, 0.10f);
|
||||
auto pointsPortal = points.GetPortalControl();
|
||||
auto pointsPortal = points.WritePortal();
|
||||
for (vtkm::Id i = 0; i < pointsPortal.GetNumberOfValues(); ++i)
|
||||
{
|
||||
PointType warpVec(0);
|
||||
@ -130,7 +130,7 @@ void GenerateRandomInput(const vtkm::cont::DataSet& ds,
|
||||
|
||||
for (vtkm::Id i = 0; i < count; ++i)
|
||||
{
|
||||
cellIds.GetPortalControl().Set(i, cellIdGen(RandomGenerator));
|
||||
cellIds.WritePortal().Set(i, cellIdGen(RandomGenerator));
|
||||
|
||||
PointType pc(0.0f);
|
||||
vtkm::FloatDefault minPc = 1e-2f;
|
||||
@ -143,7 +143,7 @@ void GenerateRandomInput(const vtkm::cont::DataSet& ds,
|
||||
pc[c] = pcoordGen(RandomGenerator);
|
||||
sum += pc[c];
|
||||
}
|
||||
pcoords.GetPortalControl().Set(i, pc);
|
||||
pcoords.WritePortal().Set(i, pc);
|
||||
}
|
||||
|
||||
vtkm::worklet::DispatcherMapTopology<ParametricToWorldCoordinates> dispatcher(
|
||||
@ -198,12 +198,9 @@ void TestCellLocator(const vtkm::Vec<vtkm::Id, DIMENSIONS>& dim, vtkm::Id number
|
||||
|
||||
for (vtkm::Id i = 0; i < numberOfPoints; ++i)
|
||||
{
|
||||
VTKM_TEST_ASSERT(cellIds.GetPortalConstControl().Get(i) ==
|
||||
expCellIds.GetPortalConstControl().Get(i),
|
||||
VTKM_TEST_ASSERT(cellIds.ReadPortal().Get(i) == expCellIds.ReadPortal().Get(i),
|
||||
"Incorrect cell ids");
|
||||
VTKM_TEST_ASSERT(test_equal(pcoords.GetPortalConstControl().Get(i),
|
||||
expPCoords.GetPortalConstControl().Get(i),
|
||||
1e-3),
|
||||
VTKM_TEST_ASSERT(test_equal(pcoords.ReadPortal().Get(i), expPCoords.ReadPortal().Get(i), 1e-3),
|
||||
"Incorrect parameteric coordinates");
|
||||
}
|
||||
}
|
||||
|
@ -149,7 +149,7 @@ public:
|
||||
dispatcher.SetDevice(DeviceAdapter());
|
||||
dispatcher.Invoke(points, locator, cellIds, parametric, match);
|
||||
|
||||
auto matchPortal = match.GetPortalConstControl();
|
||||
auto matchPortal = match.ReadPortal();
|
||||
for (vtkm::Id index = 0; index < match.GetNumberOfValues(); index++)
|
||||
{
|
||||
VTKM_TEST_ASSERT(matchPortal.Get(index), "Points do not match");
|
||||
|
@ -35,6 +35,23 @@ template <typename DeviceAdapterTag>
|
||||
class TestingColorTable
|
||||
{
|
||||
|
||||
template <vtkm::IdComponent N>
|
||||
static void CheckColors(vtkm::cont::ArrayHandle<vtkm::Vec<vtkm::UInt8, N>> result,
|
||||
const std::vector<vtkm::Vec<vtkm::UInt8, N>>& expected)
|
||||
{
|
||||
using Vec = vtkm::Vec<vtkm::UInt8, N>;
|
||||
|
||||
VTKM_TEST_ASSERT(result.GetNumberOfValues() == static_cast<vtkm::Id>(expected.size()));
|
||||
auto portal = result.ReadPortal();
|
||||
for (vtkm::Id index = 0; index < portal.GetNumberOfValues(); ++index)
|
||||
{
|
||||
Vec resultValue = portal.Get(index);
|
||||
Vec expectedValue = expected[static_cast<std::size_t>(index)];
|
||||
VTKM_TEST_ASSERT(
|
||||
resultValue == expectedValue, "Expected color ", expectedValue, " but got ", resultValue);
|
||||
}
|
||||
}
|
||||
|
||||
public:
|
||||
static void TestConstructors()
|
||||
{
|
||||
@ -150,6 +167,8 @@ public:
|
||||
|
||||
static void TestClamping()
|
||||
{
|
||||
std::cout << "Test Clamping" << std::endl;
|
||||
|
||||
vtkm::Range range{ 0.0, 1.0 };
|
||||
vtkm::Vec<float, 3> rgb1{ 0.0f, 1.0f, 0.0f };
|
||||
vtkm::Vec<float, 3> rgb2{ 1.0f, 0.0f, 1.0f };
|
||||
@ -167,19 +186,13 @@ public:
|
||||
VTKM_TEST_ASSERT(ran, "color table failed to execute");
|
||||
|
||||
//verify that we clamp the values to the expected range
|
||||
const vtkm::Vec3ui_8 correct[nvals] = {
|
||||
{ 0, 255, 0 }, { 0, 255, 0 }, { 255, 0, 255 }, { 255, 0, 255 }
|
||||
};
|
||||
auto portal = colors.GetPortalConstControl();
|
||||
for (std::size_t i = 0; i < nvals; ++i)
|
||||
{
|
||||
auto result = portal.Get(static_cast<vtkm::Id>(i));
|
||||
VTKM_TEST_ASSERT(result == correct[i], "incorrect value in color from clamp test");
|
||||
}
|
||||
CheckColors(colors, { { 0, 255, 0 }, { 0, 255, 0 }, { 255, 0, 255 }, { 255, 0, 255 } });
|
||||
}
|
||||
|
||||
static void TestRangeColors()
|
||||
{
|
||||
std::cout << "Test default ranges" << std::endl;
|
||||
|
||||
vtkm::Range range{ -1.0, 2.0 };
|
||||
vtkm::Vec<float, 3> rgb1{ 0.0f, 1.0f, 0.0f };
|
||||
vtkm::Vec<float, 3> rgb2{ 1.0f, 0.0f, 1.0f };
|
||||
@ -199,37 +212,21 @@ public:
|
||||
|
||||
//verify that both the above and below range colors are used,
|
||||
//and that the default value of both is 0,0,0
|
||||
const vtkm::Vec3ui_8 correct_range_defaults[nvals] = {
|
||||
{ 0, 0, 0 }, { 0, 255, 0 }, { 255, 0, 255 }, { 0, 0, 0 }
|
||||
};
|
||||
auto portal = colors.GetPortalConstControl();
|
||||
for (std::size_t i = 0; i < nvals; ++i)
|
||||
{
|
||||
auto result = portal.Get(static_cast<vtkm::Id>(i));
|
||||
VTKM_TEST_ASSERT(result == correct_range_defaults[i],
|
||||
"incorrect value in color from default range color test");
|
||||
}
|
||||
CheckColors(colors, { { 0, 0, 0 }, { 0, 255, 0 }, { 255, 0, 255 }, { 0, 0, 0 } });
|
||||
|
||||
|
||||
std::cout << "Test specified ranges" << std::endl;
|
||||
//verify that we can specify custom above and below range colors
|
||||
table.SetAboveRangeColor(vtkm::Vec<float, 3>{ 1.0f, 0.0f, 0.0f }); //red
|
||||
table.SetBelowRangeColor(vtkm::Vec<float, 3>{ 0.0f, 0.0f, 1.0f }); //green
|
||||
const bool ran2 = table.Map(field, colors);
|
||||
VTKM_TEST_ASSERT(ran2, "color table failed to execute");
|
||||
const vtkm::Vec3ui_8 correct_custom_range_colors[nvals] = {
|
||||
{ 0, 0, 255 }, { 0, 255, 0 }, { 255, 0, 255 }, { 255, 0, 0 }
|
||||
};
|
||||
portal = colors.GetPortalConstControl();
|
||||
for (std::size_t i = 0; i < nvals; ++i)
|
||||
{
|
||||
auto result = portal.Get(static_cast<vtkm::Id>(i));
|
||||
VTKM_TEST_ASSERT(result == correct_custom_range_colors[i],
|
||||
"incorrect value in custom above/below range color test");
|
||||
}
|
||||
CheckColors(colors, { { 0, 0, 255 }, { 0, 255, 0 }, { 255, 0, 255 }, { 255, 0, 0 } });
|
||||
}
|
||||
|
||||
static void TestRescaleRange()
|
||||
{
|
||||
std::cout << "Test Rescale Range" << std::endl;
|
||||
vtkm::Range range{ -100.0, 100.0 };
|
||||
|
||||
//implement a blue2yellow color table
|
||||
@ -261,20 +258,19 @@ public:
|
||||
VTKM_TEST_ASSERT(ran, "color table failed to execute");
|
||||
|
||||
//values confirmed with ParaView 5.4
|
||||
const vtkm::Vec3ui_8 correct_lab_values[nvals] = { { 0, 0, 255 }, { 105, 69, 204 },
|
||||
{ 126, 109, 153 }, { 156, 151, 117 },
|
||||
{ 207, 202, 87 }, { 255, 255, 0 } };
|
||||
auto portal = colors.GetPortalConstControl();
|
||||
for (std::size_t i = 0; i < nvals; ++i)
|
||||
{
|
||||
auto result = portal.Get(static_cast<vtkm::Id>(i));
|
||||
VTKM_TEST_ASSERT(result == correct_lab_values[i],
|
||||
"incorrect value in color after rescaling the color table");
|
||||
}
|
||||
CheckColors(colors,
|
||||
{ { 0, 0, 255 },
|
||||
{ 105, 69, 204 },
|
||||
{ 126, 109, 153 },
|
||||
{ 156, 151, 117 },
|
||||
{ 207, 202, 87 },
|
||||
{ 255, 255, 0 } });
|
||||
}
|
||||
|
||||
static void TestAddPoints()
|
||||
{
|
||||
std::cout << "Test Add Points" << std::endl;
|
||||
|
||||
vtkm::Range range{ -20, 20.0 };
|
||||
auto rgbspace = vtkm::cont::ColorSpace::RGB;
|
||||
|
||||
@ -296,20 +292,13 @@ public:
|
||||
const bool ran = table.Map(field, colors);
|
||||
VTKM_TEST_ASSERT(ran, "color table failed to execute");
|
||||
|
||||
const vtkm::Vec3ui_8 correct_rgb_values[nvals] = { { 0, 0, 128 },
|
||||
{ 0, 128, 255 },
|
||||
{ 128, 255, 255 } };
|
||||
auto portal = colors.GetPortalConstControl();
|
||||
for (std::size_t i = 0; i < nvals; ++i)
|
||||
{
|
||||
auto result = portal.Get(static_cast<vtkm::Id>(i));
|
||||
VTKM_TEST_ASSERT(result == correct_rgb_values[i],
|
||||
"incorrect value when interpolating between values");
|
||||
}
|
||||
CheckColors(colors, { { 0, 0, 128 }, { 0, 128, 255 }, { 128, 255, 255 } });
|
||||
}
|
||||
|
||||
static void TestAddSegments()
|
||||
{
|
||||
std::cout << "Test Add Segments" << std::endl;
|
||||
|
||||
vtkm::Range range{ 0.0, 50.0 };
|
||||
auto diverging = vtkm::cont::ColorSpace::DIVERGING;
|
||||
|
||||
@ -342,21 +331,19 @@ public:
|
||||
VTKM_TEST_ASSERT(ran, "color table failed to execute");
|
||||
|
||||
//values confirmed with ParaView 5.4
|
||||
const vtkm::Vec4ui_8 correct_diverging_values[nvals] = {
|
||||
{ 59, 76, 192, 0 }, { 124, 159, 249, 51 }, { 192, 212, 245, 102 },
|
||||
{ 242, 203, 183, 153 }, { 238, 133, 104, 204 }, { 180, 4, 38, 255 }
|
||||
};
|
||||
auto portal = colors.GetPortalConstControl();
|
||||
for (std::size_t i = 0; i < nvals; ++i)
|
||||
{
|
||||
auto result = portal.Get(static_cast<vtkm::Id>(i));
|
||||
VTKM_TEST_ASSERT(result == correct_diverging_values[i],
|
||||
"incorrect value when interpolating between values");
|
||||
}
|
||||
CheckColors(colors,
|
||||
{ { 59, 76, 192, 0 },
|
||||
{ 124, 159, 249, 51 },
|
||||
{ 192, 212, 245, 102 },
|
||||
{ 242, 203, 183, 153 },
|
||||
{ 238, 133, 104, 204 },
|
||||
{ 180, 4, 38, 255 } });
|
||||
}
|
||||
|
||||
static void TestRemovePoints()
|
||||
{
|
||||
std::cout << "Test Remove Points" << std::endl;
|
||||
|
||||
auto hsv = vtkm::cont::ColorSpace::HSV;
|
||||
|
||||
vtkm::cont::ColorTable table(hsv);
|
||||
@ -388,35 +375,32 @@ public:
|
||||
VTKM_TEST_ASSERT(ran, "color table failed to execute");
|
||||
|
||||
//values confirmed with ParaView 5.4
|
||||
const vtkm::Vec3ui_8 correct_hsv_values[nvals] = { { 0, 0, 255 }, { 0, 204, 255 },
|
||||
{ 0, 255, 102 }, { 102, 255, 0 },
|
||||
{ 255, 204, 0 }, { 255, 0, 0 } };
|
||||
auto portal = colors.GetPortalConstControl();
|
||||
for (std::size_t i = 0; i < nvals; ++i)
|
||||
{
|
||||
auto result = portal.Get(static_cast<vtkm::Id>(i));
|
||||
VTKM_TEST_ASSERT(result == correct_hsv_values[i],
|
||||
"incorrect value when interpolating between values");
|
||||
}
|
||||
CheckColors(colors,
|
||||
{ { 0, 0, 255 },
|
||||
{ 0, 204, 255 },
|
||||
{ 0, 255, 102 },
|
||||
{ 102, 255, 0 },
|
||||
{ 255, 204, 0 },
|
||||
{ 255, 0, 0 } });
|
||||
|
||||
std::cout << " Change Color Space" << std::endl;
|
||||
vtkm::cont::ArrayHandle<vtkm::Vec3ui_8> colors_rgb;
|
||||
table.SetColorSpace(vtkm::cont::ColorSpace::RGB);
|
||||
table.Map(field, colors_rgb);
|
||||
|
||||
const vtkm::Vec3ui_8 correct_rgb_values[nvals] = { { 0, 0, 255 }, { 51, 0, 204 },
|
||||
{ 102, 0, 153 }, { 153, 0, 102 },
|
||||
{ 204, 0, 51 }, { 255, 0, 0 } };
|
||||
auto rgb_portal = colors_rgb.GetPortalConstControl();
|
||||
for (std::size_t i = 0; i < nvals; ++i)
|
||||
{
|
||||
auto result = rgb_portal.Get(static_cast<vtkm::Id>(i));
|
||||
VTKM_TEST_ASSERT(result == correct_rgb_values[i],
|
||||
"incorrect value when interpolating between values");
|
||||
}
|
||||
CheckColors(colors_rgb,
|
||||
{ { 0, 0, 255 },
|
||||
{ 51, 0, 204 },
|
||||
{ 102, 0, 153 },
|
||||
{ 153, 0, 102 },
|
||||
{ 204, 0, 51 },
|
||||
{ 255, 0, 0 } });
|
||||
}
|
||||
|
||||
static void TestOpacityOnlyPoints()
|
||||
{
|
||||
std::cout << "Test Opacity Only Points" << std::endl;
|
||||
|
||||
auto hsv = vtkm::cont::ColorSpace::HSV;
|
||||
|
||||
vtkm::cont::ColorTable table(hsv);
|
||||
@ -449,20 +433,19 @@ public:
|
||||
VTKM_TEST_ASSERT(ran, "color table failed to execute");
|
||||
|
||||
//values confirmed with ParaView 5.4
|
||||
const vtkm::Vec4ui_8 correct_opacity_values[nvals] = { { 0, 0, 0, 0 }, { 0, 0, 0, 1 },
|
||||
{ 0, 0, 0, 11 }, { 0, 0, 0, 52 },
|
||||
{ 0, 0, 0, 203 }, { 0, 0, 0, 255 } };
|
||||
auto portal = colors.GetPortalConstControl();
|
||||
for (std::size_t i = 0; i < nvals; ++i)
|
||||
{
|
||||
auto result = portal.Get(static_cast<vtkm::Id>(i));
|
||||
VTKM_TEST_ASSERT(result == correct_opacity_values[i],
|
||||
"incorrect value when interpolating between opacity values");
|
||||
}
|
||||
CheckColors(colors,
|
||||
{ { 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 1 },
|
||||
{ 0, 0, 0, 11 },
|
||||
{ 0, 0, 0, 52 },
|
||||
{ 0, 0, 0, 203 },
|
||||
{ 0, 0, 0, 255 } });
|
||||
}
|
||||
|
||||
static void TestWorkletTransport()
|
||||
{
|
||||
std::cout << "Test Worklet Transport" << std::endl;
|
||||
|
||||
using namespace vtkm::worklet::colorconversion;
|
||||
|
||||
vtkm::cont::ColorTable table(vtkm::cont::ColorTable::Preset::GREEN);
|
||||
@ -484,21 +467,12 @@ public:
|
||||
dispatcher.Invoke(samples, colors);
|
||||
}
|
||||
|
||||
const vtkm::Vec4ui_8 correct_sampling_points[nvals] = { { 14, 28, 31, 255 },
|
||||
{ 21, 150, 21, 255 },
|
||||
{ 255, 251, 230, 255 } };
|
||||
|
||||
auto portal = colors.GetPortalConstControl();
|
||||
for (std::size_t i = 0; i < nvals; ++i)
|
||||
{
|
||||
auto result = portal.Get(static_cast<vtkm::Id>(i));
|
||||
VTKM_TEST_ASSERT(result == correct_sampling_points[i],
|
||||
"incorrect value when interpolating in linear green preset");
|
||||
}
|
||||
CheckColors(colors, { { 14, 28, 31, 255 }, { 21, 150, 21, 255 }, { 255, 251, 230, 255 } });
|
||||
}
|
||||
|
||||
static void TestSampling()
|
||||
{
|
||||
std::cout << "Test Sampling" << std::endl;
|
||||
|
||||
vtkm::cont::ColorTable table(vtkm::cont::ColorTable::Preset::GREEN);
|
||||
VTKM_TEST_ASSERT((table.GetRange() == vtkm::Range{ 0.0, 1.0 }),
|
||||
@ -508,22 +482,15 @@ public:
|
||||
|
||||
vtkm::cont::ArrayHandle<vtkm::Vec4ui_8> colors;
|
||||
constexpr vtkm::Id nvals = 3;
|
||||
table.Sample(3, colors);
|
||||
table.Sample(nvals, colors);
|
||||
|
||||
const vtkm::Vec4ui_8 correct_sampling_points[nvals] = { { 14, 28, 31, 255 },
|
||||
{ 21, 150, 21, 255 },
|
||||
{ 255, 251, 230, 255 } };
|
||||
auto portal = colors.GetPortalConstControl();
|
||||
for (std::size_t i = 0; i < nvals; ++i)
|
||||
{
|
||||
auto result = portal.Get(static_cast<vtkm::Id>(i));
|
||||
VTKM_TEST_ASSERT(result == correct_sampling_points[i],
|
||||
"incorrect value when interpolating in linear green preset");
|
||||
}
|
||||
CheckColors(colors, { { 14, 28, 31, 255 }, { 21, 150, 21, 255 }, { 255, 251, 230, 255 } });
|
||||
}
|
||||
|
||||
static void TestLookupTable()
|
||||
{
|
||||
std::cout << "Test Lookup Table" << std::endl;
|
||||
|
||||
//build a color table with clamping off and verify that sampling works
|
||||
vtkm::Range range{ 0.0, 50.0 };
|
||||
vtkm::cont::ColorTable table(vtkm::cont::ColorTable::Preset::COOL_TO_WARM);
|
||||
@ -545,17 +512,15 @@ public:
|
||||
VTKM_TEST_ASSERT(ran, "color table failed to execute");
|
||||
|
||||
//values confirmed with ParaView 5.4
|
||||
const vtkm::Vec3ui_8 correct_diverging_values[nvals] = { { 0, 0, 255 }, { 59, 76, 192 },
|
||||
{ 122, 157, 248 }, { 191, 211, 246 },
|
||||
{ 241, 204, 184 }, { 238, 134, 105 },
|
||||
{ 180, 4, 38 }, { 255, 0, 0 } };
|
||||
auto portal = colors.GetPortalConstControl();
|
||||
for (std::size_t i = 0; i < nvals; ++i)
|
||||
{
|
||||
auto result = portal.Get(static_cast<vtkm::Id>(i));
|
||||
VTKM_TEST_ASSERT(result == correct_diverging_values[i],
|
||||
"incorrect value when interpolating between values");
|
||||
}
|
||||
CheckColors(colors,
|
||||
{ { 0, 0, 255 },
|
||||
{ 59, 76, 192 },
|
||||
{ 122, 157, 248 },
|
||||
{ 191, 211, 246 },
|
||||
{ 241, 204, 184 },
|
||||
{ 238, 134, 105 },
|
||||
{ 180, 4, 38 },
|
||||
{ 255, 0, 0 } });
|
||||
}
|
||||
|
||||
struct TestAll
|
||||
|
@ -44,7 +44,7 @@ private:
|
||||
|
||||
for (vtkm::Id i = 0; i < size; ++i)
|
||||
{
|
||||
if (ah.GetPortalConstControl().Get(i) != expected[i])
|
||||
if (ah.ReadPortal().Get(i) != expected[i])
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@ -125,7 +125,7 @@ private:
|
||||
}
|
||||
for (vtkm::IdComponent cellIndex = 0; cellIndex < numIncidentCells; cellIndex++)
|
||||
{
|
||||
vtkm::Id expectedCell = conn.GetPortalConstControl().Get(connectivityIndex + cellIndex);
|
||||
vtkm::Id expectedCell = conn.ReadPortal().Get(connectivityIndex + cellIndex);
|
||||
std::set<vtkm::Id>::iterator foundCell = correctIncidentCells.find(expectedCell);
|
||||
VTKM_TEST_ASSERT(foundCell != correctIncidentCells.end(),
|
||||
"An incident cell in the connectivity list is wrong or repeated.");
|
||||
|
@ -47,7 +47,7 @@ private:
|
||||
|
||||
for (vtkm::Id i = 0; i < size; ++i)
|
||||
{
|
||||
if (ah.GetPortalConstControl().Get(i) != expected[i])
|
||||
if (ah.ReadPortal().Get(i) != expected[i])
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@ -130,7 +130,7 @@ private:
|
||||
vtkm::Float32 expected[3] = { 20.1333f, 30.1667f, 40.2333f };
|
||||
for (int i = 0; i < 3; ++i)
|
||||
{
|
||||
VTKM_TEST_ASSERT(test_equal(result.GetPortalConstControl().Get(i), expected[i]),
|
||||
VTKM_TEST_ASSERT(test_equal(result.ReadPortal().Get(i), expected[i]),
|
||||
"Wrong result for CellAverage worklet on explicit single type cellset data");
|
||||
}
|
||||
}
|
||||
|
@ -542,7 +542,7 @@ private:
|
||||
"Shrink did not set size of array handle correctly.");
|
||||
|
||||
// Get the array back and check its values.
|
||||
auto checkPortal = handle.GetPortalConstControl();
|
||||
auto checkPortal = handle.ReadPortal();
|
||||
VTKM_TEST_ASSERT(checkPortal.GetNumberOfValues() == ARRAY_SIZE, "Storage portal wrong size.");
|
||||
|
||||
for (vtkm::Id index = 0; index < ARRAY_SIZE; index++)
|
||||
@ -621,7 +621,7 @@ private:
|
||||
|
||||
IdArrayHandle result;
|
||||
result.Allocate(1);
|
||||
result.GetPortalControl().Set(0, 0);
|
||||
result.WritePortal().Set(0, 0);
|
||||
|
||||
TargetType target;
|
||||
target.Value = 5;
|
||||
@ -633,7 +633,7 @@ private:
|
||||
vtkm::cont::Token token;
|
||||
Algorithm::Schedule(VirtualObjectTransferKernel(base, result, token), 1);
|
||||
}
|
||||
VTKM_TEST_ASSERT(result.GetPortalConstControl().Get(0) == 5, "Did not get expected result");
|
||||
VTKM_TEST_ASSERT(result.ReadPortal().Get(0) == 5, "Did not get expected result");
|
||||
|
||||
{
|
||||
vtkm::cont::Token token;
|
||||
@ -641,7 +641,7 @@ private:
|
||||
base = static_cast<const BaseType*>(transfer.PrepareForExecution(true));
|
||||
Algorithm::Schedule(VirtualObjectTransferKernel(base, result, token), 1);
|
||||
}
|
||||
VTKM_TEST_ASSERT(result.GetPortalConstControl().Get(0) == 10, "Did not get expected result");
|
||||
VTKM_TEST_ASSERT(result.ReadPortal().Get(0) == 10, "Did not get expected result");
|
||||
|
||||
transfer.ReleaseResources();
|
||||
}
|
||||
@ -671,7 +671,7 @@ private:
|
||||
std::cout << "Checking results." << std::endl;
|
||||
for (vtkm::Id index = 0; index < 1; index++)
|
||||
{
|
||||
vtkm::Id value = handle.GetPortalConstControl().Get(index);
|
||||
vtkm::Id value = handle.ReadPortal().Get(index);
|
||||
VTKM_TEST_ASSERT(value == index + OFFSET,
|
||||
"Got bad value for single value scheduled kernel.");
|
||||
}
|
||||
@ -702,7 +702,7 @@ private:
|
||||
std::cout << "Checking results." << std::endl;
|
||||
for (vtkm::Id index = 0; index < ARRAY_SIZE; index++)
|
||||
{
|
||||
vtkm::Id value = handle.GetPortalConstControl().Get(index);
|
||||
vtkm::Id value = handle.ReadPortal().Get(index);
|
||||
VTKM_TEST_ASSERT(value == index + OFFSET, "Got bad value for scheduled kernels.");
|
||||
}
|
||||
} //release memory
|
||||
@ -741,7 +741,7 @@ private:
|
||||
for (vtkm::Id i = 0; i < numberOfSamples; ++i)
|
||||
{
|
||||
vtkm::Id randomIndex = distribution(generator);
|
||||
vtkm::Id value = handle.GetPortalConstControl().Get(randomIndex);
|
||||
vtkm::Id value = handle.ReadPortal().Get(randomIndex);
|
||||
VTKM_TEST_ASSERT(value == randomIndex + OFFSET, "Got bad value for scheduled kernels.");
|
||||
}
|
||||
} //release memory
|
||||
@ -776,7 +776,7 @@ private:
|
||||
const vtkm::Id maxId = DIM_SIZE * DIM_SIZE * DIM_SIZE;
|
||||
for (vtkm::Id index = 0; index < maxId; index++)
|
||||
{
|
||||
vtkm::Id value = handle.GetPortalConstControl().Get(index);
|
||||
vtkm::Id value = handle.ReadPortal().Get(index);
|
||||
VTKM_TEST_ASSERT(value == index + OFFSET, "Got bad value for scheduled vtkm::Id3 kernels.");
|
||||
}
|
||||
} //release memory
|
||||
@ -814,7 +814,7 @@ private:
|
||||
|
||||
std::cout << "Checking results." << std::endl;
|
||||
|
||||
auto vPortal = valid.GetPortalConstControl();
|
||||
auto vPortal = valid.ReadPortal();
|
||||
for (vtkm::Id i = 0; i < ARRAY_SIZE; i++)
|
||||
{
|
||||
bool isValid = vPortal.Get(i);
|
||||
@ -860,7 +860,7 @@ private:
|
||||
|
||||
std::cout << "Checking results." << std::endl;
|
||||
|
||||
auto vPortal = valid.GetPortalConstControl();
|
||||
auto vPortal = valid.ReadPortal();
|
||||
for (vtkm::Id i = 0; i < numElems; i++)
|
||||
{
|
||||
bool isValid = vPortal.Get(i);
|
||||
@ -896,7 +896,7 @@ private:
|
||||
|
||||
for (vtkm::Id index = 0; index < result.GetNumberOfValues(); index++)
|
||||
{
|
||||
const vtkm::Id value = result.GetPortalConstControl().Get(index);
|
||||
const vtkm::Id value = result.ReadPortal().Get(index);
|
||||
VTKM_TEST_ASSERT(value == (OFFSET + (index * 2) + 1), "Incorrect value in CopyIf result.");
|
||||
}
|
||||
|
||||
@ -935,15 +935,15 @@ private:
|
||||
|
||||
// Check to make sure that temp was resized correctly during Unique.
|
||||
// (This was a discovered bug at one point.)
|
||||
temp.GetPortalConstControl(); // Forces copy back to control.
|
||||
temp.ReadPortal(); // Forces copy back to control.
|
||||
temp.ReleaseResourcesExecution(); // Make sure not counting on execution.
|
||||
VTKM_TEST_ASSERT(temp.GetNumberOfValues() == 50,
|
||||
"Unique did not resize array (or size did not copy to control).");
|
||||
|
||||
for (vtkm::Id i = 0; i < ARRAY_SIZE; ++i)
|
||||
{
|
||||
vtkm::Id value = handle.GetPortalConstControl().Get(i);
|
||||
vtkm::Id value1 = handle1.GetPortalConstControl().Get(i);
|
||||
vtkm::Id value = handle.ReadPortal().Get(i);
|
||||
vtkm::Id value1 = handle1.ReadPortal().Get(i);
|
||||
VTKM_TEST_ASSERT(value == i % 50, "Got bad value (LowerBounds)");
|
||||
VTKM_TEST_ASSERT(value1 >= i % 50, "Got bad value (UpperBounds)");
|
||||
}
|
||||
@ -980,8 +980,8 @@ private:
|
||||
VTKM_TEST_ASSERT(handle.GetNumberOfValues() == RANDOMDATA_SIZE,
|
||||
"LowerBounds returned incorrect size");
|
||||
|
||||
std::copy(vtkm::cont::ArrayPortalToIteratorBegin(handle.GetPortalConstControl()),
|
||||
vtkm::cont::ArrayPortalToIteratorEnd(handle.GetPortalConstControl()),
|
||||
std::copy(vtkm::cont::ArrayPortalToIteratorBegin(handle.ReadPortal()),
|
||||
vtkm::cont::ArrayPortalToIteratorEnd(handle.ReadPortal()),
|
||||
randomData);
|
||||
VTKM_TEST_ASSERT(randomData[0] == 2, "Got bad value - LowerBounds");
|
||||
VTKM_TEST_ASSERT(randomData[1] == 3, "Got bad value - LowerBounds");
|
||||
@ -993,8 +993,8 @@ private:
|
||||
VTKM_TEST_ASSERT(handle1.GetNumberOfValues() == RANDOMDATA_SIZE,
|
||||
"UppererBounds returned incorrect size");
|
||||
|
||||
std::copy(vtkm::cont::ArrayPortalToIteratorBegin(handle1.GetPortalConstControl()),
|
||||
vtkm::cont::ArrayPortalToIteratorEnd(handle1.GetPortalConstControl()),
|
||||
std::copy(vtkm::cont::ArrayPortalToIteratorBegin(handle1.ReadPortal()),
|
||||
vtkm::cont::ArrayPortalToIteratorEnd(handle1.ReadPortal()),
|
||||
randomData);
|
||||
VTKM_TEST_ASSERT(randomData[0] == 3, "Got bad value - UpperBound");
|
||||
VTKM_TEST_ASSERT(randomData[1] == 4, "Got bad value - UpperBound");
|
||||
@ -1023,8 +1023,8 @@ private:
|
||||
|
||||
for (vtkm::Id i = 0; i < ARRAY_SIZE - 1; ++i)
|
||||
{
|
||||
vtkm::Id sorted1 = sorted.GetPortalConstControl().Get(i);
|
||||
vtkm::Id sorted2 = sorted.GetPortalConstControl().Get(i + 1);
|
||||
vtkm::Id sorted1 = sorted.ReadPortal().Get(i);
|
||||
vtkm::Id sorted2 = sorted.ReadPortal().Get(i + 1);
|
||||
VTKM_TEST_ASSERT(sorted1 <= sorted2, "Values not properly sorted.");
|
||||
}
|
||||
|
||||
@ -1056,8 +1056,8 @@ private:
|
||||
//Validate that sorted and comp_sorted are sorted in the opposite directions
|
||||
for (vtkm::Id i = 0; i < ARRAY_SIZE; ++i)
|
||||
{
|
||||
vtkm::Id sorted1 = sorted.GetPortalConstControl().Get(i);
|
||||
vtkm::Id sorted2 = comp_sorted.GetPortalConstControl().Get(ARRAY_SIZE - (i + 1));
|
||||
vtkm::Id sorted1 = sorted.ReadPortal().Get(i);
|
||||
vtkm::Id sorted2 = comp_sorted.ReadPortal().Get(ARRAY_SIZE - (i + 1));
|
||||
VTKM_TEST_ASSERT(sorted1 == sorted2, "Got bad sort values when using SortGreater");
|
||||
}
|
||||
|
||||
@ -1065,8 +1065,8 @@ private:
|
||||
Algorithm::Sort(comp_sorted, vtkm::SortLess());
|
||||
for (vtkm::Id i = 0; i < ARRAY_SIZE; ++i)
|
||||
{
|
||||
vtkm::Id sorted1 = sorted.GetPortalConstControl().Get(i);
|
||||
vtkm::Id sorted2 = comp_sorted.GetPortalConstControl().Get(i);
|
||||
vtkm::Id sorted1 = sorted.ReadPortal().Get(i);
|
||||
vtkm::Id sorted2 = comp_sorted.ReadPortal().Get(i);
|
||||
VTKM_TEST_ASSERT(sorted1 == sorted2, "Got bad sort values when using SortLess");
|
||||
}
|
||||
}
|
||||
@ -1095,7 +1095,7 @@ private:
|
||||
|
||||
for (vtkm::Id i = 0; i < ARRAY_SIZE; ++i)
|
||||
{
|
||||
vtkm::Pair<vtkm::Id, vtkm::Id> kv_sorted = zipped.GetPortalConstControl().Get(i);
|
||||
vtkm::Pair<vtkm::Id, vtkm::Id> kv_sorted = zipped.ReadPortal().Get(i);
|
||||
VTKM_TEST_ASSERT((OFFSET + (i / (ARRAY_SIZE / 50))) == kv_sorted.first,
|
||||
"ArrayZipHandle improperly sorted");
|
||||
}
|
||||
@ -1112,7 +1112,7 @@ private:
|
||||
Algorithm::Sort(perm, vtkm::SortGreater());
|
||||
for (vtkm::Id i = 0; i < ARRAY_SIZE; ++i)
|
||||
{
|
||||
vtkm::Id sorted_value = perm.GetPortalConstControl().Get(i);
|
||||
vtkm::Id sorted_value = perm.ReadPortal().Get(i);
|
||||
VTKM_TEST_ASSERT((OFFSET + ((ARRAY_SIZE - (i + 1)) / (ARRAY_SIZE / 50))) == sorted_value,
|
||||
"ArrayZipPermutation improperly sorted");
|
||||
}
|
||||
@ -1121,7 +1121,7 @@ private:
|
||||
Algorithm::Sort(perm);
|
||||
for (vtkm::Id i = 0; i < ARRAY_SIZE; ++i)
|
||||
{
|
||||
vtkm::Id sorted_value = perm.GetPortalConstControl().Get(i);
|
||||
vtkm::Id sorted_value = perm.ReadPortal().Get(i);
|
||||
VTKM_TEST_ASSERT((OFFSET + (i / (ARRAY_SIZE / 50))) == sorted_value,
|
||||
"ArrayZipPermutation improperly sorted");
|
||||
}
|
||||
@ -1154,8 +1154,8 @@ private:
|
||||
{
|
||||
//keys should be sorted from 1 to ARRAY_SIZE
|
||||
//values should be sorted from (ARRAY_SIZE-1) to 0
|
||||
Vec3 sorted_value = values.GetPortalConstControl().Get(i);
|
||||
vtkm::Id sorted_key = keys.GetPortalConstControl().Get(i);
|
||||
Vec3 sorted_value = values.ReadPortal().Get(i);
|
||||
vtkm::Id sorted_key = keys.ReadPortal().Get(i);
|
||||
|
||||
VTKM_TEST_ASSERT((sorted_key == (i + 1)), "Got bad SortByKeys key");
|
||||
VTKM_TEST_ASSERT(test_equal(sorted_value, TestValue(ARRAY_SIZE - 1 - i, Vec3())),
|
||||
@ -1168,8 +1168,8 @@ private:
|
||||
{
|
||||
//keys should be sorted from ARRAY_SIZE to 1
|
||||
//values should be sorted from 0 to (ARRAY_SIZE-1)
|
||||
Vec3 sorted_value = values.GetPortalConstControl().Get(i);
|
||||
vtkm::Id sorted_key = keys.GetPortalConstControl().Get(i);
|
||||
Vec3 sorted_value = values.ReadPortal().Get(i);
|
||||
vtkm::Id sorted_key = keys.ReadPortal().Get(i);
|
||||
|
||||
VTKM_TEST_ASSERT((sorted_key == (ARRAY_SIZE - i)), "Got bad SortByKeys key");
|
||||
VTKM_TEST_ASSERT(test_equal(sorted_value, TestValue(i, Vec3())), "Got bad SortByKeys value");
|
||||
@ -1181,8 +1181,8 @@ private:
|
||||
{
|
||||
//keys should be sorted from ARRAY_SIZE to 1
|
||||
//values should be sorted from 0 to (ARRAY_SIZE-1)
|
||||
Vec3 sorted_value = values.GetPortalConstControl().Get(i);
|
||||
vtkm::Id sorted_key = keys.GetPortalConstControl().Get(i);
|
||||
Vec3 sorted_value = values.ReadPortal().Get(i);
|
||||
vtkm::Id sorted_key = keys.ReadPortal().Get(i);
|
||||
|
||||
VTKM_TEST_ASSERT((sorted_key == (ARRAY_SIZE - i)), "Got bad SortByKeys key");
|
||||
VTKM_TEST_ASSERT(test_equal(sorted_value, TestValue(i, Vec3())), "Got bad SortByKeys value");
|
||||
@ -1213,14 +1213,14 @@ private:
|
||||
|
||||
// Check to make sure that temp was resized correctly during Unique.
|
||||
// (This was a discovered bug at one point.)
|
||||
temp.GetPortalConstControl(); // Forces copy back to control.
|
||||
temp.ReadPortal(); // Forces copy back to control.
|
||||
temp.ReleaseResourcesExecution(); // Make sure not counting on execution.
|
||||
VTKM_TEST_ASSERT(temp.GetNumberOfValues() == 50,
|
||||
"Unique did not resize array (or size did not copy to control).");
|
||||
|
||||
for (vtkm::Id i = 0; i < ARRAY_SIZE; ++i)
|
||||
{
|
||||
vtkm::Id value = handle.GetPortalConstControl().Get(i);
|
||||
vtkm::Id value = handle.ReadPortal().Get(i);
|
||||
VTKM_TEST_ASSERT(value == i % 50, "Got bad LowerBounds value with SortLess");
|
||||
}
|
||||
}
|
||||
@ -1249,14 +1249,14 @@ private:
|
||||
|
||||
// Check to make sure that temp was resized correctly during Unique.
|
||||
// (This was a discovered bug at one point.)
|
||||
temp.GetPortalConstControl(); // Forces copy back to control.
|
||||
temp.ReadPortal(); // Forces copy back to control.
|
||||
temp.ReleaseResourcesExecution(); // Make sure not counting on execution.
|
||||
VTKM_TEST_ASSERT(temp.GetNumberOfValues() == 50,
|
||||
"Unique did not resize array (or size did not copy to control).");
|
||||
|
||||
for (vtkm::Id i = 0; i < ARRAY_SIZE; ++i)
|
||||
{
|
||||
vtkm::Id value = handle.GetPortalConstControl().Get(i);
|
||||
vtkm::Id value = handle.ReadPortal().Get(i);
|
||||
VTKM_TEST_ASSERT(value == (i % 50) + 1, "Got bad UpperBounds value with SortLess");
|
||||
}
|
||||
}
|
||||
@ -1276,12 +1276,12 @@ private:
|
||||
|
||||
// Check to make sure that input was resized correctly during Unique.
|
||||
// (This was a discovered bug at one point.)
|
||||
input.GetPortalConstControl(); // Forces copy back to control.
|
||||
input.ReadPortal(); // Forces copy back to control.
|
||||
input.ReleaseResourcesExecution(); // Make sure not counting on execution.
|
||||
VTKM_TEST_ASSERT(input.GetNumberOfValues() == 1,
|
||||
"Unique did not resize array (or size did not copy to control).");
|
||||
|
||||
vtkm::Id value = input.GetPortalConstControl().Get(0);
|
||||
vtkm::Id value = input.ReadPortal().Get(0);
|
||||
VTKM_TEST_ASSERT(value == OFFSET, "Got bad unique value");
|
||||
}
|
||||
|
||||
@ -1479,8 +1479,8 @@ private:
|
||||
|
||||
for (vtkm::Id i = 0; i < expectedLength; ++i)
|
||||
{
|
||||
const vtkm::Id k = keysOut.GetPortalConstControl().Get(i);
|
||||
const vtkm::Id v = valuesOut.GetPortalConstControl().Get(i);
|
||||
const vtkm::Id k = keysOut.ReadPortal().Get(i);
|
||||
const vtkm::Id v = valuesOut.ReadPortal().Get(i);
|
||||
VTKM_TEST_ASSERT(expectedKeys[i] == k, "Incorrect reduced key");
|
||||
VTKM_TEST_ASSERT(expectedValues[i] == v, "Incorrect reduced value");
|
||||
}
|
||||
@ -1517,8 +1517,8 @@ private:
|
||||
|
||||
for (vtkm::Id i = 0; i < expectedLength; ++i)
|
||||
{
|
||||
const vtkm::Id k = keysOut.GetPortalConstControl().Get(i);
|
||||
const vtkm::Vec3f_64 v = valuesOut.GetPortalConstControl().Get(i);
|
||||
const vtkm::Id k = keysOut.ReadPortal().Get(i);
|
||||
const vtkm::Vec3f_64 v = valuesOut.ReadPortal().Get(i);
|
||||
VTKM_TEST_ASSERT(expectedKeys[i] == k, "Incorrect reduced key");
|
||||
VTKM_TEST_ASSERT(expectedValues[i] == v, "Incorrect reduced vale");
|
||||
}
|
||||
@ -1573,8 +1573,8 @@ private:
|
||||
|
||||
for (vtkm::Id i = 0; i < expectedLength; ++i)
|
||||
{
|
||||
const vtkm::Id k = keysOut.GetPortalConstControl().Get(i);
|
||||
const vtkm::Pair<ValueType, ValueType> v = valuesOutZip.GetPortalConstControl().Get(i);
|
||||
const vtkm::Id k = keysOut.ReadPortal().Get(i);
|
||||
const vtkm::Pair<ValueType, ValueType> v = valuesOutZip.ReadPortal().Get(i);
|
||||
std::cout << "key=" << k << ","
|
||||
<< "expectedValues1[i] = " << expectedValues1[i] << ","
|
||||
<< "computed value1 = " << v.first << std::endl;
|
||||
@ -1604,7 +1604,7 @@ private:
|
||||
|
||||
VTKM_TEST_ASSERT(valuesOut.GetNumberOfValues() == expectedLength,
|
||||
"Got wrong number of output values");
|
||||
const vtkm::Id v = valuesOut.GetPortalConstControl().Get(0);
|
||||
const vtkm::Id v = valuesOut.ReadPortal().Get(0);
|
||||
VTKM_TEST_ASSERT(5 == v, "Incorrect scanned value");
|
||||
}
|
||||
|
||||
@ -1631,7 +1631,7 @@ private:
|
||||
"Got wrong number of output values");
|
||||
for (vtkm::Id i = 0; i < expectedLength; i++)
|
||||
{
|
||||
const vtkm::Id v = valuesOut.GetPortalConstControl().Get(i);
|
||||
const vtkm::Id v = valuesOut.ReadPortal().Get(i);
|
||||
VTKM_TEST_ASSERT(expectedValues[static_cast<std::size_t>(i)] == v, "Incorrect scanned value");
|
||||
}
|
||||
}
|
||||
@ -1673,7 +1673,7 @@ private:
|
||||
"Got wrong number of output values");
|
||||
for (auto i = 0; i < expectedLength; i++)
|
||||
{
|
||||
const vtkm::Id v = valuesOut.GetPortalConstControl().Get(i);
|
||||
const vtkm::Id v = valuesOut.ReadPortal().Get(i);
|
||||
VTKM_TEST_ASSERT(expectedValues[static_cast<std::size_t>(i)] == v, "Incorrect scanned value");
|
||||
}
|
||||
}
|
||||
@ -1699,7 +1699,7 @@ private:
|
||||
"Got wrong number of output values");
|
||||
for (auto i = 0; i < expectedLength; i++)
|
||||
{
|
||||
const vtkm::Id v = valuesOut.GetPortalConstControl().Get(i);
|
||||
const vtkm::Id v = valuesOut.ReadPortal().Get(i);
|
||||
VTKM_TEST_ASSERT(expectedValues[static_cast<std::size_t>(i)] == v, "Incorrect scanned value");
|
||||
}
|
||||
}
|
||||
@ -1725,7 +1725,7 @@ private:
|
||||
|
||||
VTKM_TEST_ASSERT(valuesOut.GetNumberOfValues() == expectedLength,
|
||||
"Got wrong number of output values");
|
||||
const vtkm::Id v = valuesOut.GetPortalConstControl().Get(0);
|
||||
const vtkm::Id v = valuesOut.ReadPortal().Get(0);
|
||||
VTKM_TEST_ASSERT(init == v, "Incorrect scanned value");
|
||||
}
|
||||
|
||||
@ -1753,7 +1753,7 @@ private:
|
||||
"Got wrong number of output values");
|
||||
for (auto i = 0; i < expectedLength; i++)
|
||||
{
|
||||
const vtkm::Id v = valuesOut.GetPortalConstControl().Get(i);
|
||||
const vtkm::Id v = valuesOut.ReadPortal().Get(i);
|
||||
VTKM_TEST_ASSERT(expectedValues[i] == v, "Incorrect scanned value");
|
||||
}
|
||||
}
|
||||
@ -1796,7 +1796,7 @@ private:
|
||||
"Got wrong number of output values");
|
||||
for (vtkm::Id i = 0; i < expectedLength; i++)
|
||||
{
|
||||
const vtkm::Id v = valuesOut.GetPortalConstControl().Get(i);
|
||||
const vtkm::Id v = valuesOut.ReadPortal().Get(i);
|
||||
VTKM_TEST_ASSERT(expectedValues[static_cast<std::size_t>(i)] == v, "Incorrect scanned value");
|
||||
}
|
||||
}
|
||||
@ -1825,7 +1825,7 @@ private:
|
||||
"Got wrong number of output values");
|
||||
for (vtkm::Id i = 0; i < expectedLength; i++)
|
||||
{
|
||||
const vtkm::Id v = valuesOut.GetPortalConstControl().Get(i);
|
||||
const vtkm::Id v = valuesOut.ReadPortal().Get(i);
|
||||
VTKM_TEST_ASSERT(expectedValues[static_cast<std::size_t>(i)] == v, "Incorrect scanned value");
|
||||
}
|
||||
}
|
||||
@ -1853,7 +1853,7 @@ private:
|
||||
|
||||
for (vtkm::Id i = 0; i < ARRAY_SIZE; ++i)
|
||||
{
|
||||
const vtkm::Id value = array.GetPortalConstControl().Get(i);
|
||||
const vtkm::Id value = array.ReadPortal().Get(i);
|
||||
VTKM_TEST_ASSERT(value == (i + 1) * OFFSET, "Incorrect partial sum");
|
||||
}
|
||||
|
||||
@ -1861,7 +1861,7 @@ private:
|
||||
array.Shrink(1);
|
||||
sum = Algorithm::ScanInclusive(array, array);
|
||||
VTKM_TEST_ASSERT(sum == OFFSET, "Incorrect partial sum");
|
||||
const vtkm::Id value = array.GetPortalConstControl().Get(0);
|
||||
const vtkm::Id value = array.ReadPortal().Get(0);
|
||||
VTKM_TEST_ASSERT(value == OFFSET, "Incorrect partial sum");
|
||||
|
||||
std::cout << " size 0" << std::endl;
|
||||
@ -1892,13 +1892,13 @@ private:
|
||||
{
|
||||
vtkm::Id index = static_cast<vtkm::Id>(i);
|
||||
vtkm::Float64 expected = pow(1.01, static_cast<vtkm::Float64>(i + 1));
|
||||
vtkm::Float64 got = array.GetPortalConstControl().Get(index);
|
||||
vtkm::Float64 got = array.ReadPortal().Get(index);
|
||||
VTKM_TEST_ASSERT(test_equal(got, expected), "Incorrect results for ScanInclusive");
|
||||
}
|
||||
for (std::size_t i = mid; i < ARRAY_SIZE; ++i)
|
||||
{
|
||||
vtkm::Id index = static_cast<vtkm::Id>(i);
|
||||
VTKM_TEST_ASSERT(array.GetPortalConstControl().Get(index) == 0.0f,
|
||||
VTKM_TEST_ASSERT(array.ReadPortal().Get(index) == 0.0f,
|
||||
"Incorrect results for ScanInclusive");
|
||||
}
|
||||
}
|
||||
@ -1950,8 +1950,8 @@ private:
|
||||
|
||||
for (vtkm::Id i = 0; i < ARRAY_SIZE; ++i)
|
||||
{
|
||||
const vtkm::Id input_value = array.GetPortalConstControl().Get(i);
|
||||
const vtkm::Id result_value = result.GetPortalConstControl().Get(i);
|
||||
const vtkm::Id input_value = array.ReadPortal().Get(i);
|
||||
const vtkm::Id result_value = result.ReadPortal().Get(i);
|
||||
VTKM_TEST_ASSERT(input_value == result_value, "Incorrect partial sum");
|
||||
}
|
||||
|
||||
@ -1962,8 +1962,8 @@ private:
|
||||
|
||||
for (vtkm::Id i = 0; i < ARRAY_SIZE; ++i)
|
||||
{
|
||||
const vtkm::Id input_value = array.GetPortalConstControl().Get(i);
|
||||
const vtkm::Id result_value = result.GetPortalConstControl().Get(i);
|
||||
const vtkm::Id input_value = array.ReadPortal().Get(i);
|
||||
const vtkm::Id result_value = result.ReadPortal().Get(i);
|
||||
VTKM_TEST_ASSERT(input_value == result_value, "Incorrect partial sum");
|
||||
}
|
||||
}
|
||||
@ -1992,16 +1992,16 @@ private:
|
||||
|
||||
for (vtkm::Id i = 0; i < ARRAY_SIZE; ++i)
|
||||
{
|
||||
const vtkm::Id value = array.GetPortalConstControl().Get(i);
|
||||
const vtkm::Id value = array.ReadPortal().Get(i);
|
||||
VTKM_TEST_ASSERT(value == i * OFFSET, "Incorrect partial sum");
|
||||
}
|
||||
|
||||
std::cout << " size 1" << std::endl;
|
||||
array.Shrink(1);
|
||||
array.GetPortalControl().Set(0, OFFSET);
|
||||
array.WritePortal().Set(0, OFFSET);
|
||||
sum = Algorithm::ScanExclusive(array, array);
|
||||
VTKM_TEST_ASSERT(sum == OFFSET, "Incorrect partial sum");
|
||||
const vtkm::Id value = array.GetPortalConstControl().Get(0);
|
||||
const vtkm::Id value = array.ReadPortal().Get(0);
|
||||
VTKM_TEST_ASSERT(value == 0, "Incorrect partial sum");
|
||||
|
||||
std::cout << " size 0" << std::endl;
|
||||
@ -2031,19 +2031,19 @@ private:
|
||||
Algorithm::ScanExclusive(array, array, vtkm::Multiply(), initialValue);
|
||||
|
||||
VTKM_TEST_ASSERT(product == 0.0f, "ScanExclusive product result not 0.0");
|
||||
VTKM_TEST_ASSERT(array.GetPortalConstControl().Get(0) == initialValue,
|
||||
VTKM_TEST_ASSERT(array.ReadPortal().Get(0) == initialValue,
|
||||
"ScanExclusive result's first value != initialValue");
|
||||
for (std::size_t i = 1; i <= mid; ++i)
|
||||
{
|
||||
vtkm::Id index = static_cast<vtkm::Id>(i);
|
||||
vtkm::Float64 expected = pow(1.01, static_cast<vtkm::Float64>(i)) * initialValue;
|
||||
vtkm::Float64 got = array.GetPortalConstControl().Get(index);
|
||||
vtkm::Float64 got = array.ReadPortal().Get(index);
|
||||
VTKM_TEST_ASSERT(test_equal(got, expected), "Incorrect results for ScanExclusive");
|
||||
}
|
||||
for (std::size_t i = mid + 1; i < ARRAY_SIZE; ++i)
|
||||
{
|
||||
vtkm::Id index = static_cast<vtkm::Id>(i);
|
||||
VTKM_TEST_ASSERT(array.GetPortalConstControl().Get(index) == 0.0f,
|
||||
VTKM_TEST_ASSERT(array.ReadPortal().Get(index) == 0.0f,
|
||||
"Incorrect results for ScanExclusive");
|
||||
}
|
||||
}
|
||||
@ -2091,29 +2091,35 @@ private:
|
||||
// let's validate that
|
||||
Algorithm::ScanExtended(array, array);
|
||||
VTKM_TEST_ASSERT(array.GetNumberOfValues() == ARRAY_SIZE + 1, "Output size incorrect.");
|
||||
auto portal = array.GetPortalConstControl();
|
||||
{
|
||||
auto portal = array.ReadPortal();
|
||||
for (vtkm::Id i = 0; i < ARRAY_SIZE + 1; ++i)
|
||||
{
|
||||
const vtkm::Id value = portal.Get(i);
|
||||
VTKM_TEST_ASSERT(value == i * OFFSET, "Incorrect partial sum");
|
||||
}
|
||||
}
|
||||
|
||||
std::cout << " size 1" << std::endl;
|
||||
array.Shrink(1);
|
||||
array.GetPortalControl().Set(0, OFFSET);
|
||||
array.WritePortal().Set(0, OFFSET);
|
||||
Algorithm::ScanExtended(array, array);
|
||||
VTKM_TEST_ASSERT(array.GetNumberOfValues() == 2);
|
||||
portal = array.GetPortalConstControl();
|
||||
{
|
||||
auto portal = array.ReadPortal();
|
||||
VTKM_TEST_ASSERT(portal.Get(0) == 0, "Incorrect initial value");
|
||||
VTKM_TEST_ASSERT(portal.Get(1) == OFFSET, "Incorrect total sum");
|
||||
}
|
||||
|
||||
std::cout << " size 0" << std::endl;
|
||||
array.Shrink(0);
|
||||
Algorithm::ScanExtended(array, array);
|
||||
VTKM_TEST_ASSERT(array.GetNumberOfValues() == 1);
|
||||
portal = array.GetPortalConstControl();
|
||||
{
|
||||
auto portal = array.ReadPortal();
|
||||
VTKM_TEST_ASSERT(portal.Get(0) == 0, "Incorrect initial value");
|
||||
}
|
||||
}
|
||||
|
||||
std::cout << "-------------------------------------------" << std::endl;
|
||||
std::cout << "Testing Extended Scan with multiplication operator" << std::endl;
|
||||
@ -2136,7 +2142,7 @@ private:
|
||||
VTKM_TEST_ASSERT(array.GetNumberOfValues() == ARRAY_SIZE + 1,
|
||||
"ScanExtended output size incorrect.");
|
||||
|
||||
auto portal = array.GetPortalConstControl();
|
||||
auto portal = array.ReadPortal();
|
||||
VTKM_TEST_ASSERT(portal.Get(0) == initialValue,
|
||||
"ScanExtended result's first value != initialValue");
|
||||
|
||||
@ -2303,7 +2309,7 @@ private:
|
||||
Algorithm::Copy(input, temp);
|
||||
VTKM_TEST_ASSERT(temp.GetNumberOfValues() == COPY_ARRAY_SIZE, "Copy Needs to Resize Array");
|
||||
|
||||
const auto& portal = temp.GetPortalConstControl();
|
||||
const auto& portal = temp.ReadPortal();
|
||||
|
||||
std::uniform_int_distribution<vtkm::Id> distribution(0, COPY_ARRAY_SIZE - 1);
|
||||
vtkm::Id numberOfSamples = COPY_ARRAY_SIZE / 50;
|
||||
@ -2375,7 +2381,7 @@ private:
|
||||
for (vtkm::Id i = 0; i < numberOfSamples; ++i)
|
||||
{
|
||||
vtkm::Id randomIndex = distribution(generator);
|
||||
T value = output.GetPortalConstControl().Get(randomIndex);
|
||||
T value = output.ReadPortal().Get(randomIndex);
|
||||
VTKM_TEST_ASSERT(value == testData[static_cast<size_t>(randomIndex) + 100],
|
||||
"Got bad value (CopySubRange 2)");
|
||||
}
|
||||
@ -2395,10 +2401,10 @@ private:
|
||||
for (vtkm::Id i = 0; i < numberOfSamples; ++i)
|
||||
{
|
||||
vtkm::Id randomIndex = distribution(generator);
|
||||
T value = output.GetPortalConstControl().Get(randomIndex);
|
||||
T value = output.ReadPortal().Get(randomIndex);
|
||||
VTKM_TEST_ASSERT(value == testData[static_cast<size_t>(randomIndex)],
|
||||
"Got bad value (CopySubRange 5)");
|
||||
value = output.GetPortalConstControl().Get(COPY_ARRAY_SIZE + randomIndex);
|
||||
value = output.ReadPortal().Get(COPY_ARRAY_SIZE + randomIndex);
|
||||
VTKM_TEST_ASSERT(value == testData[static_cast<size_t>(randomIndex)],
|
||||
"Got bad value (CopySubRange 5)");
|
||||
}
|
||||
@ -2418,10 +2424,10 @@ private:
|
||||
for (vtkm::Id i = 0; i < numberOfSamples; ++i)
|
||||
{
|
||||
vtkm::Id randomIndex = distribution(generator);
|
||||
T value = output.GetPortalConstControl().Get(randomIndex);
|
||||
T value = output.ReadPortal().Get(randomIndex);
|
||||
VTKM_TEST_ASSERT(value == testData[static_cast<size_t>(randomIndex)],
|
||||
"Got bad value (CopySubRange 6)");
|
||||
value = output.GetPortalConstControl().Get(COPY_ARRAY_SIZE + randomIndex);
|
||||
value = output.ReadPortal().Get(COPY_ARRAY_SIZE + randomIndex);
|
||||
VTKM_TEST_ASSERT(value == testData[static_cast<size_t>(randomIndex)],
|
||||
"Got bad value (CopySubRange 6)");
|
||||
}
|
||||
@ -2510,7 +2516,7 @@ private:
|
||||
std::vector<vtkm::Id>::const_iterator c = testData.begin();
|
||||
for (vtkm::Id i = 0; i < ARRAY_SIZE; ++i, ++c)
|
||||
{
|
||||
vtkm::Float64 value = temp.GetPortalConstControl().Get(i);
|
||||
vtkm::Float64 value = temp.ReadPortal().Get(i);
|
||||
VTKM_TEST_ASSERT(value == static_cast<vtkm::Float64>(*c), "Got bad value (Copy)");
|
||||
}
|
||||
}
|
||||
@ -2541,7 +2547,7 @@ private:
|
||||
Algorithm::Schedule(AtomicKernel<vtkm::Int32>(atomic, token), SHORT_ARRAY_SIZE);
|
||||
}
|
||||
vtkm::Int32 expected = vtkm::Int32(atomicCount);
|
||||
vtkm::Int32 actual = atomicElement.GetPortalControl().Get(0);
|
||||
vtkm::Int32 actual = atomicElement.WritePortal().Get(0);
|
||||
VTKM_TEST_ASSERT(expected == actual, "Did not get expected value: Atomic add Int32");
|
||||
}
|
||||
|
||||
@ -2558,7 +2564,7 @@ private:
|
||||
Algorithm::Schedule(AtomicKernel<vtkm::Int64>(atomic, token), SHORT_ARRAY_SIZE);
|
||||
}
|
||||
vtkm::Int64 expected = vtkm::Int64(atomicCount);
|
||||
vtkm::Int64 actual = atomicElement.GetPortalControl().Get(0);
|
||||
vtkm::Int64 actual = atomicElement.WritePortal().Get(0);
|
||||
VTKM_TEST_ASSERT(expected == actual, "Did not get expected value: Atomic add Int64");
|
||||
}
|
||||
|
||||
@ -2575,7 +2581,7 @@ private:
|
||||
Algorithm::Schedule(AtomicCASKernel<vtkm::Int32>(atomic, token), SHORT_ARRAY_SIZE);
|
||||
}
|
||||
vtkm::Int32 expected = vtkm::Int32(atomicCount);
|
||||
vtkm::Int32 actual = atomicElement.GetPortalControl().Get(0);
|
||||
vtkm::Int32 actual = atomicElement.WritePortal().Get(0);
|
||||
VTKM_TEST_ASSERT(expected == actual, "Did not get expected value: Atomic CAS Int32");
|
||||
}
|
||||
|
||||
@ -2592,7 +2598,7 @@ private:
|
||||
Algorithm::Schedule(AtomicCASKernel<vtkm::Int64>(atomic, token), SHORT_ARRAY_SIZE);
|
||||
}
|
||||
vtkm::Int64 expected = vtkm::Int64(atomicCount);
|
||||
vtkm::Int64 actual = atomicElement.GetPortalControl().Get(0);
|
||||
vtkm::Int64 actual = atomicElement.WritePortal().Get(0);
|
||||
VTKM_TEST_ASSERT(expected == actual, "Did not get expected value: Atomic CAS Int64");
|
||||
}
|
||||
}
|
||||
@ -2614,8 +2620,8 @@ private:
|
||||
Algorithm::BitFieldToUnorderedSet(bits, indices);
|
||||
Algorithm::Sort(indices);
|
||||
|
||||
auto bitPortal = bits.GetPortalConstControl();
|
||||
auto indexPortal = indices.GetPortalConstControl();
|
||||
auto bitPortal = bits.ReadPortal();
|
||||
auto indexPortal = indices.ReadPortal();
|
||||
|
||||
const vtkm::Id numIndices = indices.GetNumberOfValues();
|
||||
vtkm::Id curIndex = 0;
|
||||
@ -2648,7 +2654,7 @@ private:
|
||||
BitField bits;
|
||||
{
|
||||
bits.Allocate(NumBits);
|
||||
auto fillPortal = bits.GetPortalControl();
|
||||
auto fillPortal = bits.WritePortal();
|
||||
for (vtkm::Id i = 0; i < NumWords; ++i)
|
||||
{
|
||||
fillPortal.SetWord(i, mask);
|
||||
@ -2668,7 +2674,7 @@ private:
|
||||
BitField bits;
|
||||
{
|
||||
bits.Allocate(NumBits);
|
||||
auto fillPortal = bits.GetPortalControl();
|
||||
auto fillPortal = bits.WritePortal();
|
||||
for (vtkm::Id i = 0; i < NumWords; ++i)
|
||||
{
|
||||
fillPortal.SetWord(i, static_cast<WordType>(rng(mt)));
|
||||
@ -2694,10 +2700,11 @@ private:
|
||||
{
|
||||
BitField bits;
|
||||
Algorithm::Fill(bits, false, 32 * 32);
|
||||
auto portal = bits.GetPortalControl();
|
||||
auto portal = bits.WritePortal();
|
||||
portal.SetWord(2, 0x00100000ul);
|
||||
portal.SetWord(8, 0x00100010ul);
|
||||
portal.SetWord(11, 0x10000000ul);
|
||||
portal.Detach();
|
||||
testIndexArray(bits);
|
||||
}
|
||||
}
|
||||
@ -2716,7 +2723,7 @@ private:
|
||||
auto verifyPopCount = [](const BitField& bits) {
|
||||
vtkm::Id refPopCount = 0;
|
||||
const vtkm::Id numBits = bits.GetNumberOfBits();
|
||||
auto portal = bits.GetPortalConstControl();
|
||||
auto portal = bits.ReadPortal();
|
||||
for (vtkm::Id idx = 0; idx < numBits; ++idx)
|
||||
{
|
||||
if (portal.GetBit(idx))
|
||||
@ -2738,7 +2745,7 @@ private:
|
||||
BitField bits;
|
||||
{
|
||||
bits.Allocate(NumBits);
|
||||
auto fillPortal = bits.GetPortalControl();
|
||||
auto fillPortal = bits.WritePortal();
|
||||
for (vtkm::Id i = 0; i < NumWords; ++i)
|
||||
{
|
||||
fillPortal.SetWord(i, mask);
|
||||
@ -2758,7 +2765,7 @@ private:
|
||||
BitField bits;
|
||||
{
|
||||
bits.Allocate(NumBits);
|
||||
auto fillPortal = bits.GetPortalControl();
|
||||
auto fillPortal = bits.WritePortal();
|
||||
for (vtkm::Id i = 0; i < NumWords; ++i)
|
||||
{
|
||||
fillPortal.SetWord(i, static_cast<WordType>(rng(mt)));
|
||||
@ -2784,10 +2791,11 @@ private:
|
||||
{
|
||||
BitField bits;
|
||||
Algorithm::Fill(bits, false, 32 * 32);
|
||||
auto portal = bits.GetPortalControl();
|
||||
auto portal = bits.WritePortal();
|
||||
portal.SetWord(2, 0x00100000ul);
|
||||
portal.SetWord(8, 0x00100010ul);
|
||||
portal.SetWord(11, 0x10000000ul);
|
||||
portal.Detach();
|
||||
verifyPopCount(bits);
|
||||
}
|
||||
}
|
||||
@ -2814,7 +2822,7 @@ private:
|
||||
vtkm::Id numWords = bits.GetNumberOfWords<WordType>();
|
||||
VTKM_TEST_ASSERT(numWords == NumWords, "Unexpected number of words.");
|
||||
|
||||
auto portal = bits.GetPortalConstControl();
|
||||
auto portal = bits.ReadPortal();
|
||||
for (vtkm::Id wordIdx = 0; wordIdx < NumWords; ++wordIdx)
|
||||
{
|
||||
VTKM_TEST_ASSERT(portal.GetWord<WordType>(wordIdx) == mask,
|
||||
@ -2842,7 +2850,7 @@ private:
|
||||
vtkm::Id numWords = bits.GetNumberOfWords<WordType>();
|
||||
VTKM_TEST_ASSERT(numWords == NumWords, "Unexpected number of words.");
|
||||
|
||||
auto portal = bits.GetPortalConstControl();
|
||||
auto portal = bits.ReadPortal();
|
||||
for (vtkm::Id wordIdx = 0; wordIdx < NumWords; ++wordIdx)
|
||||
{
|
||||
VTKM_TEST_ASSERT(portal.GetWord<WordType>(wordIdx) == invWord,
|
||||
@ -2875,7 +2883,7 @@ private:
|
||||
vtkm::Id numBits = bits.GetNumberOfBits();
|
||||
VTKM_TEST_ASSERT(numBits == NumBits, "Unexpected number of bits.");
|
||||
|
||||
auto portal = bits.GetPortalConstControl();
|
||||
auto portal = bits.ReadPortal();
|
||||
for (vtkm::Id bitIdx = 0; bitIdx < NumBits; ++bitIdx)
|
||||
{
|
||||
VTKM_TEST_ASSERT(portal.GetBit(bitIdx) == value, "Incorrect bit in result BitField.");
|
||||
@ -2890,7 +2898,7 @@ private:
|
||||
vtkm::Id numBits = bits.GetNumberOfBits();
|
||||
VTKM_TEST_ASSERT(numBits == NumBits, "Unexpected number of bits.");
|
||||
|
||||
auto portal = bits.GetPortalConstControl();
|
||||
auto portal = bits.ReadPortal();
|
||||
for (vtkm::Id bitIdx = 0; bitIdx < NumBits; ++bitIdx)
|
||||
{
|
||||
VTKM_TEST_ASSERT(portal.GetBit(bitIdx) == !value, "Incorrect bit in result BitField.");
|
||||
@ -2926,7 +2934,7 @@ private:
|
||||
Algorithm::Fill(handle, 867, ARRAY_SIZE);
|
||||
|
||||
{
|
||||
auto portal = handle.GetPortalConstControl();
|
||||
auto portal = handle.ReadPortal();
|
||||
VTKM_TEST_ASSERT(portal.GetNumberOfValues() == ARRAY_SIZE);
|
||||
for (vtkm::Id i = 0; i < ARRAY_SIZE; ++i)
|
||||
{
|
||||
@ -2936,7 +2944,7 @@ private:
|
||||
|
||||
Algorithm::Fill(handle, 5309);
|
||||
{
|
||||
auto portal = handle.GetPortalConstControl();
|
||||
auto portal = handle.ReadPortal();
|
||||
VTKM_TEST_ASSERT(portal.GetNumberOfValues() == ARRAY_SIZE);
|
||||
for (vtkm::Id i = 0; i < ARRAY_SIZE; ++i)
|
||||
{
|
||||
|
@ -256,7 +256,7 @@ private:
|
||||
using ValueType = vtkm::Vec<ComponentType, NUM_COMPONENTS>;
|
||||
using ComponentArrayType = vtkm::cont::ArrayHandle<ComponentType>;
|
||||
using SOAPortalType =
|
||||
vtkm::internal::ArrayPortalSOA<ValueType, typename ComponentArrayType::PortalControl>;
|
||||
vtkm::internal::ArrayPortalSOA<ValueType, typename ComponentArrayType::WritePortalType>;
|
||||
|
||||
std::cout << "Test SOA portal reflects data in component portals." << std::endl;
|
||||
SOAPortalType soaPortalIn(ARRAY_SIZE);
|
||||
@ -266,7 +266,7 @@ private:
|
||||
{
|
||||
vtkm::cont::ArrayHandle<ComponentType> array;
|
||||
array.Allocate(ARRAY_SIZE);
|
||||
auto portal = array.GetPortalControl();
|
||||
auto portal = array.WritePortal();
|
||||
for (vtkm::IdComponent valueIndex = 0; valueIndex < ARRAY_SIZE; ++valueIndex)
|
||||
{
|
||||
portal.Set(valueIndex, TestValue(valueIndex, ValueType{})[componentIndex]);
|
||||
@ -281,22 +281,25 @@ private:
|
||||
CheckPortal(soaPortalIn);
|
||||
|
||||
std::cout << "Test data set in SOA portal gets set in component portals." << std::endl;
|
||||
{
|
||||
SOAPortalType soaPortalOut(ARRAY_SIZE);
|
||||
for (vtkm::IdComponent componentIndex = 0; componentIndex < NUM_COMPONENTS; ++componentIndex)
|
||||
for (vtkm::IdComponent componentIndex = 0; componentIndex < NUM_COMPONENTS;
|
||||
++componentIndex)
|
||||
{
|
||||
vtkm::cont::ArrayHandle<ComponentType> array;
|
||||
array.Allocate(ARRAY_SIZE);
|
||||
auto portal = array.GetPortalControl();
|
||||
auto portal = array.WritePortal();
|
||||
soaPortalOut.SetPortal(componentIndex, portal);
|
||||
|
||||
implArrays[static_cast<std::size_t>(componentIndex)] = array;
|
||||
}
|
||||
|
||||
SetPortal(soaPortalOut);
|
||||
}
|
||||
|
||||
for (vtkm::IdComponent componentIndex = 0; componentIndex < NUM_COMPONENTS; ++componentIndex)
|
||||
{
|
||||
auto portal = implArrays[static_cast<size_t>(componentIndex)].GetPortalConstControl();
|
||||
auto portal = implArrays[static_cast<size_t>(componentIndex)].ReadPortal();
|
||||
for (vtkm::Id valueIndex = 0; valueIndex < ARRAY_SIZE; ++valueIndex)
|
||||
{
|
||||
ComponentType x = TestValue(valueIndex, ValueType{})[componentIndex];
|
||||
@ -322,7 +325,7 @@ private:
|
||||
{
|
||||
vtkm::cont::ArrayHandle<ComponentType> componentArray;
|
||||
componentArray.Allocate(ARRAY_SIZE);
|
||||
auto componentPortal = componentArray.GetPortalControl();
|
||||
auto componentPortal = componentArray.WritePortal();
|
||||
for (vtkm::Id valueIndex = 0; valueIndex < ARRAY_SIZE; ++valueIndex)
|
||||
{
|
||||
componentPortal.Set(
|
||||
@ -333,13 +336,13 @@ private:
|
||||
}
|
||||
|
||||
VTKM_TEST_ASSERT(soaArray.GetNumberOfValues() == ARRAY_SIZE);
|
||||
VTKM_TEST_ASSERT(soaArray.GetPortalConstControl().GetNumberOfValues() == ARRAY_SIZE);
|
||||
CheckPortal(soaArray.GetPortalConstControl());
|
||||
VTKM_TEST_ASSERT(soaArray.ReadPortal().GetNumberOfValues() == ARRAY_SIZE);
|
||||
CheckPortal(soaArray.ReadPortal());
|
||||
|
||||
vtkm::cont::ArrayHandle<ValueType> basicArray;
|
||||
vtkm::cont::ArrayCopy(soaArray, basicArray);
|
||||
VTKM_TEST_ASSERT(basicArray.GetNumberOfValues() == ARRAY_SIZE);
|
||||
CheckPortal(basicArray.GetPortalConstControl());
|
||||
CheckPortal(basicArray.ReadPortal());
|
||||
}
|
||||
|
||||
{
|
||||
@ -359,35 +362,35 @@ private:
|
||||
{
|
||||
vtkm::cont::ArrayHandleSOA<Vec3> soaArray = { vector0, vector1, vector2 };
|
||||
VTKM_TEST_ASSERT(soaArray.GetNumberOfValues() == ARRAY_SIZE);
|
||||
CheckPortal(soaArray.GetPortalConstControl());
|
||||
CheckPortal(soaArray.ReadPortal());
|
||||
}
|
||||
|
||||
{
|
||||
vtkm::cont::ArrayHandleSOA<Vec3> soaArray =
|
||||
vtkm::cont::make_ArrayHandleSOA<Vec3>({ vector0, vector1, vector2 });
|
||||
VTKM_TEST_ASSERT(soaArray.GetNumberOfValues() == ARRAY_SIZE);
|
||||
CheckPortal(soaArray.GetPortalConstControl());
|
||||
CheckPortal(soaArray.ReadPortal());
|
||||
}
|
||||
|
||||
{
|
||||
vtkm::cont::ArrayHandleSOA<Vec3> soaArray =
|
||||
vtkm::cont::make_ArrayHandleSOA(vector0, vector1, vector2);
|
||||
VTKM_TEST_ASSERT(soaArray.GetNumberOfValues() == ARRAY_SIZE);
|
||||
CheckPortal(soaArray.GetPortalConstControl());
|
||||
CheckPortal(soaArray.ReadPortal());
|
||||
}
|
||||
|
||||
{
|
||||
vtkm::cont::ArrayHandleSOA<Vec3> soaArray = vtkm::cont::make_ArrayHandleSOA<Vec3>(
|
||||
{ &vector0.front(), &vector1.front(), &vector2.front() }, ARRAY_SIZE);
|
||||
VTKM_TEST_ASSERT(soaArray.GetNumberOfValues() == ARRAY_SIZE);
|
||||
CheckPortal(soaArray.GetPortalConstControl());
|
||||
CheckPortal(soaArray.ReadPortal());
|
||||
}
|
||||
|
||||
{
|
||||
vtkm::cont::ArrayHandleSOA<Vec3> soaArray = vtkm::cont::make_ArrayHandleSOA(
|
||||
ARRAY_SIZE, &vector0.front(), &vector1.front(), &vector2.front());
|
||||
VTKM_TEST_ASSERT(soaArray.GetNumberOfValues() == ARRAY_SIZE);
|
||||
CheckPortal(soaArray.GetPortalConstControl());
|
||||
CheckPortal(soaArray.ReadPortal());
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -404,7 +407,7 @@ private:
|
||||
|
||||
vtkm::cont::ArrayHandle<ValueType> basicArray;
|
||||
basicArray.Allocate(ARRAY_SIZE);
|
||||
SetPortal(basicArray.GetPortalControl());
|
||||
SetPortal(basicArray.WritePortal());
|
||||
|
||||
vtkm::cont::ArrayHandleSOA<ValueType> soaArray;
|
||||
vtkm::cont::ArrayCopy(basicArray, soaArray);
|
||||
@ -413,7 +416,7 @@ private:
|
||||
for (vtkm::IdComponent componentIndex = 0; componentIndex < NUM_COMPONENTS; ++componentIndex)
|
||||
{
|
||||
vtkm::cont::ArrayHandle<ComponentType> componentArray = soaArray.GetArray(componentIndex);
|
||||
auto componentPortal = componentArray.GetPortalConstControl();
|
||||
auto componentPortal = componentArray.ReadPortal();
|
||||
for (vtkm::Id valueIndex = 0; valueIndex < ARRAY_SIZE; ++valueIndex)
|
||||
{
|
||||
ComponentType expected =
|
||||
@ -449,11 +452,11 @@ private:
|
||||
//verify that the control portal works
|
||||
for (vtkm::Id i = 0; i < ARRAY_SIZE; ++i)
|
||||
{
|
||||
const vtkm::Vec<ValueType, 3> result_v = result.GetPortalConstControl().Get(i);
|
||||
const vtkm::Vec<ValueType, 3> result_v = result.ReadPortal().Get(i);
|
||||
VTKM_TEST_ASSERT(test_equal(result_v, vtkm::Vec<ValueType, 3>(value)),
|
||||
"CompositeVector Handle Failed");
|
||||
|
||||
const vtkm::Vec<ValueType, 3> result_c = composite.GetPortalConstControl().Get(i);
|
||||
const vtkm::Vec<ValueType, 3> result_c = composite.ReadPortal().Get(i);
|
||||
VTKM_TEST_ASSERT(test_equal(result_c, vtkm::Vec<ValueType, 3>(value)),
|
||||
"CompositeVector Handle Failed");
|
||||
}
|
||||
@ -480,8 +483,8 @@ private:
|
||||
//verify that the control portal works
|
||||
for (vtkm::Id i = 0; i < ARRAY_SIZE; ++i)
|
||||
{
|
||||
const ValueType result_v = result.GetPortalConstControl().Get(i);
|
||||
const ValueType control_value = constant.GetPortalConstControl().Get(i);
|
||||
const ValueType result_v = result.ReadPortal().Get(i);
|
||||
const ValueType control_value = constant.ReadPortal().Get(i);
|
||||
VTKM_TEST_ASSERT(test_equal(result_v, value), "Counting Handle Failed");
|
||||
VTKM_TEST_ASSERT(test_equal(result_v, control_value), "Counting Handle Control Failed");
|
||||
}
|
||||
@ -515,9 +518,9 @@ private:
|
||||
//verify that the control portal works
|
||||
for (vtkm::Id i = 0; i < length; ++i)
|
||||
{
|
||||
const ValueType result_v = result.GetPortalConstControl().Get(i);
|
||||
const ValueType result_v = result.ReadPortal().Get(i);
|
||||
const ValueType correct_value = ValueType(component_value);
|
||||
const ValueType control_value = counting.GetPortalConstControl().Get(i);
|
||||
const ValueType control_value = counting.ReadPortal().Get(i);
|
||||
VTKM_TEST_ASSERT(test_equal(result_v, correct_value), "Counting Handle Failed");
|
||||
VTKM_TEST_ASSERT(test_equal(result_v, control_value), "Counting Handle Control Failed");
|
||||
component_value = ComponentType(component_value + ComponentType(1));
|
||||
@ -548,9 +551,9 @@ private:
|
||||
//verify that the control portal works
|
||||
for (vtkm::Id i = 0; i < length; ++i)
|
||||
{
|
||||
const ValueType result_v = result.GetPortalConstControl().Get(i);
|
||||
const ValueType result_v = result.ReadPortal().Get(i);
|
||||
const ValueType correct_value = functor(i);
|
||||
const ValueType control_value = implicit.GetPortalConstControl().Get(i);
|
||||
const ValueType control_value = implicit.ReadPortal().Get(i);
|
||||
VTKM_TEST_ASSERT(test_equal(result_v, correct_value), "Implicit Handle Failed");
|
||||
VTKM_TEST_ASSERT(test_equal(result_v, control_value), "Implicit Handle Failed");
|
||||
}
|
||||
@ -601,13 +604,13 @@ private:
|
||||
//verify that the control portal works
|
||||
for (vtkm::Id i = 0; i < length; ++i)
|
||||
{
|
||||
const ValueType result_v = result.GetPortalConstControl().Get(i);
|
||||
const ValueType result_v = result.ReadPortal().Get(i);
|
||||
ValueType correct_value;
|
||||
if (i < implicitLen)
|
||||
correct_value = implicit.GetPortalConstControl().Get(i);
|
||||
correct_value = implicit.ReadPortal().Get(i);
|
||||
else
|
||||
correct_value = basic.GetPortalConstControl().Get(i - implicitLen);
|
||||
const ValueType control_value = concatenate.GetPortalConstControl().Get(i);
|
||||
correct_value = basic.ReadPortal().Get(i - implicitLen);
|
||||
const ValueType control_value = concatenate.ReadPortal().Get(i);
|
||||
VTKM_TEST_ASSERT(test_equal(result_v, correct_value),
|
||||
"ArrayHandleConcatenate as Input Failed");
|
||||
VTKM_TEST_ASSERT(test_equal(result_v, control_value),
|
||||
@ -658,9 +661,9 @@ private:
|
||||
const vtkm::Id value_index = i;
|
||||
const vtkm::Id key_index = start_pos + i;
|
||||
|
||||
const ValueType result_v = result.GetPortalConstControl().Get(value_index);
|
||||
const ValueType correct_value = implicit.GetPortalConstControl().Get(key_index);
|
||||
const ValueType control_value = permutation.GetPortalConstControl().Get(value_index);
|
||||
const ValueType result_v = result.ReadPortal().Get(value_index);
|
||||
const ValueType correct_value = implicit.ReadPortal().Get(key_index);
|
||||
const ValueType control_value = permutation.ReadPortal().Get(value_index);
|
||||
VTKM_TEST_ASSERT(test_equal(result_v, correct_value), "Implicit Handle Failed");
|
||||
VTKM_TEST_ASSERT(test_equal(result_v, control_value), "Implicit Handle Failed");
|
||||
}
|
||||
@ -704,9 +707,9 @@ private:
|
||||
const vtkm::Id value_index = i;
|
||||
const vtkm::Id key_index = start_pos + i;
|
||||
|
||||
const ValueType result_v = result.GetPortalConstControl().Get(value_index);
|
||||
const ValueType correct_value = implicit.GetPortalConstControl().Get(key_index);
|
||||
const ValueType control_value = view.GetPortalConstControl().Get(value_index);
|
||||
const ValueType result_v = result.ReadPortal().Get(value_index);
|
||||
const ValueType correct_value = implicit.ReadPortal().Get(key_index);
|
||||
const ValueType control_value = view.ReadPortal().Get(value_index);
|
||||
VTKM_TEST_ASSERT(test_equal(result_v, correct_value), "Implicit Handle Failed");
|
||||
VTKM_TEST_ASSERT(test_equal(result_v, control_value), "Implicit Handle Failed");
|
||||
}
|
||||
@ -729,7 +732,7 @@ private:
|
||||
transformed = vtkm::cont::make_ArrayHandleTransform(input, functor);
|
||||
|
||||
input.Allocate(length);
|
||||
SetPortal(input.GetPortalControl());
|
||||
SetPortal(input.WritePortal());
|
||||
|
||||
vtkm::cont::printSummary_ArrayHandle(transformed, std::cout);
|
||||
std::cout << std::endl;
|
||||
@ -742,9 +745,9 @@ private:
|
||||
//verify that the control portal works
|
||||
for (vtkm::Id i = 0; i < length; ++i)
|
||||
{
|
||||
const ValueType result_v = result.GetPortalConstControl().Get(i);
|
||||
const ValueType result_v = result.ReadPortal().Get(i);
|
||||
const ValueType correct_value = functor(TestValue(i, ValueType()));
|
||||
const ValueType control_value = transformed.GetPortalConstControl().Get(i);
|
||||
const ValueType control_value = transformed.ReadPortal().Get(i);
|
||||
VTKM_TEST_ASSERT(test_equal(result_v, correct_value), "Transform Handle Failed");
|
||||
VTKM_TEST_ASSERT(test_equal(result_v, control_value), "Transform Handle Control Failed");
|
||||
}
|
||||
@ -767,7 +770,7 @@ private:
|
||||
auto transformed = vtkm::cont::make_ArrayHandleTransform(input, virtualFunctor);
|
||||
|
||||
input.Allocate(length);
|
||||
SetPortal(input.GetPortalControl());
|
||||
SetPortal(input.WritePortal());
|
||||
|
||||
vtkm::cont::printSummary_ArrayHandle(transformed, std::cout);
|
||||
std::cout << std::endl;
|
||||
@ -780,9 +783,9 @@ private:
|
||||
//verify that the control portal works
|
||||
for (vtkm::Id i = 0; i < length; ++i)
|
||||
{
|
||||
const ValueType result_v = result.GetPortalConstControl().Get(i);
|
||||
const ValueType result_v = result.ReadPortal().Get(i);
|
||||
const ValueType correct_value = functor(TestValue(i, ValueType()));
|
||||
const ValueType control_value = transformed.GetPortalConstControl().Get(i);
|
||||
const ValueType control_value = transformed.ReadPortal().Get(i);
|
||||
VTKM_TEST_ASSERT(test_equal(result_v, correct_value), "Transform Handle Failed");
|
||||
VTKM_TEST_ASSERT(test_equal(result_v, control_value), "Transform Handle Control Failed");
|
||||
}
|
||||
@ -822,9 +825,9 @@ private:
|
||||
//verify that the control portal works
|
||||
for (vtkm::Id i = 0; i < length; ++i)
|
||||
{
|
||||
const OutputValueType result_v = result.GetPortalConstControl().Get(i);
|
||||
const OutputValueType result_v = result.ReadPortal().Get(i);
|
||||
const OutputValueType correct_value = functor(ValueType(component_value));
|
||||
const OutputValueType control_value = countingTransformed.GetPortalConstControl().Get(i);
|
||||
const OutputValueType control_value = countingTransformed.ReadPortal().Get(i);
|
||||
VTKM_TEST_ASSERT(test_equal(result_v, correct_value), "Transform Counting Handle Failed");
|
||||
VTKM_TEST_ASSERT(test_equal(result_v, control_value),
|
||||
"Transform Counting Handle Control Failed");
|
||||
@ -855,8 +858,8 @@ private:
|
||||
vtkm::Id length = ARRAY_SIZE;
|
||||
for (vtkm::Id i = 0; i < length; ++i)
|
||||
{
|
||||
VTKM_TEST_ASSERT(result.GetPortalConstControl().Get(i) ==
|
||||
static_cast<CastToType>(input.GetPortalConstControl().Get(i)),
|
||||
VTKM_TEST_ASSERT(result.ReadPortal().Get(i) ==
|
||||
static_cast<CastToType>(input.ReadPortal().Get(i)),
|
||||
"Casting ArrayHandle Failed");
|
||||
}
|
||||
}
|
||||
@ -886,8 +889,8 @@ private:
|
||||
vtkm::Id length = ARRAY_SIZE;
|
||||
for (vtkm::Id i = 0; i < length; ++i)
|
||||
{
|
||||
VTKM_TEST_ASSERT(input.GetPortalConstControl().Get(i) ==
|
||||
static_cast<vtkm::Id>(result.GetPortalConstControl().Get(i)),
|
||||
VTKM_TEST_ASSERT(input.ReadPortal().Get(i) ==
|
||||
static_cast<vtkm::Id>(result.ReadPortal().Get(i)),
|
||||
"Casting ArrayHandle Failed");
|
||||
}
|
||||
}
|
||||
@ -916,8 +919,7 @@ private:
|
||||
std::cout << std::endl;
|
||||
|
||||
// verify results
|
||||
VTKM_TEST_ASSERT(
|
||||
test_equal_portals(result.GetPortalConstControl(), input.GetPortalConstControl()),
|
||||
VTKM_TEST_ASSERT(test_equal_portals(result.ReadPortal(), input.ReadPortal()),
|
||||
"CastingArrayHandle failed");
|
||||
}
|
||||
};
|
||||
@ -945,8 +947,7 @@ private:
|
||||
std::cout << std::endl;
|
||||
|
||||
// verify results
|
||||
VTKM_TEST_ASSERT(
|
||||
test_equal_portals(input.GetPortalConstControl(), result.GetPortalConstControl()),
|
||||
VTKM_TEST_ASSERT(test_equal_portals(input.ReadPortal(), result.ReadPortal()),
|
||||
"Multiplexing ArrayHandle failed");
|
||||
}
|
||||
};
|
||||
@ -987,7 +988,7 @@ private:
|
||||
vtkm::Id totalIndex = 0;
|
||||
for (vtkm::Id index = 0; index < ARRAY_SIZE; ++index)
|
||||
{
|
||||
const ValueType result = resultArray.GetPortalConstControl().Get(index);
|
||||
const ValueType result = resultArray.ReadPortal().Get(index);
|
||||
for (vtkm::IdComponent componentIndex = 0; componentIndex < NUM_COMPONENTS;
|
||||
componentIndex++)
|
||||
{
|
||||
@ -1010,7 +1011,7 @@ private:
|
||||
|
||||
vtkm::cont::ArrayHandle<ValueType> baseArray;
|
||||
baseArray.Allocate(ARRAY_SIZE);
|
||||
SetPortal(baseArray.GetPortalControl());
|
||||
SetPortal(baseArray.WritePortal());
|
||||
|
||||
vtkm::cont::ArrayHandle<ComponentType> resultArray;
|
||||
|
||||
@ -1039,7 +1040,7 @@ private:
|
||||
for (vtkm::IdComponent componentIndex = 0; componentIndex < NUM_COMPONENTS;
|
||||
componentIndex++)
|
||||
{
|
||||
const ComponentType result = resultArray.GetPortalConstControl().Get(totalIndex);
|
||||
const ComponentType result = resultArray.ReadPortal().Get(totalIndex);
|
||||
VTKM_TEST_ASSERT(test_equal(result, expectedValue[componentIndex]),
|
||||
"Result array got wrong value.");
|
||||
totalIndex++;
|
||||
@ -1093,7 +1094,7 @@ private:
|
||||
|
||||
vtkm::cont::ArrayHandle<ComponentType> sourceArray;
|
||||
sourceArray.Allocate(sourceArraySize);
|
||||
SetPortal(sourceArray.GetPortalControl());
|
||||
SetPortal(sourceArray.WritePortal());
|
||||
|
||||
vtkm::cont::printSummary_ArrayHandle(
|
||||
vtkm::cont::make_ArrayHandleGroupVecVariable(sourceArray, offsetsArray), std::cout);
|
||||
@ -1105,7 +1106,7 @@ private:
|
||||
dispatcher.Invoke(vtkm::cont::make_ArrayHandleGroupVecVariable(sourceArray, offsetsArray),
|
||||
dummyArray);
|
||||
|
||||
dummyArray.GetPortalConstControl();
|
||||
dummyArray.ReadPortal();
|
||||
}
|
||||
};
|
||||
|
||||
@ -1160,7 +1161,7 @@ private:
|
||||
vtkm::cont::printSummary_ArrayHandle(sourceArray, std::cout);
|
||||
std::cout << std::endl;
|
||||
|
||||
CheckPortal(sourceArray.GetPortalConstControl());
|
||||
CheckPortal(sourceArray.ReadPortal());
|
||||
}
|
||||
};
|
||||
|
||||
@ -1200,7 +1201,7 @@ private:
|
||||
//verify that the control portal works
|
||||
for (int i = 0; i < ARRAY_SIZE; ++i)
|
||||
{
|
||||
const PairType result_v = result.GetPortalConstControl().Get(i);
|
||||
const PairType result_v = result.ReadPortal().Get(i);
|
||||
const PairType correct_value(KeyType(static_cast<KeyComponentType>(ARRAY_SIZE - i)),
|
||||
ValueType(static_cast<ValueComponentType>(i)));
|
||||
VTKM_TEST_ASSERT(test_equal(result_v, correct_value), "ArrayHandleZip Failed as input");
|
||||
@ -1214,19 +1215,11 @@ private:
|
||||
VTKM_CONT void operator()(const ValueType vtkmNotUsed(v)) const
|
||||
{
|
||||
using DiscardHandleType = vtkm::cont::ArrayHandleDiscard<ValueType>;
|
||||
using ComponentType = typename vtkm::VecTraits<ValueType>::ComponentType;
|
||||
|
||||
using Portal = typename vtkm::cont::ArrayHandle<ValueType>::PortalControl;
|
||||
|
||||
const vtkm::Id length = ARRAY_SIZE;
|
||||
|
||||
vtkm::cont::ArrayHandle<ValueType> input;
|
||||
input.Allocate(length);
|
||||
Portal inputPortal = input.GetPortalControl();
|
||||
for (vtkm::Id i = 0; i < length; ++i)
|
||||
{
|
||||
inputPortal.Set(i, ValueType(ComponentType(i)));
|
||||
}
|
||||
SetPortal(input.WritePortal());
|
||||
|
||||
DiscardHandleType discard;
|
||||
discard.Allocate(length);
|
||||
@ -1251,15 +1244,9 @@ private:
|
||||
using PermutationHandleType =
|
||||
vtkm::cont::ArrayHandlePermutation<KeyHandleType, ValueHandleType>;
|
||||
|
||||
using ComponentType = typename vtkm::VecTraits<ValueType>::ComponentType;
|
||||
vtkm::cont::ArrayHandle<ValueType> input;
|
||||
using Portal = typename vtkm::cont::ArrayHandle<ValueType>::PortalControl;
|
||||
input.Allocate(length);
|
||||
Portal inputPortal = input.GetPortalControl();
|
||||
for (vtkm::Id i = 0; i < length; ++i)
|
||||
{
|
||||
inputPortal.Set(i, ValueType(ComponentType(i)));
|
||||
}
|
||||
SetPortal(input.WritePortal());
|
||||
|
||||
ValueHandleType values;
|
||||
values.Allocate(length * 2);
|
||||
@ -1274,13 +1261,7 @@ private:
|
||||
std::cout << std::endl;
|
||||
|
||||
//verify that the control portal works
|
||||
for (vtkm::Id i = 0; i < length; ++i)
|
||||
{
|
||||
const ValueType result_v = permutation.GetPortalConstControl().Get(i);
|
||||
const ValueType correct_value = ValueType(ComponentType(i));
|
||||
VTKM_TEST_ASSERT(test_equal(result_v, correct_value),
|
||||
"Permutation Handle Failed As Output");
|
||||
}
|
||||
CheckPortal(permutation.ReadPortal());
|
||||
}
|
||||
};
|
||||
|
||||
@ -1294,15 +1275,9 @@ private:
|
||||
using ValueHandleType = vtkm::cont::ArrayHandle<ValueType>;
|
||||
using ViewHandleType = vtkm::cont::ArrayHandleView<ValueHandleType>;
|
||||
|
||||
using ComponentType = typename vtkm::VecTraits<ValueType>::ComponentType;
|
||||
vtkm::cont::ArrayHandle<ValueType> input;
|
||||
using Portal = typename vtkm::cont::ArrayHandle<ValueType>::PortalControl;
|
||||
input.Allocate(length);
|
||||
Portal inputPortal = input.GetPortalControl();
|
||||
for (vtkm::Id i = 0; i < length; ++i)
|
||||
{
|
||||
inputPortal.Set(i, ValueType(ComponentType(i)));
|
||||
}
|
||||
SetPortal(input.WritePortal());
|
||||
|
||||
ValueHandleType values;
|
||||
values.Allocate(length * 2);
|
||||
@ -1315,13 +1290,7 @@ private:
|
||||
std::cout << std::endl;
|
||||
|
||||
//verify that the control portal works
|
||||
for (vtkm::Id i = 0; i < length; ++i)
|
||||
{
|
||||
const ValueType result_v = view.GetPortalConstControl().Get(i);
|
||||
const ValueType correct_value = ValueType(ComponentType(i));
|
||||
VTKM_TEST_ASSERT(test_equal(result_v, correct_value),
|
||||
"Permutation Handle Failed As Output");
|
||||
}
|
||||
CheckPortal(view.ReadPortal());
|
||||
}
|
||||
};
|
||||
|
||||
@ -1339,7 +1308,7 @@ private:
|
||||
|
||||
vtkm::cont::ArrayHandle<ValueType> input;
|
||||
input.Allocate(length);
|
||||
SetPortal(input.GetPortalControl());
|
||||
SetPortal(input.WritePortal());
|
||||
|
||||
vtkm::cont::ArrayHandle<ValueType> output;
|
||||
auto transformed = vtkm::cont::make_ArrayHandleTransform(output, functor, inverseFunctor);
|
||||
@ -1353,9 +1322,9 @@ private:
|
||||
//verify that the control portal works
|
||||
for (vtkm::Id i = 0; i < length; ++i)
|
||||
{
|
||||
const ValueType result_v = output.GetPortalConstControl().Get(i);
|
||||
const ValueType result_v = output.ReadPortal().Get(i);
|
||||
const ValueType correct_value = inverseFunctor(TestValue(i, ValueType()));
|
||||
const ValueType control_value = transformed.GetPortalConstControl().Get(i);
|
||||
const ValueType control_value = transformed.ReadPortal().Get(i);
|
||||
VTKM_TEST_ASSERT(test_equal(result_v, correct_value), "Transform Handle Failed");
|
||||
VTKM_TEST_ASSERT(test_equal(functor(result_v), control_value),
|
||||
"Transform Handle Control Failed");
|
||||
@ -1382,7 +1351,7 @@ private:
|
||||
|
||||
vtkm::cont::ArrayHandle<ValueType> input;
|
||||
input.Allocate(length);
|
||||
SetPortal(input.GetPortalControl());
|
||||
SetPortal(input.WritePortal());
|
||||
|
||||
vtkm::cont::ArrayHandle<ValueType> output;
|
||||
auto transformed =
|
||||
@ -1397,9 +1366,9 @@ private:
|
||||
//verify that the control portal works
|
||||
for (vtkm::Id i = 0; i < length; ++i)
|
||||
{
|
||||
const ValueType result_v = output.GetPortalConstControl().Get(i);
|
||||
const ValueType result_v = output.ReadPortal().Get(i);
|
||||
const ValueType correct_value = inverseFunctor(TestValue(i, ValueType()));
|
||||
const ValueType control_value = transformed.GetPortalConstControl().Get(i);
|
||||
const ValueType control_value = transformed.ReadPortal().Get(i);
|
||||
VTKM_TEST_ASSERT(test_equal(result_v, correct_value), "Transform Handle Failed");
|
||||
VTKM_TEST_ASSERT(test_equal(functor(result_v), control_value),
|
||||
"Transform Handle Control Failed");
|
||||
@ -1440,8 +1409,8 @@ private:
|
||||
//now the two arrays we have zipped should have data inside them
|
||||
for (int i = 0; i < ARRAY_SIZE; ++i)
|
||||
{
|
||||
const KeyType result_key = result_keys.GetPortalConstControl().Get(i);
|
||||
const ValueType result_value = result_values.GetPortalConstControl().Get(i);
|
||||
const KeyType result_key = result_keys.ReadPortal().Get(i);
|
||||
const ValueType result_value = result_values.ReadPortal().Get(i);
|
||||
|
||||
VTKM_TEST_ASSERT(
|
||||
test_equal(result_key, KeyType(static_cast<KeyComponentType>(ARRAY_SIZE - i))),
|
||||
@ -1459,7 +1428,7 @@ private:
|
||||
{
|
||||
vtkm::cont::ArrayHandle<ValueType> inputValues;
|
||||
inputValues.Allocate(ARRAY_SIZE);
|
||||
SetPortal(inputValues.GetPortalControl());
|
||||
SetPortal(inputValues.WritePortal());
|
||||
|
||||
vtkm::cont::ArrayHandle<ValueType> outputValues;
|
||||
outputValues.Allocate(ARRAY_SIZE);
|
||||
@ -1470,7 +1439,7 @@ private:
|
||||
vtkm::cont::printSummary_ArrayHandle(outputValues, std::cout);
|
||||
std::cout << std::endl;
|
||||
|
||||
CheckPortal(outputValues.GetPortalConstControl());
|
||||
CheckPortal(outputValues.ReadPortal());
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -77,7 +77,7 @@ bool TestArrayEqual(const vtkm::cont::ArrayHandle<ItemType>& result,
|
||||
const std::array<ItemType, N>& expected)
|
||||
{
|
||||
bool success = false;
|
||||
auto portal = result.GetPortalConstControl();
|
||||
auto portal = result.ReadPortal();
|
||||
vtkm::Id count = portal.GetNumberOfValues();
|
||||
|
||||
if (static_cast<std::size_t>(count) == N)
|
||||
|
@ -170,10 +170,10 @@ public:
|
||||
bool passTest = true;
|
||||
for (vtkm::Int32 i = 0; i < nTestingPoint; i++)
|
||||
{
|
||||
vtkm::Id workletIdx = nnId_Handle.GetPortalControl().Get(i);
|
||||
vtkm::FloatDefault workletDis = nnDis_Handle.GetPortalConstControl().Get(i);
|
||||
vtkm::Id bfworkletIdx = bfnnId_Handle.GetPortalControl().Get(i);
|
||||
vtkm::FloatDefault bfworkletDis = bfnnDis_Handle.GetPortalConstControl().Get(i);
|
||||
vtkm::Id workletIdx = nnId_Handle.WritePortal().Get(i);
|
||||
vtkm::FloatDefault workletDis = nnDis_Handle.ReadPortal().Get(i);
|
||||
vtkm::Id bfworkletIdx = bfnnId_Handle.WritePortal().Get(i);
|
||||
vtkm::FloatDefault bfworkletDis = bfnnDis_Handle.ReadPortal().Get(i);
|
||||
|
||||
if (workletIdx != bfworkletIdx)
|
||||
{
|
||||
|
@ -125,7 +125,7 @@ struct RandomArrayHandle
|
||||
|
||||
for (vtkm::Id i = 0; i < length; ++i)
|
||||
{
|
||||
a.GetPortalControl().Set(i, RandomValue<T>::Make(rangen));
|
||||
a.WritePortal().Set(i, RandomValue<T>::Make(rangen));
|
||||
}
|
||||
|
||||
return a;
|
||||
|
@ -118,10 +118,13 @@ private:
|
||||
|
||||
FloatArrayHandle output;
|
||||
Algorithm::Copy(transformed, output);
|
||||
auto portal = output.GetPortalConstControl();
|
||||
auto portal = output.ReadPortal();
|
||||
for (vtkm::Id i = 0; i < ARRAY_LEN; ++i)
|
||||
{
|
||||
VTKM_TEST_ASSERT(test_equal(portal.Get(i), i * i), "\tIncorrect result");
|
||||
vtkm::FloatDefault expected = TestValue(i, vtkm::FloatDefault{});
|
||||
expected = expected * expected;
|
||||
VTKM_TEST_ASSERT(
|
||||
test_equal(portal.Get(i), expected), "Expected ", expected, " but got ", portal.Get(i));
|
||||
}
|
||||
std::cout << "\tSuccess." << std::endl;
|
||||
|
||||
@ -167,11 +170,13 @@ private:
|
||||
|
||||
FloatArrayHandle output;
|
||||
Algorithm::Copy(transformed, output);
|
||||
auto portal = output.GetPortalConstControl();
|
||||
auto portal = output.ReadPortal();
|
||||
for (vtkm::Id i = 0; i < ARRAY_LEN; ++i)
|
||||
{
|
||||
VTKM_TEST_ASSERT(test_equal(portal.Get(i), i * this->Mul->GetMultiplicand()),
|
||||
"\tIncorrect result");
|
||||
vtkm::FloatDefault expected =
|
||||
TestValue(i, vtkm::FloatDefault{}) * this->Mul->GetMultiplicand();
|
||||
VTKM_TEST_ASSERT(
|
||||
test_equal(portal.Get(i), expected), "Expected ", expected, " but got ", portal.Get(i));
|
||||
}
|
||||
std::cout << "\tSuccess." << std::endl;
|
||||
|
||||
@ -194,11 +199,7 @@ public:
|
||||
{
|
||||
vtkm::cont::ArrayHandle<vtkm::FloatDefault> input;
|
||||
input.Allocate(ARRAY_LEN);
|
||||
auto portal = input.GetPortalControl();
|
||||
for (vtkm::Id i = 0; i < ARRAY_LEN; ++i)
|
||||
{
|
||||
portal.Set(i, vtkm::FloatDefault(i));
|
||||
}
|
||||
SetPortal(input.WritePortal());
|
||||
|
||||
TransformerHandle handle;
|
||||
|
||||
|
@ -43,7 +43,7 @@ void TryCopy()
|
||||
vtkm::cont::ArrayHandleIndex input(ARRAY_SIZE);
|
||||
vtkm::cont::ArrayHandle<ValueType> output;
|
||||
vtkm::cont::ArrayCopy(input, output);
|
||||
TestValues(input.GetPortalConstControl(), output.GetPortalConstControl());
|
||||
TestValues(input.ReadPortal(), output.ReadPortal());
|
||||
}
|
||||
|
||||
{ // basic -> basic
|
||||
@ -52,21 +52,21 @@ void TryCopy()
|
||||
vtkm::cont::ArrayCopy(source, input);
|
||||
vtkm::cont::ArrayHandle<ValueType> output;
|
||||
vtkm::cont::ArrayCopy(input, output);
|
||||
TestValues(input.GetPortalConstControl(), output.GetPortalConstControl());
|
||||
TestValues(input.ReadPortal(), output.ReadPortal());
|
||||
}
|
||||
|
||||
{ // implicit -> implicit (index)
|
||||
vtkm::cont::ArrayHandleIndex input(ARRAY_SIZE);
|
||||
vtkm::cont::ArrayHandleIndex output;
|
||||
vtkm::cont::ArrayCopy(input, output);
|
||||
TestValues(input.GetPortalConstControl(), output.GetPortalConstControl());
|
||||
TestValues(input.ReadPortal(), output.ReadPortal());
|
||||
}
|
||||
|
||||
{ // implicit -> implicit (constant)
|
||||
vtkm::cont::ArrayHandleConstant<int> input(41, ARRAY_SIZE);
|
||||
vtkm::cont::ArrayHandleConstant<int> output;
|
||||
vtkm::cont::ArrayCopy(input, output);
|
||||
TestValues(input.GetPortalConstControl(), output.GetPortalConstControl());
|
||||
TestValues(input.ReadPortal(), output.ReadPortal());
|
||||
}
|
||||
|
||||
{ // implicit -> implicit (base->derived, constant)
|
||||
@ -74,7 +74,7 @@ void TryCopy()
|
||||
vtkm::cont::make_ArrayHandleConstant<int>(41, ARRAY_SIZE);
|
||||
vtkm::cont::ArrayHandleConstant<int> output;
|
||||
vtkm::cont::ArrayCopy(input, output);
|
||||
TestValues(input.GetPortalConstControl(), output.GetPortalConstControl());
|
||||
TestValues(input.ReadPortal(), output.ReadPortal());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -23,7 +23,7 @@ template <typename T>
|
||||
VTKM_CONT void TestValues(const vtkm::cont::ArrayHandle<T>& ah,
|
||||
const std::initializer_list<T>& expected)
|
||||
{
|
||||
auto portal = ah.GetPortalConstControl();
|
||||
auto portal = ah.ReadPortal();
|
||||
VTKM_TEST_ASSERT(expected.size() == static_cast<size_t>(ah.GetNumberOfValues()));
|
||||
for (vtkm::Id i = 0; i < ah.GetNumberOfValues(); ++i)
|
||||
{
|
||||
|
@ -50,11 +50,9 @@ void ArrayHandleCPBasic(vtkm::cont::ArrayHandle<T> x,
|
||||
vtkm::Id idx1 = (i % (nx * ny)) / nx;
|
||||
vtkm::Id idx2 = i / (nx * ny);
|
||||
|
||||
val = vtkm::Vec<T, 3>(x.GetPortalConstControl().Get(idx0),
|
||||
y.GetPortalConstControl().Get(idx1),
|
||||
z.GetPortalConstControl().Get(idx2));
|
||||
VTKM_TEST_ASSERT(test_equal(cpArray.GetPortalConstControl().Get(i), val),
|
||||
"Wrong value in array");
|
||||
val =
|
||||
vtkm::Vec<T, 3>(x.ReadPortal().Get(idx0), y.ReadPortal().Get(idx1), z.ReadPortal().Get(idx2));
|
||||
VTKM_TEST_ASSERT(test_equal(cpArray.ReadPortal().Get(i), val), "Wrong value in array");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -76,7 +76,7 @@ void CheckArray(const vtkm::cont::ArrayHandle<ValueType, C>& outArray,
|
||||
ArrayHandleType arrayCopy;
|
||||
vtkm::cont::ArrayCopy(outArray, arrayCopy);
|
||||
|
||||
typename ArrayHandleType::PortalConstControl portal = arrayCopy.GetPortalConstControl();
|
||||
typename ArrayHandleType::ReadPortalType portal = arrayCopy.ReadPortal();
|
||||
using VTraits = vtkm::VecTraits<ValueType>;
|
||||
for (vtkm::Id index = 0; index < ARRAY_SIZE; index++)
|
||||
{
|
||||
@ -246,7 +246,7 @@ void TrySpecialArrays()
|
||||
|
||||
VTKM_TEST_ASSERT(compositeArray.GetNumberOfValues() == ARRAY_SIZE, "Wrong array size.");
|
||||
|
||||
auto compositePortal = compositeArray.GetPortalConstControl();
|
||||
auto compositePortal = compositeArray.ReadPortal();
|
||||
for (vtkm::Id index = 0; index < ARRAY_SIZE; index++)
|
||||
{
|
||||
VTKM_TEST_ASSERT(test_equal(compositePortal.Get(index), vtkm::Id2(index, 295)), "Bad value.");
|
||||
|
@ -38,7 +38,7 @@ void TestArrayHandleConcatenate()
|
||||
|
||||
for (vtkm::Id index = 0; index < array5.GetNumberOfValues(); index++)
|
||||
{
|
||||
std::cout << array5.GetPortalConstControl().Get(index) << std::endl;
|
||||
std::cout << array5.ReadPortal().Get(index) << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
@ -60,7 +60,7 @@ void TestConcatenateEmptyArray()
|
||||
ArrayConcat2 arrConc2(arrConc, arr3);
|
||||
|
||||
for (vtkm::Id i = 0; i < arrConc2.GetNumberOfValues(); i++)
|
||||
std::cout << arrConc2.GetPortalConstControl().Get(i) << std::endl;
|
||||
std::cout << arrConc2.ReadPortal().Get(i) << std::endl;
|
||||
}
|
||||
|
||||
} // namespace UnitTestArrayHandleIndexNamespace
|
||||
|
@ -79,7 +79,7 @@ struct TemplatedTests
|
||||
|
||||
using ArrayHandleType2 = vtkm::cont::ArrayHandle<ValueType, vtkm::cont::StorageTagCounting>;
|
||||
|
||||
using PortalType = typename ArrayHandleType::PortalConstControl;
|
||||
using PortalType = typename ArrayHandleType::ReadPortalType;
|
||||
|
||||
void operator()(const ValueType& startingValue, const ValueType& step)
|
||||
{
|
||||
@ -102,12 +102,12 @@ struct TemplatedTests
|
||||
ValueType properValue = startingValue;
|
||||
for (vtkm::Id index = 0; index < ARRAY_SIZE; index++)
|
||||
{
|
||||
VTKM_TEST_ASSERT(arrayConst.GetPortalConstControl().Get(index) == properValue,
|
||||
VTKM_TEST_ASSERT(arrayConst.ReadPortal().Get(index) == properValue,
|
||||
"Counting array using constructor has unexpected value.");
|
||||
VTKM_TEST_ASSERT(arrayMake.GetPortalConstControl().Get(index) == properValue,
|
||||
VTKM_TEST_ASSERT(arrayMake.ReadPortal().Get(index) == properValue,
|
||||
"Counting array using make has unexpected value.");
|
||||
|
||||
VTKM_TEST_ASSERT(arrayHandle.GetPortalConstControl().Get(index) == properValue,
|
||||
VTKM_TEST_ASSERT(arrayHandle.ReadPortal().Get(index) == properValue,
|
||||
"Counting array using raw array handle + tag has unexpected value.");
|
||||
properValue = properValue + step;
|
||||
}
|
||||
|
@ -318,7 +318,7 @@ struct DecoratorTests
|
||||
vtkm::cont::make_ArrayHandleDecorator(ARRAY_SIZE, InvertibleDecorImpl{}, ah1, ah2, ah3Copy);
|
||||
|
||||
{
|
||||
auto portalDecor = ahDecor.GetPortalConstControl();
|
||||
auto portalDecor = ahDecor.ReadPortal();
|
||||
VTKM_TEST_ASSERT(ahDecor.GetNumberOfValues() == ARRAY_SIZE);
|
||||
VTKM_TEST_ASSERT(portalDecor.GetNumberOfValues() == ARRAY_SIZE);
|
||||
VTKM_TEST_ASSERT(portalDecor.Get(0) == ValueType{ 23 });
|
||||
@ -338,7 +338,7 @@ struct DecoratorTests
|
||||
ahDecor);
|
||||
|
||||
{ // Accessing portal should give all 25s:
|
||||
auto portalDecor = ahDecor.GetPortalConstControl();
|
||||
auto portalDecor = ahDecor.ReadPortal();
|
||||
VTKM_TEST_ASSERT(ahDecor.GetNumberOfValues() == ARRAY_SIZE);
|
||||
VTKM_TEST_ASSERT(portalDecor.GetNumberOfValues() == ARRAY_SIZE);
|
||||
VTKM_TEST_ASSERT(portalDecor.Get(0) == ValueType{ 25 });
|
||||
@ -354,7 +354,7 @@ struct DecoratorTests
|
||||
}
|
||||
|
||||
{ // ah3Copy should have updated values:
|
||||
auto portalAH3Copy = ah3Copy.GetPortalConstControl();
|
||||
auto portalAH3Copy = ah3Copy.ReadPortal();
|
||||
VTKM_TEST_ASSERT(ahDecor.GetNumberOfValues() == ARRAY_SIZE);
|
||||
VTKM_TEST_ASSERT(portalAH3Copy.GetNumberOfValues() == ARRAY_SIZE);
|
||||
VTKM_TEST_ASSERT(portalAH3Copy.Get(0) == ValueType{ 15 });
|
||||
@ -383,9 +383,9 @@ struct DecoratorTests
|
||||
auto decorArray = vtkm::cont::make_ArrayHandleDecorator(ARRAY_SIZE, impl, ahCount, ahConst);
|
||||
|
||||
{
|
||||
auto decorPortal = decorArray.GetPortalConstControl();
|
||||
auto countPortal = ahCount.GetPortalConstControl();
|
||||
auto constPortal = ahConst.GetPortalConstControl();
|
||||
auto decorPortal = decorArray.ReadPortal();
|
||||
auto countPortal = ahCount.ReadPortal();
|
||||
auto constPortal = ahConst.ReadPortal();
|
||||
for (vtkm::Id i = 0; i < ARRAY_SIZE; ++i)
|
||||
{
|
||||
VTKM_TEST_ASSERT(decorPortal.Get(i) == op(countPortal.Get(i), constPortal.Get(i)));
|
||||
@ -395,9 +395,9 @@ struct DecoratorTests
|
||||
vtkm::cont::ArrayHandle<ValueType> copiedInExec;
|
||||
vtkm::cont::ArrayCopy(decorArray, copiedInExec);
|
||||
{
|
||||
auto copiedPortal = copiedInExec.GetPortalConstControl();
|
||||
auto countPortal = ahCount.GetPortalConstControl();
|
||||
auto constPortal = ahConst.GetPortalConstControl();
|
||||
auto copiedPortal = copiedInExec.ReadPortal();
|
||||
auto countPortal = ahCount.ReadPortal();
|
||||
auto constPortal = ahConst.ReadPortal();
|
||||
for (vtkm::Id i = 0; i < ARRAY_SIZE; ++i)
|
||||
{
|
||||
VTKM_TEST_ASSERT(copiedPortal.Get(i) == op(countPortal.Get(i), constPortal.Get(i)));
|
||||
@ -425,8 +425,8 @@ struct DecoratorTests
|
||||
ARRAY_SIZE, ScanExtendedToNumIndicesDecorImpl<ValueType>{}, scan);
|
||||
|
||||
{
|
||||
auto origPortal = numIndicesOrig.GetPortalConstControl();
|
||||
auto decorPortal = numIndicesDecor.GetPortalConstControl();
|
||||
auto origPortal = numIndicesOrig.ReadPortal();
|
||||
auto decorPortal = numIndicesDecor.ReadPortal();
|
||||
VTKM_STATIC_ASSERT(VTKM_PASS_COMMAS(
|
||||
std::is_same<decltype(origPortal.Get(0)), decltype(decorPortal.Get(0))>::value));
|
||||
VTKM_TEST_ASSERT(origPortal.GetNumberOfValues() == decorPortal.GetNumberOfValues());
|
||||
@ -450,7 +450,7 @@ struct DecoratorTests
|
||||
decor.Allocate(5);
|
||||
VTKM_TEST_ASSERT(decor.GetNumberOfValues() == 5);
|
||||
{
|
||||
auto decorPortal = decor.GetPortalControl();
|
||||
auto decorPortal = decor.WritePortal();
|
||||
decorPortal.Set(0, 13);
|
||||
decorPortal.Set(1, 8);
|
||||
decorPortal.Set(2, 43);
|
||||
@ -460,7 +460,7 @@ struct DecoratorTests
|
||||
|
||||
VTKM_TEST_ASSERT(a1.GetNumberOfValues() == 5);
|
||||
{
|
||||
auto a1Portal = a1.GetPortalConstControl();
|
||||
auto a1Portal = a1.ReadPortal();
|
||||
VTKM_TEST_ASSERT(test_equal(a1Portal.Get(0), 1));
|
||||
VTKM_TEST_ASSERT(test_equal(a1Portal.Get(1), 0));
|
||||
VTKM_TEST_ASSERT(test_equal(a1Portal.Get(2), 4));
|
||||
@ -470,7 +470,7 @@ struct DecoratorTests
|
||||
|
||||
VTKM_TEST_ASSERT(a2.GetNumberOfValues() == 5);
|
||||
{
|
||||
auto a2Portal = a2.GetPortalConstControl();
|
||||
auto a2Portal = a2.ReadPortal();
|
||||
VTKM_TEST_ASSERT(test_equal(a2Portal.Get(0), 3));
|
||||
VTKM_TEST_ASSERT(test_equal(a2Portal.Get(1), 8));
|
||||
VTKM_TEST_ASSERT(test_equal(a2Portal.Get(2), 3));
|
||||
@ -481,7 +481,7 @@ struct DecoratorTests
|
||||
decor.Shrink(3);
|
||||
VTKM_TEST_ASSERT(decor.GetNumberOfValues() == 3);
|
||||
{
|
||||
auto decorPortal = decor.GetPortalConstControl();
|
||||
auto decorPortal = decor.ReadPortal();
|
||||
VTKM_TEST_ASSERT(test_equal(decorPortal.Get(0), 13));
|
||||
VTKM_TEST_ASSERT(test_equal(decorPortal.Get(1), 8));
|
||||
VTKM_TEST_ASSERT(test_equal(decorPortal.Get(2), 43));
|
||||
@ -489,7 +489,7 @@ struct DecoratorTests
|
||||
|
||||
VTKM_TEST_ASSERT(a1.GetNumberOfValues() == 3);
|
||||
{
|
||||
auto a1Portal = a1.GetPortalConstControl();
|
||||
auto a1Portal = a1.ReadPortal();
|
||||
VTKM_TEST_ASSERT(test_equal(a1Portal.Get(0), 1));
|
||||
VTKM_TEST_ASSERT(test_equal(a1Portal.Get(1), 0));
|
||||
VTKM_TEST_ASSERT(test_equal(a1Portal.Get(2), 4));
|
||||
@ -497,7 +497,7 @@ struct DecoratorTests
|
||||
|
||||
VTKM_TEST_ASSERT(a2.GetNumberOfValues() == 3);
|
||||
{
|
||||
auto a2Portal = a2.GetPortalConstControl();
|
||||
auto a2Portal = a2.ReadPortal();
|
||||
VTKM_TEST_ASSERT(test_equal(a2Portal.Get(0), 3));
|
||||
VTKM_TEST_ASSERT(test_equal(a2Portal.Get(1), 8));
|
||||
VTKM_TEST_ASSERT(test_equal(a2Portal.Get(2), 3));
|
||||
|
@ -35,7 +35,7 @@ struct Test
|
||||
using Algorithm = vtkm::cont::DeviceAdapterAlgorithm<DeviceTag>;
|
||||
using Handle = vtkm::cont::ArrayHandle<ValueType>;
|
||||
using DiscardHandle = vtkm::cont::ArrayHandleDiscard<ValueType>;
|
||||
using OutputPortal = typename Handle::PortalControl;
|
||||
using OutputPortal = typename Handle::WritePortalType;
|
||||
using ReduceOp = vtkm::Add;
|
||||
|
||||
// Test discard arrays by using the ReduceByKey algorithm. Two regular arrays
|
||||
@ -68,7 +68,7 @@ struct Test
|
||||
Algorithm::SortByKey(keys, values);
|
||||
Algorithm::ReduceByKey(keys, values, output_keys, output_values, op);
|
||||
|
||||
OutputPortal outputs = output_values.GetPortalControl();
|
||||
OutputPortal outputs = output_values.WritePortal();
|
||||
|
||||
VTKM_TEST_ASSERT(outputs.GetNumberOfValues() == NUM_KEYS,
|
||||
"Unexpected number of output values from ReduceByKey.");
|
||||
|
@ -87,8 +87,8 @@ struct ExtractComponentTests
|
||||
using RefVectorType = typename ReferenceCompositeArray::ValueType;
|
||||
using Traits = vtkm::VecTraits<RefVectorType>;
|
||||
|
||||
auto testPortal = testArray.GetPortalConstControl();
|
||||
auto refPortal = this->RefComposite.GetPortalConstControl();
|
||||
auto testPortal = testArray.ReadPortal();
|
||||
auto refPortal = this->RefComposite.ReadPortal();
|
||||
|
||||
VTKM_TEST_ASSERT(testPortal.GetNumberOfValues() == refPortal.GetNumberOfValues(),
|
||||
"Number of values in read test output do not match input.");
|
||||
@ -137,14 +137,16 @@ struct ExtractComponentTests
|
||||
InputArray composite = this->BuildInputArray();
|
||||
ExtractArray extract(composite, component);
|
||||
|
||||
WriteTestFunctor<typename ExtractArray::PortalControl,
|
||||
typename ReferenceCompositeArray::PortalConstControl>
|
||||
functor(extract.GetPortalControl(), this->RefComposite.GetPortalConstControl(), component);
|
||||
{
|
||||
WriteTestFunctor<typename ExtractArray::WritePortalType,
|
||||
typename ReferenceCompositeArray::ReadPortalType>
|
||||
functor(extract.WritePortal(), this->RefComposite.ReadPortal(), component);
|
||||
|
||||
for (vtkm::Id i = 0; i < extract.GetNumberOfValues(); ++i)
|
||||
{
|
||||
functor(i);
|
||||
}
|
||||
}
|
||||
|
||||
this->ValidateWriteTestArray(composite, component);
|
||||
}
|
||||
@ -177,8 +179,8 @@ struct ExtractComponentTests
|
||||
using Traits = vtkm::VecTraits<VectorType>;
|
||||
|
||||
// Check that the indicated component is twice the reference value.
|
||||
auto refPortal = this->RefComposite.GetPortalConstControl();
|
||||
auto portal = testArray.GetPortalConstControl();
|
||||
auto refPortal = this->RefComposite.ReadPortal();
|
||||
auto portal = testArray.ReadPortal();
|
||||
|
||||
VTKM_TEST_ASSERT(portal.GetNumberOfValues() == refPortal.GetNumberOfValues(),
|
||||
"Number of values in write test output do not match input.");
|
||||
|
@ -75,7 +75,7 @@ struct CopyValue : public vtkm::worklet::WorkletMapField
|
||||
template <typename T, typename S>
|
||||
void verify_results(vtkm::cont::ArrayHandle<vtkm::Vec<T, 3>, S> const& handle)
|
||||
{
|
||||
auto portal = handle.GetPortalConstControl();
|
||||
auto portal = handle.ReadPortal();
|
||||
VTKM_TEST_ASSERT(portal.GetNumberOfValues() == static_cast<vtkm::Id>(correct_x_coords.size()),
|
||||
"coordinate portal size is incorrect");
|
||||
|
||||
|
@ -47,7 +47,7 @@ struct ImplicitTests
|
||||
//verify that the control portal works
|
||||
for (int i = 0; i < ARRAY_SIZE; ++i)
|
||||
{
|
||||
const ValueType v = implict.GetPortalConstControl().Get(i);
|
||||
const ValueType v = implict.ReadPortal().Get(i);
|
||||
const ValueType correct_value = functor(i);
|
||||
VTKM_TEST_ASSERT(v == correct_value, "Implicit Handle Failed");
|
||||
}
|
||||
|
@ -24,8 +24,7 @@ void TestArrayHandleIndex()
|
||||
|
||||
for (vtkm::Id index = 0; index < ARRAY_SIZE; index++)
|
||||
{
|
||||
VTKM_TEST_ASSERT(array.GetPortalConstControl().Get(index) == index,
|
||||
"Index array has unexpected value.");
|
||||
VTKM_TEST_ASSERT(array.ReadPortal().Get(index) == index, "Index array has unexpected value.");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -218,9 +218,9 @@ struct PermutationTests
|
||||
|
||||
VTKM_TEST_ASSERT(permutationArray.GetNumberOfValues() == ARRAY_SIZE,
|
||||
"Permutation array wrong size.");
|
||||
VTKM_TEST_ASSERT(permutationArray.GetPortalControl().GetNumberOfValues() == ARRAY_SIZE,
|
||||
VTKM_TEST_ASSERT(permutationArray.WritePortal().GetNumberOfValues() == ARRAY_SIZE,
|
||||
"Permutation portal wrong size.");
|
||||
VTKM_TEST_ASSERT(permutationArray.GetPortalConstControl().GetNumberOfValues() == ARRAY_SIZE,
|
||||
VTKM_TEST_ASSERT(permutationArray.ReadPortal().GetNumberOfValues() == ARRAY_SIZE,
|
||||
"Permutation portal wrong size.");
|
||||
|
||||
vtkm::cont::Token token;
|
||||
@ -233,15 +233,15 @@ struct PermutationTests
|
||||
Algorithm::Schedule(make_InPlacePermutationFunctor(permutationArray, Device(), token),
|
||||
ARRAY_SIZE);
|
||||
token.DetachFromAll();
|
||||
CheckInPlaceResult(valueArray.GetPortalControl());
|
||||
CheckInPlaceResult(valueArray.GetPortalConstControl());
|
||||
CheckInPlaceResult(valueArray.WritePortal());
|
||||
CheckInPlaceResult(valueArray.ReadPortal());
|
||||
|
||||
std::cout << "Try output operation" << std::endl;
|
||||
Algorithm::Schedule(make_OutputPermutationFunctor(permutationArray, Device(), token),
|
||||
ARRAY_SIZE);
|
||||
token.DetachFromAll();
|
||||
CheckOutputResult(valueArray.GetPortalConstControl());
|
||||
CheckOutputResult(valueArray.GetPortalControl());
|
||||
CheckOutputResult(valueArray.ReadPortal());
|
||||
CheckOutputResult(valueArray.WritePortal());
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -26,8 +26,7 @@ void TestArrayHandleReverseRead()
|
||||
|
||||
for (vtkm::Id index = 0; index < ARRAY_SIZE; index++)
|
||||
{
|
||||
VTKM_TEST_ASSERT(array.GetPortalConstControl().Get(index) == index,
|
||||
"Index array has unexpected value.");
|
||||
VTKM_TEST_ASSERT(array.ReadPortal().Get(index) == index, "Index array has unexpected value.");
|
||||
}
|
||||
|
||||
vtkm::cont::ArrayHandleReverse<vtkm::cont::ArrayHandleIndex> reverse =
|
||||
@ -35,8 +34,7 @@ void TestArrayHandleReverseRead()
|
||||
|
||||
for (vtkm::Id index = 0; index < ARRAY_SIZE; index++)
|
||||
{
|
||||
VTKM_TEST_ASSERT(reverse.GetPortalConstControl().Get(index) ==
|
||||
array.GetPortalConstControl().Get(9 - index),
|
||||
VTKM_TEST_ASSERT(reverse.ReadPortal().Get(index) == array.ReadPortal().Get(9 - index),
|
||||
"ArrayHandleReverse does not reverse array");
|
||||
}
|
||||
}
|
||||
@ -51,12 +49,12 @@ void TestArrayHandleReverseWrite()
|
||||
|
||||
for (vtkm::Id index = 0; index < ARRAY_SIZE; index++)
|
||||
{
|
||||
reverse.GetPortalControl().Set(index, index);
|
||||
reverse.WritePortal().Set(index, index);
|
||||
}
|
||||
|
||||
for (vtkm::Id index = 0; index < ARRAY_SIZE; index++)
|
||||
{
|
||||
VTKM_TEST_ASSERT(handle.GetPortalConstControl().Get(index) == (9 - index),
|
||||
VTKM_TEST_ASSERT(handle.ReadPortal().Get(index) == (9 - index),
|
||||
"ArrayHandleReverse does not reverse array");
|
||||
}
|
||||
}
|
||||
@ -80,8 +78,7 @@ void TestArrayHandleReverseScanInclusiveByKey()
|
||||
vtkm::cont::make_ArrayHandleReverse(vtkm::cont::make_ArrayHandle(expected, 10));
|
||||
for (int i = 0; i < 10; i++)
|
||||
{
|
||||
VTKM_TEST_ASSERT(output.GetPortalConstControl().Get(i) ==
|
||||
expected_reversed.GetPortalConstControl().Get(i),
|
||||
VTKM_TEST_ASSERT(output.ReadPortal().Get(i) == expected_reversed.ReadPortal().Get(i),
|
||||
"ArrayHandleReverse as output of ScanInclusiveByKey");
|
||||
}
|
||||
std::cout << std::endl;
|
||||
|
@ -121,8 +121,8 @@ struct SwizzleTests
|
||||
VTKM_TEST_ASSERT(testArray.GetNumberOfValues() == this->RefArray.GetNumberOfValues(),
|
||||
"Number of values incorrect in Read test.");
|
||||
|
||||
auto refPortal = this->RefArray.GetPortalConstControl();
|
||||
auto testPortal = testArray.GetPortalConstControl();
|
||||
auto refPortal = this->RefArray.ReadPortal();
|
||||
auto testPortal = testArray.ReadPortal();
|
||||
|
||||
SwizzleVectorType refVecSwizzle(vtkm::TypeTraits<SwizzleVectorType>::ZeroInitialization());
|
||||
for (vtkm::Id i = 0; i < testArray.GetNumberOfValues(); ++i)
|
||||
@ -178,13 +178,15 @@ struct SwizzleTests
|
||||
SwizzleInputArrayType input = this->BuildSwizzleInputArray();
|
||||
auto swizzle = vtkm::cont::make_ArrayHandleSwizzle(input, map);
|
||||
|
||||
WriteTestFunctor<typename SwizzleArrayType<OutSize>::PortalControl> functor(
|
||||
swizzle.GetPortalControl());
|
||||
{
|
||||
WriteTestFunctor<typename SwizzleArrayType<OutSize>::WritePortalType> functor(
|
||||
swizzle.WritePortal());
|
||||
|
||||
for (vtkm::Id i = 0; i < swizzle.GetNumberOfValues(); ++i)
|
||||
{
|
||||
functor(i);
|
||||
}
|
||||
}
|
||||
|
||||
this->ValidateWriteTestArray(input, map);
|
||||
}
|
||||
@ -203,8 +205,8 @@ struct SwizzleTests
|
||||
template <vtkm::IdComponent OutSize>
|
||||
void ValidateWriteTestArray(SwizzleInputArrayType testArray, const MapType<OutSize>& map) const
|
||||
{
|
||||
auto refPortal = this->RefArray.GetPortalConstControl();
|
||||
auto portal = testArray.GetPortalConstControl();
|
||||
auto refPortal = this->RefArray.ReadPortal();
|
||||
auto portal = testArray.ReadPortal();
|
||||
|
||||
VTKM_TEST_ASSERT(portal.GetNumberOfValues() == refPortal.GetNumberOfValues(),
|
||||
"Number of values in write test output do not match input.");
|
||||
|
@ -140,7 +140,7 @@ template <typename Storage>
|
||||
void ThreadsCheckArray(vtkm::cont::ArrayHandle<ValueType, Storage> array)
|
||||
{
|
||||
std::cout << " Check array in control environment" << std::endl;
|
||||
auto portal = array.GetPortalConstControl();
|
||||
auto portal = array.ReadPortal();
|
||||
VTKM_TEST_ASSERT(portal.GetNumberOfValues() == ARRAY_SIZE);
|
||||
|
||||
std::cout << " Starting threads to check" << std::endl;
|
||||
@ -177,7 +177,7 @@ void ThreadsDecrementArray(vtkm::cont::ArrayHandle<ValueType, Storage> array)
|
||||
VTKM_TEST_ASSERT(futureResult, "Failure in DecrementArray");
|
||||
}
|
||||
|
||||
CheckPortal(array.GetPortalConstControl());
|
||||
CheckPortal(array.ReadPortal());
|
||||
}
|
||||
|
||||
template <typename Storage>
|
||||
|
@ -78,14 +78,14 @@ VTKM_CONT void CheckControlPortals(const OriginalArrayHandleType& originalArray,
|
||||
{
|
||||
std::cout << " Verify that the control portal works" << std::endl;
|
||||
|
||||
using OriginalPortalType = typename OriginalArrayHandleType::PortalConstControl;
|
||||
using TransformedPortalType = typename TransformedArrayHandleType::PortalConstControl;
|
||||
using OriginalPortalType = typename OriginalArrayHandleType::ReadPortalType;
|
||||
using TransformedPortalType = typename TransformedArrayHandleType::ReadPortalType;
|
||||
|
||||
VTKM_TEST_ASSERT(originalArray.GetNumberOfValues() == transformedArray.GetNumberOfValues(),
|
||||
"Number of values in transformed array incorrect.");
|
||||
|
||||
OriginalPortalType originalPortal = originalArray.GetPortalConstControl();
|
||||
TransformedPortalType transformedPortal = transformedArray.GetPortalConstControl();
|
||||
OriginalPortalType originalPortal = originalArray.ReadPortal();
|
||||
TransformedPortalType transformedPortal = transformedArray.ReadPortal();
|
||||
|
||||
VTKM_TEST_ASSERT(originalPortal.GetNumberOfValues() == transformedPortal.GetNumberOfValues(),
|
||||
"Number of values in transformed portal incorrect.");
|
||||
@ -139,10 +139,10 @@ struct TransformTests
|
||||
vtkm::cont::ArrayHandle<InputValueType> input;
|
||||
TransformHandle thandle(input, functor);
|
||||
|
||||
using Portal = typename vtkm::cont::ArrayHandle<InputValueType>::PortalControl;
|
||||
using Portal = typename vtkm::cont::ArrayHandle<InputValueType>::WritePortalType;
|
||||
input.Allocate(ARRAY_SIZE);
|
||||
{
|
||||
Portal portal = input.GetPortalControl();
|
||||
Portal portal = input.WritePortal();
|
||||
for (vtkm::Id index = 0; index < ARRAY_SIZE; ++index)
|
||||
{
|
||||
portal.Set(index, TestValue(index, InputValueType()));
|
||||
@ -159,7 +159,7 @@ struct TransformTests
|
||||
|
||||
std::cout << "Modify array handle values to ensure transform gets updated" << std::endl;
|
||||
{
|
||||
Portal portal = input.GetPortalControl();
|
||||
Portal portal = input.WritePortal();
|
||||
for (vtkm::Id index = 0; index < ARRAY_SIZE; ++index)
|
||||
{
|
||||
portal.Set(index, TestValue(index * index, InputValueType()));
|
||||
|
@ -32,7 +32,7 @@ void TestArrayHandleUniformPointCoordinates()
|
||||
"Array computed wrong number of points.");
|
||||
|
||||
std::cout << "Getting array portal." << std::endl;
|
||||
vtkm::internal::ArrayPortalUniformPointCoordinates portal = arrayHandle.GetPortalConstControl();
|
||||
vtkm::internal::ArrayPortalUniformPointCoordinates portal = arrayHandle.ReadPortal();
|
||||
VTKM_TEST_ASSERT(portal.GetNumberOfValues() == NUM_POINTS, "Portal has wrong number of points.");
|
||||
VTKM_TEST_ASSERT(portal.GetRange3() == DIMENSIONS, "Portal range is wrong.");
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user