Skip to content

Commit 0037377

Browse files
committed
Re-enable device tests for getter
1 parent 267c723 commit 0037377

File tree

1 file changed

+47
-51
lines changed

1 file changed

+47
-51
lines changed

tests/cpp_tests/test_getter.cu

Lines changed: 47 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
#include "core/utils.cuh"
1313

1414
TEST(AllGetterTest, AllGetterHostTest) {
15-
// Extract types from TypeParam (std::vector<FMB> or thrust::device_vector<FMB>)
1615
constexpr uint32_t num_fmbs = 40;
1716
FMBScene<MemoryLocation::HOST> scene(num_fmbs);
1817

@@ -49,53 +48,50 @@ TEST(AllGetterTest, AllGetterHostTest) {
4948
}
5049
}
5150

52-
// TODO smoke test getter on device
53-
//__global__ void test_get_metaballs_kernel_device(const FMBScene* fmbs, const Pose* extr,
54-
// const Ray* rays, int num_rays, int* out_sizes) {
55-
// int idx = threadIdx.x + blockIdx.x * blockDim.x;
56-
// AllGetter getter(*fmbs, *extr);
57-
// const auto& fmbs_returned = getter.get_metaballs(rays[idx]);
58-
// out_sizes[idx] = static_cast<int>(fmbs_returned.size());
59-
//}
60-
//
61-
// TEST(AllGetterTest, AllGetterHostTest) {
62-
// // Extract types from TypeParam (std::vector<FMB> or thrust::device_vector<FMB>)
63-
// constexpr uint32_t num_fmbs = 40;
64-
// FMBScene<MemoryLocation::HOST> host_scene(num_fmbs);
65-
// FMBScene<MemoryLocation::DEVICE> device_scene(num_fmbs);
66-
//
67-
// AllGetter getter(scene, Pose());
68-
//
69-
// // Create test rays
70-
// std::vector<Ray> rays = {
71-
// Ray{Vec3D{0.0f, 0.0f, 0.0f}, Vec3D{1.0f, 0.0f, 0.0f}},
72-
// Ray{Vec3D{1.0f, 1.0f, 1.0f}, Vec3D{0.0f, 1.0f, 0.0f}},
73-
// Ray{Vec3D{-1.0f, -1.0f, -1.0f}, Vec3D{0.0f, 0.0f, 1.0f}},
74-
// Ray{Vec3D{2.5f, -3.1f, 0.2f}, Vec3D{-0.5f, 0.6f, 0.0f}},
75-
// Ray{Vec3D{4.4f, 0.0f, -0.9f}, Vec3D{0.3f, -0.2f, 1.0f}},
76-
// Ray{Vec3D{5.0f, 2.2f, 1.1f}, Vec3D{-1.0f, 2.0f, 0.2f}},
77-
// Ray{Vec3D{0.0f, 7.0f, 6.0f}, Vec3D{0.0f, -1.0f, -1.0f}},
78-
// Ray{Vec3D{-2.0f, 0.0f, 0.0f}, Vec3D{0.2f, 1.1f, 0.7f}},
79-
// Ray{Vec3D{9.1f, -0.3f, 2.7f}, Vec3D{-0.3f, 0.1f, 0.0f}},
80-
// Ray{Vec3D{1.2f, 8.8f, -4.5f}, Vec3D{1.0f, 0.0f, 1.0f}},
81-
// };
82-
//
83-
// // Test on GPU for device containers
84-
// int num_rays = static_cast<int>(rays.size());
85-
// thrust::device_vector<int> device_sizes(num_rays);
86-
//
87-
// // Launch kernel that constructs getter and calls get_metaballs on the device
88-
// test_get_metaballs_kernel_device
89-
// <<<1, num_rays>>>(device_scene, d_extr, d_rays, num_rays, d_sizes);
90-
// CUDA_CHECK(cudaGetLastError());
91-
// CUDA_CHECK(cudaDeviceSynchronize());
92-
//
93-
// thrust::host_vector<int> host_sizes = device_vector;
94-
//
95-
// // Verify that get_metaballs returns the correct size for all rays
96-
// for (int i = 0; i < num_rays; ++i) {
97-
// EXPECT_EQ(static_cast<size_t>(host_sizes[i]), scene.size())
98-
// << "Device get_metaballs returned correct size for ray " << i;
99-
// }
100-
//
101-
//}
51+
__global__ void test_get_metaballs_kernel_device(const AllGetter<MemoryLocation::DEVICE> fmb_getter,
52+
const Ray* rays, int num_rays, int* out_sizes) {
53+
int idx = threadIdx.x + blockIdx.x * blockDim.x;
54+
const auto& fmbs_returned = fmb_getter.get_metaballs(rays[idx]);
55+
out_sizes[idx] = static_cast<int>(fmbs_returned.size());
56+
}
57+
58+
TEST(AllGetterTest, AllGetterDeviceTest) {
59+
constexpr uint32_t num_fmbs = 40;
60+
FMBScene<MemoryLocation::DEVICE> device_scene(num_fmbs);
61+
Pose extr;
62+
63+
AllGetter<MemoryLocation::DEVICE> getter(device_scene, extr);
64+
65+
// Create test rays
66+
std::vector<Ray> rays = {
67+
Ray{Vec3D{0.0f, 0.0f, 0.0f}, Vec3D{1.0f, 0.0f, 0.0f}},
68+
Ray{Vec3D{1.0f, 1.0f, 1.0f}, Vec3D{0.0f, 1.0f, 0.0f}},
69+
Ray{Vec3D{-1.0f, -1.0f, -1.0f}, Vec3D{0.0f, 0.0f, 1.0f}},
70+
Ray{Vec3D{2.5f, -3.1f, 0.2f}, Vec3D{-0.5f, 0.6f, 0.0f}},
71+
Ray{Vec3D{4.4f, 0.0f, -0.9f}, Vec3D{0.3f, -0.2f, 1.0f}},
72+
Ray{Vec3D{5.0f, 2.2f, 1.1f}, Vec3D{-1.0f, 2.0f, 0.2f}},
73+
Ray{Vec3D{0.0f, 7.0f, 6.0f}, Vec3D{0.0f, -1.0f, -1.0f}},
74+
Ray{Vec3D{-2.0f, 0.0f, 0.0f}, Vec3D{0.2f, 1.1f, 0.7f}},
75+
Ray{Vec3D{9.1f, -0.3f, 2.7f}, Vec3D{-0.3f, 0.1f, 0.0f}},
76+
Ray{Vec3D{1.2f, 8.8f, -4.5f}, Vec3D{1.0f, 0.0f, 1.0f}},
77+
};
78+
79+
// Test on GPU for device containers
80+
int num_rays = static_cast<int>(rays.size());
81+
thrust::device_vector<int> device_sizes(num_rays);
82+
83+
// Launch kernel that constructs getter and calls get_metaballs on the device
84+
test_get_metaballs_kernel_device<<<1, num_rays>>>(
85+
getter, thrust::raw_pointer_cast(rays.data()), num_rays,
86+
thrust::raw_pointer_cast(device_sizes.data()));
87+
CUDA_CHECK(cudaGetLastError());
88+
CUDA_CHECK(cudaDeviceSynchronize());
89+
90+
thrust::host_vector<int> host_sizes = device_sizes;
91+
92+
// Verify that get_metaballs returns the correct size for all rays
93+
for (int i = 0; i < num_rays; ++i) {
94+
EXPECT_EQ(static_cast<size_t>(host_sizes[i]), device_scene.size())
95+
<< "Device get_metaballs returned correct size for ray " << i;
96+
}
97+
}

0 commit comments

Comments
 (0)