minor TensorAccessor cleanup
This commit is contained in:
+3
-3
@@ -42,7 +42,7 @@ OIDN_NAMESPACE_BEGIN
|
||||
{
|
||||
if (layout != TensorLayout::x || dataType != DataTypeOf<T>::value)
|
||||
throw std::logic_error("incompatible tensor accessor");
|
||||
return TensorAccessor1D<T>(getPtr(), getPaddedX());
|
||||
return TensorAccessor1D<T>(getPtr(), getDesc());
|
||||
}
|
||||
|
||||
template<typename T, TensorLayout accessorLayout>
|
||||
@@ -50,7 +50,7 @@ OIDN_NAMESPACE_BEGIN
|
||||
{
|
||||
if (layout != accessorLayout || dataType != DataTypeOf<T>::value)
|
||||
throw std::logic_error("incompatible tensor accessor");
|
||||
return TensorAccessor3D<T, accessorLayout>(getPtr(), getPaddedC(), getH(), getW());
|
||||
return TensorAccessor3D<T, accessorLayout>(getPtr(), getDesc());
|
||||
}
|
||||
|
||||
template<typename T, TensorLayout accessorLayout>
|
||||
@@ -58,7 +58,7 @@ OIDN_NAMESPACE_BEGIN
|
||||
{
|
||||
if (layout != accessorLayout || dataType != DataTypeOf<T>::value)
|
||||
throw std::logic_error("incompatible tensor accessor");
|
||||
return TensorAccessor4D<T, accessorLayout>(getPtr(), getPaddedO(), getPaddedI(), getH(), getW());
|
||||
return TensorAccessor4D<T, accessorLayout>(getPtr(), getDesc());
|
||||
}
|
||||
|
||||
operator ispc::TensorAccessor1D();
|
||||
|
||||
+25
-9
@@ -3,7 +3,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "tensor_layout.h"
|
||||
#include "tensor_desc.h"
|
||||
#include "vec.h"
|
||||
|
||||
// ISPC forward declarations
|
||||
@@ -25,9 +25,12 @@ OIDN_NAMESPACE_BEGIN
|
||||
|
||||
TensorAccessor1D() = default;
|
||||
|
||||
oidn_host_device_inline TensorAccessor1D(oidn_global void* data, int X)
|
||||
oidn_host_device_inline TensorAccessor1D(oidn_global void* data, const TensorDesc& desc)
|
||||
: ptr(static_cast<oidn_global char*>(data)),
|
||||
X(X) {}
|
||||
X(desc.getPaddedX())
|
||||
{
|
||||
assert(desc.getRank() == 1);
|
||||
}
|
||||
|
||||
oidn_host_device_inline oidn_global T& operator ()(int x) const
|
||||
{
|
||||
@@ -44,9 +47,15 @@ OIDN_NAMESPACE_BEGIN
|
||||
|
||||
TensorAccessor3D() = default;
|
||||
|
||||
oidn_host_device_inline TensorAccessor3D(oidn_global void* data, int C, int H, int W)
|
||||
: getByteOffset(C, H, W),
|
||||
ptr(static_cast<oidn_global char*>(data)), C(C), H(H), W(W) {}
|
||||
oidn_host_device_inline TensorAccessor3D(oidn_global void* data, const TensorDesc& desc)
|
||||
: getByteOffset(desc.getPaddedC(), desc.getH(), desc.getW()),
|
||||
ptr(static_cast<oidn_global char*>(data)),
|
||||
C(desc.getPaddedC()),
|
||||
H(desc.getH()),
|
||||
W(desc.getW())
|
||||
{
|
||||
assert(desc.getRank() == 3);
|
||||
}
|
||||
|
||||
oidn_host_device_inline oidn_global T& operator ()(int c, int h, int w) const
|
||||
{
|
||||
@@ -77,9 +86,16 @@ OIDN_NAMESPACE_BEGIN
|
||||
|
||||
TensorAccessor4D() = default;
|
||||
|
||||
oidn_host_device_inline TensorAccessor4D(oidn_global void* data, int O, int I, int H, int W)
|
||||
: getByteOffset(O, I, H, W),
|
||||
ptr(static_cast<oidn_global char*>(data)), O(O), I(I), H(H), W(W) {}
|
||||
oidn_host_device_inline TensorAccessor4D(oidn_global void* data, const TensorDesc& desc)
|
||||
: getByteOffset(desc.getPaddedO(), desc.getPaddedI(), desc.getH(), desc.getW()),
|
||||
ptr(static_cast<oidn_global char*>(data)),
|
||||
O(desc.getPaddedO()),
|
||||
I(desc.getPaddedI()),
|
||||
H(desc.getH()),
|
||||
W(desc.getW())
|
||||
{
|
||||
assert(desc.getRank() == 4);
|
||||
}
|
||||
|
||||
oidn_host_device_inline oidn_global T& operator ()(int o, int i, int h, int w) const
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user