diff --git a/CMakeLists.txt b/CMakeLists.txt index 229110d9c1a5b8b202a6811a0a2276f91ba6b73a..8f955f3639e6e4f0b3f91c883f82127badfea772 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,11 +2,23 @@ cmake_minimum_required(VERSION 3.15) file(READ "${CMAKE_SOURCE_DIR}/version.txt" version) +add_definitions(-DPROJECT_VERSION="${version}") file(READ "${CMAKE_SOURCE_DIR}/project_name.txt" project) message(STATUS "Project name: ${project}") message(STATUS "Project version: ${version}") +execute_process( + COMMAND git rev-parse --short HEAD + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_VARIABLE GIT_COMMIT_HASH + OUTPUT_STRIP_TRAILING_WHITESPACE +) +message(STATUS "Latest git commit: ${GIT_COMMIT_HASH}") + +# Define a preprocessor macro with the Git commit version +add_definitions(-DGIT_COMMIT_HASH="${GIT_COMMIT_HASH}") + # Note : project name is {project} and python module name is also {project} set(module_name _${project}) # target name diff --git a/include/aidge/utils/sys_info/CpuVersionInfo.hpp b/include/aidge/utils/sys_info/CpuVersionInfo.hpp new file mode 100644 index 0000000000000000000000000000000000000000..887ce839e079349d9d64505f7184831ffc4cf1c2 --- /dev/null +++ b/include/aidge/utils/sys_info/CpuVersionInfo.hpp @@ -0,0 +1,35 @@ +#ifndef AIDGE_UTILS_SYS_INFO_CPU_VERSION_INFO_H +#define AIDGE_UTILS_SYS_INFO_CPU_VERSION_INFO_H + +#include "aidge/utils/Log.hpp" + +namespace Aidge { + +#ifndef PROJECT_VERSION // Normally defined in CMakeLists.txt +#define PROJECT_VERSION "Unknown version" +#endif +#ifndef GIT_COMMIT_HASH +#define GIT_COMMIT_HASH "" +#endif +void showCpuVersion() { + Log::info("Aidge backend CPU: {} ({}), {} {}", PROJECT_VERSION, GIT_COMMIT_HASH, __DATE__, __TIME__); + // Compiler version + #if defined(__clang__) + /* Clang/LLVM. ---------------------------------------------- */ + Log::info("Clang/LLVM compiler version: {}.{}.{}\n", __clang_major__ , __clang_minor__, __clang_patchlevel__); + #elif defined(__ICC) || defined(__INTEL_COMPILER) + /* Intel ICC/ICPC. ------------------------------------------ */ + Log::info("Intel ICC/ICPC compiler version: {}\n", __INTEL_COMPILER); + #elif defined(__GNUC__) || defined(__GNUG__) + /* GNU GCC/G++. --------------------------------------------- */ + Log::info("GNU GCC/G++ compiler version: {}.{}.{}", __GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__); + #elif defined(_MSC_VER) + /* Microsoft Visual Studio. --------------------------------- */ + Log::info("Microsoft Visual Studio compiler version: {}\n", _MSC_VER); + #else + Log::info("Unknown compiler\n"); + #endif + +} +} // namespace Aidge +#endif // AIDGE_UTILS_SYS_INFO_CPU_VERSION_INFO_H diff --git a/python_binding/pybind_cpu.cpp b/python_binding/pybind_cpu.cpp index 4a325bf51716ee6a920b3fcbde394b3e5b7c1d0f..d5022e1d469ae4171e796baed6c1aa061dd95765 100644 --- a/python_binding/pybind_cpu.cpp +++ b/python_binding/pybind_cpu.cpp @@ -6,10 +6,13 @@ namespace py = pybind11; namespace Aidge { -void init_Aidge(py::module& /*m*/){ +void init_cpu_sys_info(py::module& m); +void init_Aidge(py::module& m){ + init_cpu_sys_info(m); } + PYBIND11_MODULE(aidge_backend_cpu, m) { init_Aidge(m); } diff --git a/python_binding/utils/sys_info/pybind_CpuVersionInfo.cpp b/python_binding/utils/sys_info/pybind_CpuVersionInfo.cpp new file mode 100644 index 0000000000000000000000000000000000000000..573bee3659c65f90935e03c06eff5a2998bb9f5b --- /dev/null +++ b/python_binding/utils/sys_info/pybind_CpuVersionInfo.cpp @@ -0,0 +1,9 @@ +#include <pybind11/pybind11.h> +#include "aidge/utils/sys_info/CpuVersionInfo.hpp" + +namespace py = pybind11; +namespace Aidge { +void init_cpu_sys_info(py::module& m){ + m.def("show_cpu_version", &showCpuVersion); +} +} diff --git a/unit_tests/scheduler/Test_Scheduler.cpp b/unit_tests/scheduler/Test_Scheduler.cpp index a369da2325c0003f06379ce1b56dace3c9f012d1..01ccd37c319ee64deb15240b30cc369b37c9e47d 100644 --- a/unit_tests/scheduler/Test_Scheduler.cpp +++ b/unit_tests/scheduler/Test_Scheduler.cpp @@ -419,8 +419,8 @@ TEST_CASE("[cpu/scheduler] SequentialScheduler(backward)", "[scheduler][backward compile_gradient(gv); SequentialScheduler scheduler(gv); scheduler.forward(); - auto predictedOutput = gv->getOrderedOutputs()[0].first; - + auto outNode = gv->getOrderedOutputs()[0].first; + std::shared_ptr<Tensor> predictedOutput = std::dynamic_pointer_cast<OperatorTensor>(outNode->getOperator())->getOutput(0); std::shared_ptr<Tensor> targetOutput = std::make_shared<Tensor>(Array4D<float, 2, 1, 5, 5>{{{{{0.0f, 1.0f, 1.0f, 2.0f, 2.0f}, {2.0f, 2.0f, 3.0f, 3.0f, 3.0f}, @@ -432,7 +432,8 @@ TEST_CASE("[cpu/scheduler] SequentialScheduler(backward)", "[scheduler][backward {6.0f, 6.0f, 6.0f, 6.0f, 6.0f}, {6.0f, 6.0f, 6.0f, 7.0f, 7.0f}, {7.0f, 7.0f, 7.0f, 7.0f, 7.0f}}}}}); - - REQUIRE_NOTHROW(scheduler.backward({targetOutput})); + predictedOutput->initGrad(); + predictedOutput->setGrad(targetOutput); + REQUIRE_NOTHROW(scheduler.backward()); } } // namespace Aidge