From f5113cbac9d577c86870fdb3893d54d8082f35d7 Mon Sep 17 00:00:00 2001 From: LordMathis Date: Sun, 2 Jun 2024 00:31:37 +0200 Subject: [PATCH] Start implementing inception modules tests --- examples/inception_v3/CMakeLists.txt | 21 ++++++--- examples/inception_v3/tests/CMakeLists.txt | 26 +++++++++++ .../inception_v3/tests/test_basic_conv2d.cpp | 43 +++++++++++++++++++ 3 files changed, 85 insertions(+), 5 deletions(-) create mode 100644 examples/inception_v3/tests/CMakeLists.txt create mode 100644 examples/inception_v3/tests/test_basic_conv2d.cpp diff --git a/examples/inception_v3/CMakeLists.txt b/examples/inception_v3/CMakeLists.txt index b303315..692f7f6 100644 --- a/examples/inception_v3/CMakeLists.txt +++ b/examples/inception_v3/CMakeLists.txt @@ -4,8 +4,7 @@ project(Inceptionv3 LANGUAGES CXX CUDA ) -add_executable(inception_v3 - inception_v3.cpp +add_library(inception_v3_lib inception_modules.cpp ) @@ -22,8 +21,20 @@ set (CUDANet_INCLUDE_DIRS ) target_include_directories( - inception_v3 PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${OpenCV_INCLUDE_DIRS} ${CUDANet_INCLUDE_DIRS} ${CUDAToolkit_INCLUDE_DIRS}) + inception_v3_lib PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${CUDANet_INCLUDE_DIRS} ${CUDAToolkit_INCLUDE_DIRS}) -target_link_libraries(inception_v3 PRIVATE ${CUDANet_LIBRARY} ${OpenCV_LIBS} CUDA::cudart) +target_link_libraries(inception_v3_lib PRIVATE ${CUDANet_LIBRARY} ${OpenCV_LIBS} CUDA::cudart) -set_property(TARGET inception_v3 PROPERTY CXX_STANDARD 20) \ No newline at end of file +set_property(TARGET inception_v3_lib PROPERTY CXX_STANDARD 20) + +add_executable(inception_v3 + inception_v3.cpp +) + +target_include_directories(inception_v3 PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${OpenCV_INCLUDE_DIRS} ${CUDANet_INCLUDE_DIRS} ${CUDAToolkit_INCLUDE_DIRS}) + +target_link_libraries(inception_v3 PRIVATE inception_v3_lib ${CUDANet_LIBRARY}) + +set_property(TARGET inception_v3 PROPERTY CXX_STANDARD 20) + +add_subdirectory(tests) \ No newline at end of file diff --git a/examples/inception_v3/tests/CMakeLists.txt b/examples/inception_v3/tests/CMakeLists.txt new file mode 100644 index 0000000..8c48124 --- /dev/null +++ b/examples/inception_v3/tests/CMakeLists.txt @@ -0,0 +1,26 @@ +find_package(GTest REQUIRED) +include_directories(${GTEST_INCLUDE_DIRS}) + +file(GLOB_RECURSE TEST_SOURCES + *.cpp +) + +add_executable(test_inception_v3 + EXCLUDE_FROM_ALL + ${TEST_SOURCES} +) + +target_include_directories(test_inception_v3 PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR}/.. + ${CUDANet_INCLUDE_DIRS} + ${CUDAToolkit_INCLUDE_DIRS} +) + +target_link_libraries(test_inception_v3 + ${GTEST_BOTH_LIBRARIES} + ${CUDANet_LIBRARY} + CUDA::cudart + inception_v3_lib +) + +add_test(NAME TestMain COMMAND test_inception_v3) \ No newline at end of file diff --git a/examples/inception_v3/tests/test_basic_conv2d.cpp b/examples/inception_v3/tests/test_basic_conv2d.cpp new file mode 100644 index 0000000..929e65f --- /dev/null +++ b/examples/inception_v3/tests/test_basic_conv2d.cpp @@ -0,0 +1,43 @@ +#include + +#include + +class BasicConv2dTest : public ::testing::Test { + protected: + BasicConv2d *basic_conv2d; + + shape2d inputShape; + int inputChannels; + int outputChannels; + shape2d kernelSize; + shape2d stride; + shape2d padding; + std::string prefix = "test"; + + float *d_input; + float *d_output; + + std::vector input; + std::vector output; + + std::vector weights; + std::vector biases; + + virtual void SetUp() override { + basic_conv2d = nullptr; + } + + virtual void TearDown() override { + // Clean up + delete basic_conv2d; + } +}; + +TEST_F(BasicConv2dTest, BasicConv2dTest1) { + inputShape = {28, 28}; + inputChannels = 1; + outputChannels = 32; + kernelSize = {3, 3}; + stride = {1, 1}; + padding = {1, 1}; +}; \ No newline at end of file