From 26cea9b12c930d4bd2d874cf099986d147e7185d Mon Sep 17 00:00:00 2001 From: LordMathis Date: Sun, 21 Apr 2024 22:56:55 +0200 Subject: [PATCH] Fix more cuda memcheck errors --- src/layers/dense.cu | 10 ++-------- test/layers/test_avg_pooling.cu | 1 - test/layers/test_concat.cu | 29 +++++++++++++++++++++++------ 3 files changed, 25 insertions(+), 15 deletions(-) diff --git a/src/layers/dense.cu b/src/layers/dense.cu index dae804d..80bd5b2 100644 --- a/src/layers/dense.cu +++ b/src/layers/dense.cu @@ -65,21 +65,15 @@ void Dense::initializeBiases() { float* Dense::forward(const float* d_input) { - // CUDANet::Utils::clear(d_output, outputSize); - - // CUDA_CHECK(cudaPeekAtLastError()); - - std::cout << "Dense::forward" << std::endl; - Kernels::mat_vec_mul<<>>( d_weights, d_input, d_output, inputSize, outputSize ); - CUDA_CHECK(cudaPeekAtLastError()); + CUDA_CHECK(cudaGetLastError()); Kernels::vec_vec_add<<>>( d_biases, d_output, d_output, outputSize ); - CUDA_CHECK(cudaPeekAtLastError()); + CUDA_CHECK(cudaGetLastError()); activation.activate(d_output); CUDA_CHECK(cudaDeviceSynchronize()); diff --git a/test/layers/test_avg_pooling.cu b/test/layers/test_avg_pooling.cu index 2fcacec..7a13651 100644 --- a/test/layers/test_avg_pooling.cu +++ b/test/layers/test_avg_pooling.cu @@ -66,5 +66,4 @@ TEST(AvgPoolingLayerTest, AvgPoolForwardTest) { } cudaFree(d_input); - cudaFree(d_output); } diff --git a/test/layers/test_concat.cu b/test/layers/test_concat.cu index a5adc97..80b0f7d 100644 --- a/test/layers/test_concat.cu +++ b/test/layers/test_concat.cu @@ -4,6 +4,9 @@ #include TEST(ConcatLayerTest, Init) { + + cudaError_t cudaStatus; + std::vector inputA = {0.573f, 0.619f, 0.732f, 0.055f, 0.243f}; std::vector inputB = {0.123f, 0.321f, 0.456f, 0.789f, 0.654f, 0.123f}; @@ -11,27 +14,41 @@ TEST(ConcatLayerTest, Init) { float* d_inputA; float* d_inputB; - cudaMalloc((void**)&d_inputA, sizeof(float) * 5); - cudaMalloc((void**)&d_inputB, sizeof(float) * 6); - cudaMemcpy( + + cudaStatus = cudaMalloc((void**)&d_inputA, sizeof(float) * 5); + EXPECT_EQ(cudaStatus, cudaSuccess); + + cudaStatus = cudaMalloc((void**)&d_inputB, sizeof(float) * 6); + EXPECT_EQ(cudaStatus, cudaSuccess); + + cudaStatus = cudaMemcpy( d_inputA, inputA.data(), sizeof(float) * 5, cudaMemcpyHostToDevice ); - cudaMemcpy( + EXPECT_EQ(cudaStatus, cudaSuccess); + + cudaStatus = cudaMemcpy( d_inputB, inputB.data(), sizeof(float) * 6, cudaMemcpyHostToDevice ); + EXPECT_EQ(cudaStatus, cudaSuccess); float* d_output = concat.forward(d_inputA, d_inputB); std::vector output(11); - cudaMemcpy( + cudaStatus = cudaMemcpy( output.data(), d_output, sizeof(float) * 11, cudaMemcpyDeviceToHost ); + EXPECT_EQ(cudaStatus, cudaSuccess); for (int i = 0; i < 5; ++i) { EXPECT_EQ(output[i], inputA[i]); } + for (int i = 0; i < 6; ++i) { EXPECT_EQ(output[i + 5], inputB[i]); } - cudaFree(d_output); + + cudaStatus = cudaFree(d_inputA); + EXPECT_EQ(cudaStatus, cudaSuccess); + cudaStatus = cudaFree(d_inputB); + EXPECT_EQ(cudaStatus, cudaSuccess); } \ No newline at end of file