diff --git a/CMakeLists.txt b/CMakeLists.txt index da4e226..d2daefd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,7 +10,7 @@ include_directories(${CUDAToolkit_INCLUDE_DIRS}) # Add project source files for the library set(LIBRARY_SOURCES src/utils/cuda_helper.cu - src/functions/activations.cu + src/kernels/activations.cu src/layers/dense.cu ) @@ -28,7 +28,7 @@ target_link_libraries(${PROJECT_NAME} CUDA::cublas CUDA::cudart) target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include ${CMAKE_CURRENT_SOURCE_DIR}/include/utils - ${CMAKE_CURRENT_SOURCE_DIR}/include/functions + ${CMAKE_CURRENT_SOURCE_DIR}/include/kernels ${CMAKE_CURRENT_SOURCE_DIR}/include/layers ${CMAKE_CURRENT_SOURCE_DIR}/src ) diff --git a/include/functions/activations.cuh b/include/kernels/activations.cuh similarity index 100% rename from include/functions/activations.cuh rename to include/kernels/activations.cuh diff --git a/src/functions/activations.cu b/src/kernels/activations.cu similarity index 100% rename from src/functions/activations.cu rename to src/kernels/activations.cu diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index d39ab66..5813516 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,7 +1,7 @@ find_package(GTest REQUIRED) include_directories(${GTEST_INCLUDE_DIRS}) -add_executable(test_dense layers/test_dense.cu) +add_executable(test_main layers/test_dense.cu kernels/test_activations.cu) add_library(test_utils test_utils/test_cublas_fixture.cu @@ -9,6 +9,6 @@ add_library(test_utils target_include_directories(test_utils PUBLIC test_utils) -target_link_libraries(test_dense ${GTEST_BOTH_LIBRARIES} CUDANet test_utils) +target_link_libraries(test_main ${GTEST_BOTH_LIBRARIES} CUDANet test_utils) -add_test(NAME TestDense COMMAND test_dense) \ No newline at end of file +add_test(NAME TestMain COMMAND test_main) \ No newline at end of file diff --git a/test/kernels/test_activations.cu b/test/kernels/test_activations.cu new file mode 100644 index 0000000..0343b5c --- /dev/null +++ b/test/kernels/test_activations.cu @@ -0,0 +1,49 @@ +#include +#include + +#include + +#include "activations.cuh" +#include "gtest/gtest.h" +#include "test_cublas_fixture.cuh" + +class ActivationsTest : public CublasTestFixture { + protected: + cudaError_t cudaStatus; + cublasStatus_t cublasStatus; +}; + +TEST_F(ActivationsTest, SigmoidSanityCheck) { + + float input[3] = {-100.0f, 0.0f, 100.0f}; + + std::vector expected_output = {0.0f, 0.5f, 1.0f}; + + float* d_input; + float* d_output; + + cudaStatus = cudaMalloc((void**)&d_input, sizeof(float) * 3); + EXPECT_EQ(cudaStatus, cudaSuccess); + + cudaStatus = cudaMalloc((void**)&d_output, sizeof(float) * 3); + EXPECT_EQ(cudaStatus, cudaSuccess); + + cublasStatus = cublasSetVector(3, sizeof(float), input, 1, d_input, 1); + EXPECT_EQ(cublasStatus, CUBLAS_STATUS_SUCCESS); + + sigmoid_kernel<<<1, 3>>>(d_input, d_output, 3); + cudaStatus = cudaDeviceSynchronize(); + EXPECT_EQ(cudaStatus, cudaSuccess); + + std::vector output(3); + + cublasStatus = cublasGetVector(3, sizeof(float), d_output, 1, output.data(), 1); + EXPECT_EQ(cublasStatus, CUBLAS_STATUS_SUCCESS); + + for (int i = 0; i < 3; i++) { + EXPECT_NEAR(expected_output[i], output[i], 1e-5); + } + + cudaFree(d_input); + cudaFree(d_output); +} \ No newline at end of file diff --git a/test/utils/test_functions.cu b/test/utils/test_functions.cu deleted file mode 100644 index b711e17..0000000 --- a/test/utils/test_functions.cu +++ /dev/null @@ -1,16 +0,0 @@ -#include -#include - -#include - -#include "functions.cuh" -#include "gtest/gtest.h" -#include "test_cublas_fixture.cuh" - -class FunctionsTest : public CublasTestFixture { - protected: - cudaError_t cudaStatus; - cublasStatus_t cublasStatus; -}; - -TEST_F(FunctionsTest, sigmoid) {} \ No newline at end of file