Back out of passing a token when transfering virtual objects

It is questionable whether there is a point to having a token object
when transfering a virtual object to a device (since there is a handle
object that is managing it anyway). Back out of passing the token all
the way down unless there is an actual need for that.
This commit is contained in:
Kenneth Moreland 2020-01-23 12:12:29 -07:00
parent 7aa043b0da
commit 098e0fed16
4 changed files with 11 additions and 23 deletions

@ -134,7 +134,7 @@ public:
/// 3. Reset or ReleaseResources is called
///
VTKM_CONT const VirtualBaseType* PrepareForExecution(vtkm::cont::DeviceAdapterId deviceId,
vtkm::cont::Token& token) const
vtkm::cont::Token&) const
{
const bool validId = this->Internals->DeviceIdIsValid(deviceId);
if (!validId)
@ -143,8 +143,7 @@ public:
return nullptr;
}
return static_cast<const VirtualBaseType*>(
this->Internals->PrepareForExecution(deviceId, token));
return static_cast<const VirtualBaseType*>(this->Internals->PrepareForExecution(deviceId));
}
VTKM_CONT

@ -14,7 +14,6 @@
#include <vtkm/VirtualObjectBase.h>
#include <vtkm/cont/DeviceAdapterTag.h>
#include <vtkm/cont/Token.h>
#include <array>
#include <memory>
@ -46,8 +45,7 @@ struct VirtualObjectTransfer
/// PrepareForExecution). If the \c updateData flag is false and the object was already
/// transferred previously, the previously created object is returned.
///
VTKM_CONT const VirtualDerivedType* PrepareForExecution(bool updateData,
vtkm::cont::Token& token);
VTKM_CONT const VirtualDerivedType* PrepareForExecution(bool updateData);
/// \brief Frees up any resources in the execution environment.
///
@ -64,8 +62,7 @@ public:
VTKM_CONT virtual ~TransferInterface();
VTKM_CONT virtual const vtkm::VirtualObjectBase* PrepareForExecution(
vtkm::Id hostModifiedCount,
vtkm::cont::Token& token) = 0;
vtkm::Id hostModifiedCount) = 0;
VTKM_CONT virtual void ReleaseResources() = 0;
};
@ -79,12 +76,10 @@ public:
{
}
VTKM_CONT const vtkm::VirtualObjectBase* PrepareForExecution(vtkm::Id hostModifiedCount,
vtkm::cont::Token& token) override
VTKM_CONT const vtkm::VirtualObjectBase* PrepareForExecution(vtkm::Id hostModifiedCount) override
{
bool updateData = (this->LastModifiedCount != hostModifiedCount);
const vtkm::VirtualObjectBase* executionObject =
this->Transfer.PrepareForExecution(updateData, token);
const vtkm::VirtualObjectBase* executionObject = this->Transfer.PrepareForExecution(updateData);
this->LastModifiedCount = hostModifiedCount;
return executionObject;
}
@ -144,13 +139,12 @@ struct VTKM_CONT_EXPORT TransferState
}
}
const vtkm::VirtualObjectBase* PrepareForExecution(vtkm::cont::DeviceAdapterId deviceId,
vtkm::cont::Token& token) const
const vtkm::VirtualObjectBase* PrepareForExecution(vtkm::cont::DeviceAdapterId deviceId) const
{
//make sure the device is up to date
auto index = static_cast<std::size_t>(deviceId.GetValue());
vtkm::Id count = this->HostPointer->GetModifiedCount();
return this->DeviceTransferState[index]->PrepareForExecution(count, token);
return this->DeviceTransferState[index]->PrepareForExecution(count);
}
vtkm::VirtualObjectBase* HostPtr() const { return this->HostPointer; }

@ -13,8 +13,6 @@
#include <vtkm/StaticAssert.h>
#include <vtkm/VirtualObjectBase.h>
#include <vtkm/cont/Token.h>
namespace vtkm
{
namespace cont
@ -30,8 +28,7 @@ struct VirtualObjectTransferShareWithControl
{
}
VTKM_CONT const VirtualDerivedType* PrepareForExecution(bool vtkmNotUsed(updateData),
vtkm::cont::Token&)
VTKM_CONT const VirtualDerivedType* PrepareForExecution(bool vtkmNotUsed(updateData))
{
return this->VirtualObject;
}

@ -627,9 +627,7 @@ private:
target.Value = 5;
Transfer transfer(&target);
vtkm::cont::Token transferToken;
const BaseType* base =
static_cast<const BaseType*>(transfer.PrepareForExecution(false, transferToken));
const BaseType* base = static_cast<const BaseType*>(transfer.PrepareForExecution(false));
{
vtkm::cont::Token token;
@ -640,7 +638,7 @@ private:
{
vtkm::cont::Token token;
target.Value = 10;
base = static_cast<const BaseType*>(transfer.PrepareForExecution(true, token));
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");