Implement host span. (#5459)
This commit is contained in:
parent
459b175dc6
commit
86beb68ce8
@ -105,6 +105,9 @@ class HostDeviceVector {
|
|||||||
const T* DevicePointer() const { return ConstDevicePointer(); }
|
const T* DevicePointer() const { return ConstDevicePointer(); }
|
||||||
|
|
||||||
T* HostPointer() { return HostVector().data(); }
|
T* HostPointer() { return HostVector().data(); }
|
||||||
|
common::Span<T> HostSpan() { return common::Span<T>{HostVector()}; }
|
||||||
|
common::Span<T const> HostSpan() const { return common::Span<T const>{HostVector()}; }
|
||||||
|
common::Span<T const> ConstHostSpan() const { return HostSpan(); }
|
||||||
const T* ConstHostPointer() const { return ConstHostVector().data(); }
|
const T* ConstHostPointer() const { return ConstHostVector().data(); }
|
||||||
const T* HostPointer() const { return ConstHostPointer(); }
|
const T* HostPointer() const { return ConstHostPointer(); }
|
||||||
|
|
||||||
|
|||||||
@ -165,6 +165,15 @@ TEST(HostDeviceVector, Span) {
|
|||||||
auto const_span = vec.ConstDeviceSpan();
|
auto const_span = vec.ConstDeviceSpan();
|
||||||
ASSERT_EQ(vec.Size(), const_span.size());
|
ASSERT_EQ(vec.Size(), const_span.size());
|
||||||
ASSERT_EQ(vec.ConstDevicePointer(), const_span.data());
|
ASSERT_EQ(vec.ConstDevicePointer(), const_span.data());
|
||||||
|
|
||||||
|
auto h_span = vec.ConstHostSpan();
|
||||||
|
ASSERT_TRUE(vec.HostCanRead());
|
||||||
|
ASSERT_FALSE(vec.HostCanWrite());
|
||||||
|
ASSERT_EQ(h_span.size(), vec.Size());
|
||||||
|
ASSERT_EQ(h_span.data(), vec.ConstHostPointer());
|
||||||
|
|
||||||
|
h_span = vec.HostSpan();
|
||||||
|
ASSERT_TRUE(vec.HostCanWrite());
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(HostDeviceVector, MGPU_Basic) {
|
TEST(HostDeviceVector, MGPU_Basic) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user