diff --git a/cmake/bin2h.cmake b/cmake/bin2h.cmake index 4243ca0ff..deea3923a 100644 --- a/cmake/bin2h.cmake +++ b/cmake/bin2h.cmake @@ -72,10 +72,10 @@ function(BIN2H) # wraps the hex string into multiple lines at column 32(i.e. 16 bytes per line) wrap_string(VARIABLE hexString AT_COLUMN 32) - math(EXPR arraySize "${hexStringLength} / 2") + math(EXPR arraySize "${hexStringLength} / 8") # adds '0x' prefix and comma suffix before and after every byte respectively - string(REGEX REPLACE "([0-9a-f][0-9a-f])" "0x\\1, " arrayValues ${hexString}) + string(REGEX REPLACE "([0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f])" "0x\\1, " arrayValues ${hexString}) # removes trailing comma string(REGEX REPLACE ", $" "" arrayValues ${arrayValues}) @@ -85,9 +85,9 @@ function(BIN2H) # declares byte array and the length variables set(namespaceStart "namespace ${HEADER_NAMESPACE} {") - set(namespaceEnd "} // ${HEADER_NAMESPACE}") + set(namespaceEnd "} // namespace ${HEADER_NAMESPACE}") set(arrayIncludes "#pragma once\n#include \n#include ") - set(arrayDefinition "const std::array ${BIN2H_VARIABLE_NAME} = { ${arrayValues} };") + set(arrayDefinition "const std::array ${BIN2H_VARIABLE_NAME} = { ${arrayValues} };") set(declarations "${arrayIncludes}\n\n${namespaceStart}\n${arrayDefinition}\n${namespaceEnd}\n\n") if(BIN2H_APPEND) diff --git a/cmake/vulkan_shader_compiler.cmake b/cmake/vulkan_shader_compiler.cmake index 4526b796a..e09ff4381 100644 --- a/cmake/vulkan_shader_compiler.cmake +++ b/cmake/vulkan_shader_compiler.cmake @@ -17,7 +17,7 @@ function(vulkan_compile_shader) "-o" "${SHADER_COMPILE_SPV_FILE_FULL}" "--target-env" - "vulkan1.2" + "vulkan1.1" "${SHADER_COMPILE_INFILE_FULL}" COMMENT "Compile vulkan compute shader from file '${SHADER_COMPILE_INFILE_FULL}' to '${SHADER_COMPILE_SPV_FILE_FULL}'." MAIN_DEPENDENCY "${SHADER_COMPILE_INFILE_FULL}") diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index ae472e62b..c312bde52 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -80,13 +80,13 @@ endif() ##################################################### if(KOMPUTE_OPT_ANDROID_BUILD) - target_link_libraries(kompute PRIVATE fmt::fmt - kompute_vk_ndk_wrapper - log - android) + target_link_libraries(kompute PUBLIC fmt::fmt + kompute_vk_ndk_wrapper + log + android) else() - target_link_libraries(kompute PRIVATE Vulkan::Vulkan - fmt::fmt) + target_link_libraries(kompute PUBLIC Vulkan::Vulkan + fmt::fmt) endif() if(KOMPUTE_OPT_USE_BUILD_IN_VULKAN_HEADER) @@ -94,7 +94,7 @@ if(KOMPUTE_OPT_USE_BUILD_IN_VULKAN_HEADER) endif() if(KOMPUTE_OPT_ENABLE_LOGGING) - target_link_libraries(kompute PRIVATE spdlog::spdlog) + target_link_libraries(kompute PUBLIC spdlog::spdlog) endif() ##################################################### diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 8311253a1..49e8f0356 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -30,7 +30,6 @@ endmacro() add_kompute_test(AsyncOperations) add_kompute_test(Destroy) add_kompute_test(LogisticRegression) -add_kompute_test(Main) add_kompute_test(Manager) add_kompute_test(MultipleAlgoExecutions) add_kompute_test(OpShadersFromStringAndFile) diff --git a/test/TestAsyncOperations.cpp b/test/TestAsyncOperations.cpp index bd52ff390..a1c8de852 100644 --- a/test/TestAsyncOperations.cpp +++ b/test/TestAsyncOperations.cpp @@ -5,6 +5,7 @@ #include #include "kompute/Kompute.hpp" +#include "shaders/Utils.hpp" TEST(TestAsyncOperations, TestManagerParallelExecution) { @@ -257,3 +258,16 @@ TEST(TestAsyncOperations, TestManagerAsyncExecutionTimeout) EXPECT_EQ(tensorA->vector(), resultAsync); EXPECT_EQ(tensorB->vector(), resultAsync); } + +int +main(int argc, char* argv[]) +{ + testing::InitGoogleTest(&argc, argv); + +#if KOMPUTE_ENABLE_SPDLOG + spdlog::set_level( + static_cast(KOMPUTE_LOG_LEVEL)); +#endif + + return RUN_ALL_TESTS(); +} diff --git a/test/TestDestroy.cpp b/test/TestDestroy.cpp index e81e3903c..6a4fdb345 100644 --- a/test/TestDestroy.cpp +++ b/test/TestDestroy.cpp @@ -139,3 +139,16 @@ TEST(TestDestroy, TestDestroySequenceSingle) } } } + +int +main(int argc, char* argv[]) +{ + testing::InitGoogleTest(&argc, argv); + +#if KOMPUTE_ENABLE_SPDLOG + spdlog::set_level( + static_cast(KOMPUTE_LOG_LEVEL)); +#endif + + return RUN_ALL_TESTS(); +} diff --git a/test/TestLogisticRegression.cpp b/test/TestLogisticRegression.cpp index d149c4772..2ac52e31c 100644 --- a/test/TestLogisticRegression.cpp +++ b/test/TestLogisticRegression.cpp @@ -4,7 +4,7 @@ #include "kompute/Kompute.hpp" -#include "test_logistic_regression.hpp" +#include "test_logistic_regression_shader.hpp" TEST(TestLogisticRegression, TestMainLogisticRegression) { @@ -39,12 +39,11 @@ TEST(TestLogisticRegression, TestMainLogisticRegression) mgr.sequence()->eval(params); - std::vector spirv = std::vector( - (const uint32_t*)kp::TEST_LOGISTIC_REGRESSION_COMP_SPV.data(), - (const uint32_t*)(kp::shader_data:: - test_shaders_glsl_test_logistic_regression_comp_spv + - kp::shader_data:: - test_shaders_glsl_test_logistic_regression_comp_spv_len)); + std::vector spirv2{ 0x1, 0x2 }; + + std::vector spirv( + kp::TEST_LOGISTIC_REGRESSION_SHADER_COMP_SPV.begin(), + kp::TEST_LOGISTIC_REGRESSION_SHADER_COMP_SPV.end()); std::shared_ptr algorithm = mgr.algorithm( params, spirv, kp::Workgroup({ 5 }), std::vector({ 5.0 })); @@ -57,7 +56,6 @@ TEST(TestLogisticRegression, TestMainLogisticRegression) // Iterate across all expected iterations for (size_t i = 0; i < ITERATIONS; i++) { - sq->eval(); for (size_t j = 0; j < bOut->size(); j++) { @@ -118,12 +116,9 @@ TEST(TestLogisticRegression, TestMainLogisticRegressionManualCopy) mgr.sequence()->record(params)->eval(); - std::vector spirv = std::vector( - (uint32_t*)kp::shader_data::shaders_glsl_logisticregression_comp_spv, - (uint32_t*)(kp::shader_data:: - shaders_glsl_logisticregression_comp_spv + - kp::shader_data:: - shaders_glsl_logisticregression_comp_spv_len)); + std::vector spirv( + kp::TEST_LOGISTIC_REGRESSION_SHADER_COMP_SPV.begin(), + kp::TEST_LOGISTIC_REGRESSION_SHADER_COMP_SPV.end()); std::shared_ptr algorithm = mgr.algorithm( params, spirv, kp::Workgroup(), std::vector({ 5.0 })); @@ -161,3 +156,16 @@ TEST(TestLogisticRegression, TestMainLogisticRegressionManualCopy) bIn->data()[0]); } } + +int +main(int argc, char* argv[]) +{ + testing::InitGoogleTest(&argc, argv); + +#if KOMPUTE_ENABLE_SPDLOG + spdlog::set_level( + static_cast(KOMPUTE_LOG_LEVEL)); +#endif + + return RUN_ALL_TESTS(); +} diff --git a/test/TestMain.cpp b/test/TestMain.cpp deleted file mode 100644 index 4f777f0b2..000000000 --- a/test/TestMain.cpp +++ /dev/null @@ -1,18 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 - -#include - -#include - -int -main(int argc, char* argv[]) -{ - testing::InitGoogleTest(&argc, argv); - -#if KOMPUTE_ENABLE_SPDLOG - spdlog::set_level( - static_cast(KOMPUTE_LOG_LEVEL)); -#endif - - return RUN_ALL_TESTS(); -} diff --git a/test/TestManager.cpp b/test/TestManager.cpp index e882421fc..ca787a066 100644 --- a/test/TestManager.cpp +++ b/test/TestManager.cpp @@ -105,3 +105,16 @@ TEST(TestManager, TestClearDestroy) mgr.destroy(); } + +int +main(int argc, char* argv[]) +{ + testing::InitGoogleTest(&argc, argv); + +#if KOMPUTE_ENABLE_SPDLOG + spdlog::set_level( + static_cast(KOMPUTE_LOG_LEVEL)); +#endif + + return RUN_ALL_TESTS(); +} diff --git a/test/TestMultipleAlgoExecutions.cpp b/test/TestMultipleAlgoExecutions.cpp index 40d15d6e7..0311fcb21 100644 --- a/test/TestMultipleAlgoExecutions.cpp +++ b/test/TestMultipleAlgoExecutions.cpp @@ -270,3 +270,16 @@ TEST(TestMultipleAlgoExecutions, TestAlgorithmUtilFunctions) EXPECT_EQ(algorithm->getPushConstants(), pushConsts); EXPECT_EQ(algorithm->getSpecializationConstants(), specConsts); } + +int +main(int argc, char* argv[]) +{ + testing::InitGoogleTest(&argc, argv); + +#if KOMPUTE_ENABLE_SPDLOG + spdlog::set_level( + static_cast(KOMPUTE_LOG_LEVEL)); +#endif + + return RUN_ALL_TESTS(); +} diff --git a/test/TestOpShadersFromStringAndFile.cpp b/test/TestOpShadersFromStringAndFile.cpp index 550f9e26c..b4431e041 100644 --- a/test/TestOpShadersFromStringAndFile.cpp +++ b/test/TestOpShadersFromStringAndFile.cpp @@ -4,9 +4,8 @@ #include "kompute/Kompute.hpp" -#include "kompute_test/shaders/shadertest_op_custom_shader.hpp" - #include "shaders/Utils.hpp" +#include "test_op_custom_shader.hpp" TEST(TestOpAlgoCreate, ShaderRawDataFromConstructor) { @@ -50,14 +49,8 @@ TEST(TestOpAlgoCreate, ShaderCompiledDataFromConstructor) std::shared_ptr> tensorA = mgr.tensor({ 3, 4, 5 }); std::shared_ptr> tensorB = mgr.tensor({ 0, 0, 0 }); - std::vector spirv = std::vector( - (uint32_t*) - kp::shader_data::test_shaders_glsl_test_op_custom_shader_comp_spv, - (uint32_t*)(kp::shader_data:: - test_shaders_glsl_test_op_custom_shader_comp_spv + - kp::shader_data:: - test_shaders_glsl_test_op_custom_shader_comp_spv_len)); - + std::vector spirv(kp::TEST_OP_CUSTOM_SHADER_COMP_SPV.begin(), + kp::TEST_OP_CUSTOM_SHADER_COMP_SPV.end()); std::vector> params = { tensorA, tensorB }; mgr.sequence() @@ -87,3 +80,16 @@ TEST(TestOpAlgoCreate, ShaderCompiledDataFromConstructor) // EXPECT_EQ(tensorA->vector(), std::vector({ 0, 1, 2 })); // EXPECT_EQ(tensorB->vector(), std::vector({ 3, 4, 5 })); //} + +int +main(int argc, char* argv[]) +{ + testing::InitGoogleTest(&argc, argv); + +#if KOMPUTE_ENABLE_SPDLOG + spdlog::set_level( + static_cast(KOMPUTE_LOG_LEVEL)); +#endif + + return RUN_ALL_TESTS(); +} diff --git a/test/TestOpTensorCopy.cpp b/test/TestOpTensorCopy.cpp index a272efbd4..9cebee34c 100644 --- a/test/TestOpTensorCopy.cpp +++ b/test/TestOpTensorCopy.cpp @@ -156,3 +156,16 @@ TEST(TestOpTensorCopy, SingleTensorShouldFail) EXPECT_THROW(mgr.sequence()->eval({ tensorA }), std::runtime_error); } + +int +main(int argc, char* argv[]) +{ + testing::InitGoogleTest(&argc, argv); + +#if KOMPUTE_ENABLE_SPDLOG + spdlog::set_level( + static_cast(KOMPUTE_LOG_LEVEL)); +#endif + + return RUN_ALL_TESTS(); +} diff --git a/test/TestOpTensorCreate.cpp b/test/TestOpTensorCreate.cpp index 8ad552e6c..40133508f 100644 --- a/test/TestOpTensorCreate.cpp +++ b/test/TestOpTensorCreate.cpp @@ -57,3 +57,16 @@ TEST(TestOpTensorCreate, ExceptionOnZeroSizeTensor) std::string::npos); } } + +int +main(int argc, char* argv[]) +{ + testing::InitGoogleTest(&argc, argv); + +#if KOMPUTE_ENABLE_SPDLOG + spdlog::set_level( + static_cast(KOMPUTE_LOG_LEVEL)); +#endif + + return RUN_ALL_TESTS(); +} diff --git a/test/TestOpTensorSync.cpp b/test/TestOpTensorSync.cpp index 9fecb85f9..7c9d6cf06 100644 --- a/test/TestOpTensorSync.cpp +++ b/test/TestOpTensorSync.cpp @@ -52,3 +52,16 @@ TEST(TestOpTensorSync, SyncToDeviceMemoryMultiTensor) EXPECT_EQ(tensorB->vector(), testVec); EXPECT_EQ(tensorC->vector(), testVec); } + +int +main(int argc, char* argv[]) +{ + testing::InitGoogleTest(&argc, argv); + +#if KOMPUTE_ENABLE_SPDLOG + spdlog::set_level( + static_cast(KOMPUTE_LOG_LEVEL)); +#endif + + return RUN_ALL_TESTS(); +} diff --git a/test/TestPushConstant.cpp b/test/TestPushConstant.cpp index 94f6afc47..a78224fc0 100644 --- a/test/TestPushConstant.cpp +++ b/test/TestPushConstant.cpp @@ -391,3 +391,16 @@ TEST(TestPushConstants, TestConstantsDouble) } } } + +int +main(int argc, char* argv[]) +{ + testing::InitGoogleTest(&argc, argv); + +#if KOMPUTE_ENABLE_SPDLOG + spdlog::set_level( + static_cast(KOMPUTE_LOG_LEVEL)); +#endif + + return RUN_ALL_TESTS(); +} diff --git a/test/TestSequence.cpp b/test/TestSequence.cpp index 7ab14a646..27c422450 100644 --- a/test/TestSequence.cpp +++ b/test/TestSequence.cpp @@ -242,3 +242,16 @@ TEST(TestSequence, CorrectSequenceRunningError) EXPECT_EQ(tensorOut->vector(), std::vector({ 2, 4, 6 })); } + +int +main(int argc, char* argv[]) +{ + testing::InitGoogleTest(&argc, argv); + +#if KOMPUTE_ENABLE_SPDLOG + spdlog::set_level( + static_cast(KOMPUTE_LOG_LEVEL)); +#endif + + return RUN_ALL_TESTS(); +} diff --git a/test/TestSpecializationConstant.cpp b/test/TestSpecializationConstant.cpp index a1fc4bb3e..1421aaa97 100644 --- a/test/TestSpecializationConstant.cpp +++ b/test/TestSpecializationConstant.cpp @@ -101,3 +101,16 @@ TEST(TestSpecializationConstants, TestConstantsInt) } } } + +int +main(int argc, char* argv[]) +{ + testing::InitGoogleTest(&argc, argv); + +#if KOMPUTE_ENABLE_SPDLOG + spdlog::set_level( + static_cast(KOMPUTE_LOG_LEVEL)); +#endif + + return RUN_ALL_TESTS(); +} diff --git a/test/TestTensor.cpp b/test/TestTensor.cpp index e6af04f25..dc358fc82 100644 --- a/test/TestTensor.cpp +++ b/test/TestTensor.cpp @@ -43,3 +43,16 @@ TEST(TestTensor, DataTypes) EXPECT_EQ(tensor->dataType(), kp::Tensor::TensorDataTypes::eDouble); } } + +int +main(int argc, char* argv[]) +{ + testing::InitGoogleTest(&argc, argv); + +#if KOMPUTE_ENABLE_SPDLOG + spdlog::set_level( + static_cast(KOMPUTE_LOG_LEVEL)); +#endif + + return RUN_ALL_TESTS(); +} diff --git a/test/TestWorkgroup.cpp b/test/TestWorkgroup.cpp index 164166ee3..bd87bbab3 100644 --- a/test/TestWorkgroup.cpp +++ b/test/TestWorkgroup.cpp @@ -4,7 +4,7 @@ #include "kompute/Kompute.hpp" -#include "kompute_test/shaders/shadertest_workgroup.hpp" +#include "test_workgroup_shader.hpp" TEST(TestWorkgroup, TestSimpleWorkgroup) { @@ -21,14 +21,9 @@ TEST(TestWorkgroup, TestSimpleWorkgroup) std::vector> params = { tensorA, tensorB }; - std::vector spirv( - (uint32_t*) - kp::shader_data::test_shaders_glsl_test_workgroup_comp_spv, - (uint32_t*)(kp::shader_data:: - test_shaders_glsl_test_workgroup_comp_spv + - kp::shader_data:: - test_shaders_glsl_test_workgroup_comp_spv_len)); + kp::TEST_WORKGROUP_SHADER_COMP_SPV.begin(), + kp::TEST_WORKGROUP_SHADER_COMP_SPV.end()); kp::Workgroup workgroup = { 16, 8, 1 }; @@ -67,3 +62,16 @@ TEST(TestWorkgroup, TestSimpleWorkgroup) } } } + +int +main(int argc, char* argv[]) +{ + testing::InitGoogleTest(&argc, argv); + +#if KOMPUTE_ENABLE_SPDLOG + spdlog::set_level( + static_cast(KOMPUTE_LOG_LEVEL)); +#endif + + return RUN_ALL_TESTS(); +} diff --git a/test/shaders/glsl/CMakeLists.txt b/test/shaders/glsl/CMakeLists.txt index 41e207728..579a73841 100644 --- a/test/shaders/glsl/CMakeLists.txt +++ b/test/shaders/glsl/CMakeLists.txt @@ -2,21 +2,21 @@ ####################### cmake_minimum_required(VERSION 3.15) -vulkan_compile_shader(INFILE test_logistic_regression.comp - OUTFILE test_logistic_regression.hpp +vulkan_compile_shader(INFILE test_logistic_regression_shader.comp + OUTFILE test_logistic_regression_shader.hpp NAMESPACE "kp") vulkan_compile_shader(INFILE test_op_custom_shader.comp OUTFILE test_op_custom_shader.hpp NAMESPACE "kp") -vulkan_compile_shader(INFILE test_workgroup.comp - OUTFILE test_workgroup.hpp +vulkan_compile_shader(INFILE test_workgroup_shader.comp + OUTFILE test_workgroup_shader.hpp NAMESPACE "kp") -add_library(test_shaders_glsl "${CMAKE_CURRENT_BINARY_DIR}/test_logistic_regression.hpp" +add_library(test_shaders_glsl "${CMAKE_CURRENT_BINARY_DIR}/test_logistic_regression_shader.hpp" "${CMAKE_CURRENT_BINARY_DIR}/test_op_custom_shader.hpp" - "${CMAKE_CURRENT_BINARY_DIR}/test_workgroup.hpp") + "${CMAKE_CURRENT_BINARY_DIR}/test_workgroup_shader.hpp") set_target_properties(test_shaders_glsl PROPERTIES LINKER_LANGUAGE CXX) target_include_directories(test_shaders_glsl PUBLIC $) diff --git a/test/shaders/glsl/test_logistic_regression.comp b/test/shaders/glsl/test_logistic_regression_shader.comp similarity index 100% rename from test/shaders/glsl/test_logistic_regression.comp rename to test/shaders/glsl/test_logistic_regression_shader.comp diff --git a/test/shaders/glsl/test_workgroup.comp b/test/shaders/glsl/test_workgroup_shader.comp similarity index 100% rename from test/shaders/glsl/test_workgroup.comp rename to test/shaders/glsl/test_workgroup_shader.comp