Working conv2d forward

This commit is contained in:
2024-03-09 21:08:16 +01:00
parent e51aabc2f2
commit a3d85a10fc
3 changed files with 48 additions and 26 deletions

View File

@@ -5,7 +5,13 @@
#include "conv2d.cuh"
TEST(Conv2dTest, SimpleExample) {
class Conv2dTest : public::testing::Test {
protected:
cudaError_t cudaStatus;
};
TEST_F(Conv2dTest, SimpleExample) {
int inputSize = 4;
int inputChannels = 1;
@@ -38,18 +44,38 @@ TEST(Conv2dTest, SimpleExample) {
1.0f, 2.0f, 3.0f, 4.0f,
};
float* d_input;
float* d_output;
conv2d.setKernels(kernels);
std::vector<float> output(outputSize * outputSize * numFilters);
// Allocate device memory
cudaStatus = cudaMalloc((void**)&d_input, sizeof(float) * inputSize * inputSize * inputChannels);
EXPECT_EQ(cudaStatus, cudaSuccess);
conv2d.host_conv(input.data(), output.data());
cudaStatus = cudaMalloc((void**)&d_output, sizeof(float) * outputSize * outputSize * numFilters);
EXPECT_EQ(cudaStatus, cudaSuccess);
// // Copy input to device
cudaStatus = cudaMemcpy(
d_input, input.data(), sizeof(float) * input.size(), cudaMemcpyHostToDevice
);
EXPECT_EQ(cudaStatus, cudaSuccess);
conv2d.forward(d_input, d_output);
std::vector<float> expected = {
44.0f, 54.0f, 64.0f,
84.0f, 94.0f, 104.0f,
124.0f, 134.0f, 144.0f
};
};
std::vector<float> output(outputSize * outputSize * numFilters);
cudaStatus = cudaMemcpy(
output.data(), d_output, sizeof(float) * output.size(),
cudaMemcpyDeviceToHost
);
EXPECT_EQ(cudaStatus, cudaSuccess);
for (int i = 0; i < output.size(); ++i) {
EXPECT_FLOAT_EQ(expected[i], output[i]);