From edad247227c728d9aba044930e1afa049724e7fb Mon Sep 17 00:00:00 2001 From: Michelle Date: Sat, 30 May 2026 09:13:52 +0200 Subject: [PATCH] Starting on the model.h, but need to make layer structs and structs for loss and optimizers --- build/CMakeFiles/CMakeConfigureLog.yaml | 180 ++--- build/bin/dense-neural-network | Bin 154360 -> 123864 bytes .../dense-neural-network.dir/main.cpp.o | Bin 325752 -> 260000 bytes .../dense-neural-network.dir/main.cpp.o.d | 19 +- .../Regression-example.txt | 218 ++++++ examples/dense-neural-network/main.cpp | 136 ++-- .../activation_functions/Activation_Linear.h | 33 + .../activation_functions/Activation_ReLU.h | 4 +- .../activation_functions/Activation_Sigmoid.h | 3 +- .../activation_functions/Activation_Softmax.h | 3 +- ...ion_Softmax_Loss_CategoricalCrossentropy.h | 3 +- .../modules/neural_networks/datasets/sine.h | 37 ++ .../neural_networks/layers/Dense_Layer.h | 8 +- .../neural_networks/layers/Dropout_Layer.h | 4 +- .../modules/neural_networks/layers/Layer.h | 21 + include/modules/neural_networks/loss/Loss.h | 2 +- .../loss/Loss_MeanAbsoluteError.h | 58 ++ .../loss/Loss_MeanSquaredError.h | 58 ++ include/modules/neural_networks/model/model.h | 30 + .../modules/neural_networks/neural_networks.h | 12 +- .../numerics/detail/greater_or_less_serial.h | 622 ++++++++++++++++++ include/numerics/detail/sign_serial.h | 48 ++ .../detail/standard_deviation_serial.h | 61 ++ include/numerics/greater_or_less.h | 316 +++++++++ include/numerics/numerics.h | 3 + include/numerics/sign.h | 51 ++ include/numerics/standard_deviation.h | 22 + include/random/detail/normal_serial.h | 57 ++ include/random/normal.h | 28 + include/random/random.h | 1 + 30 files changed, 1879 insertions(+), 159 deletions(-) create mode 100644 examples/dense-neural-network/Regression-example.txt create mode 100644 include/modules/neural_networks/activation_functions/Activation_Linear.h create mode 100644 include/modules/neural_networks/datasets/sine.h create mode 100644 include/modules/neural_networks/layers/Layer.h create mode 100644 include/modules/neural_networks/loss/Loss_MeanAbsoluteError.h create mode 100644 include/modules/neural_networks/loss/Loss_MeanSquaredError.h create mode 100644 include/modules/neural_networks/model/model.h create mode 100644 include/numerics/detail/greater_or_less_serial.h create mode 100644 include/numerics/detail/sign_serial.h create mode 100644 include/numerics/detail/standard_deviation_serial.h create mode 100644 include/numerics/greater_or_less.h create mode 100644 include/numerics/sign.h create mode 100644 include/numerics/standard_deviation.h create mode 100644 include/random/detail/normal_serial.h create mode 100644 include/random/normal.h diff --git a/build/CMakeFiles/CMakeConfigureLog.yaml b/build/CMakeFiles/CMakeConfigureLog.yaml index ae25ccc..05392f8 100644 --- a/build/CMakeFiles/CMakeConfigureLog.yaml +++ b/build/CMakeFiles/CMakeConfigureLog.yaml @@ -39,8 +39,8 @@ events: checks: - "Detecting CXX compiler ABI info" directories: - source: "/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-6fQL2C" - binary: "/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-6fQL2C" + source: "/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-9KJdFc" + binary: "/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-9KJdFc" cmakeVariables: CMAKE_CXX_FLAGS: "" CMAKE_CXX_FLAGS_DEBUG: "-g" @@ -49,13 +49,13 @@ events: variable: "CMAKE_CXX_ABI_COMPILED" cached: true stdout: | - Change Dir: '/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-6fQL2C' + Change Dir: '/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-9KJdFc' - Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_21458/fast - /usr/bin/gmake -f CMakeFiles/cmTC_21458.dir/build.make CMakeFiles/cmTC_21458.dir/build - gmake[1]: Entering directory '/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-6fQL2C' - Building CXX object CMakeFiles/cmTC_21458.dir/CMakeCXXCompilerABI.cpp.o - /usr/bin/c++ -v -o CMakeFiles/cmTC_21458.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-3.28/Modules/CMakeCXXCompilerABI.cpp + Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_0e288/fast + /usr/bin/gmake -f CMakeFiles/cmTC_0e288.dir/build.make CMakeFiles/cmTC_0e288.dir/build + gmake[1]: Entering directory '/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-9KJdFc' + Building CXX object CMakeFiles/cmTC_0e288.dir/CMakeCXXCompilerABI.cpp.o + /usr/bin/c++ -v -o CMakeFiles/cmTC_0e288.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-3.28/Modules/CMakeCXXCompilerABI.cpp Using built-in specs. COLLECT_GCC=/usr/bin/c++ OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa @@ -65,8 +65,8 @@ events: Thread model: posix Supported LTO compression algorithms: zlib zstd gcc version 13.3.0 (Ubuntu 13.3.0-6ubuntu2~24.04.1) - COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_21458.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_21458.dir/' - /usr/libexec/gcc/x86_64-linux-gnu/13/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/share/cmake-3.28/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_21458.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccuSiKHJ.s + COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_0e288.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_0e288.dir/' + /usr/libexec/gcc/x86_64-linux-gnu/13/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/share/cmake-3.28/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_0e288.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/cciEtBVP.s GNU C++17 (Ubuntu 13.3.0-6ubuntu2~24.04.1) version 13.3.0 (x86_64-linux-gnu) compiled by GNU C version 13.3.0, GMP version 6.3.0, MPFR version 4.2.1, MPC version 1.3.1, isl version isl-0.26-GMP @@ -87,15 +87,15 @@ events: /usr/include End of search list. Compiler executable checksum: 7896445e4990772fdae9dc0659a99266 - COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_21458.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_21458.dir/' - as -v --64 -o CMakeFiles/cmTC_21458.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccuSiKHJ.s + COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_0e288.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_0e288.dir/' + as -v --64 -o CMakeFiles/cmTC_0e288.dir/CMakeCXXCompilerABI.cpp.o /tmp/cciEtBVP.s GNU assembler version 2.42 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.42 COMPILER_PATH=/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/ LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../:/lib/:/usr/lib/ - COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_21458.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_21458.dir/CMakeCXXCompilerABI.cpp.' - Linking CXX executable cmTC_21458 - /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_21458.dir/link.txt --verbose=1 - /usr/bin/c++ -v CMakeFiles/cmTC_21458.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_21458 + COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_0e288.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_0e288.dir/CMakeCXXCompilerABI.cpp.' + Linking CXX executable cmTC_0e288 + /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_0e288.dir/link.txt --verbose=1 + /usr/bin/c++ -v CMakeFiles/cmTC_0e288.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_0e288 Using built-in specs. COLLECT_GCC=/usr/bin/c++ COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-linux-gnu/13/lto-wrapper @@ -108,10 +108,10 @@ events: gcc version 13.3.0 (Ubuntu 13.3.0-6ubuntu2~24.04.1) COMPILER_PATH=/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/ LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../:/lib/:/usr/lib/ - COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_21458' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_21458.' - /usr/libexec/gcc/x86_64-linux-gnu/13/collect2 -plugin /usr/libexec/gcc/x86_64-linux-gnu/13/liblto_plugin.so -plugin-opt=/usr/libexec/gcc/x86_64-linux-gnu/13/lto-wrapper -plugin-opt=-fresolution=/tmp/ccR4K2gF.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_21458 /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/13/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/13 -L/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/13/../../.. CMakeFiles/cmTC_21458.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/13/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crtn.o - COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_21458' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_21458.' - gmake[1]: Leaving directory '/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-6fQL2C' + COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_0e288' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_0e288.' + /usr/libexec/gcc/x86_64-linux-gnu/13/collect2 -plugin /usr/libexec/gcc/x86_64-linux-gnu/13/liblto_plugin.so -plugin-opt=/usr/libexec/gcc/x86_64-linux-gnu/13/lto-wrapper -plugin-opt=-fresolution=/tmp/ccJwGfaM.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_0e288 /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/13/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/13 -L/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/13/../../.. CMakeFiles/cmTC_0e288.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/13/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crtn.o + COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_0e288' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_0e288.' + gmake[1]: Leaving directory '/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-9KJdFc' exitCode: 0 - @@ -151,13 +151,13 @@ events: message: | Parsed CXX implicit link information: link line regex: [^( *|.*[/\\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\\]+-)?ld|collect2)[^/\\]*( |$)] - ignore line: [Change Dir: '/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-6fQL2C'] + ignore line: [Change Dir: '/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-9KJdFc'] ignore line: [] - ignore line: [Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_21458/fast] - ignore line: [/usr/bin/gmake -f CMakeFiles/cmTC_21458.dir/build.make CMakeFiles/cmTC_21458.dir/build] - ignore line: [gmake[1]: Entering directory '/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-6fQL2C'] - ignore line: [Building CXX object CMakeFiles/cmTC_21458.dir/CMakeCXXCompilerABI.cpp.o] - ignore line: [/usr/bin/c++ -v -o CMakeFiles/cmTC_21458.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-3.28/Modules/CMakeCXXCompilerABI.cpp] + ignore line: [Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_0e288/fast] + ignore line: [/usr/bin/gmake -f CMakeFiles/cmTC_0e288.dir/build.make CMakeFiles/cmTC_0e288.dir/build] + ignore line: [gmake[1]: Entering directory '/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-9KJdFc'] + ignore line: [Building CXX object CMakeFiles/cmTC_0e288.dir/CMakeCXXCompilerABI.cpp.o] + ignore line: [/usr/bin/c++ -v -o CMakeFiles/cmTC_0e288.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-3.28/Modules/CMakeCXXCompilerABI.cpp] ignore line: [Using built-in specs.] ignore line: [COLLECT_GCC=/usr/bin/c++] ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa] @@ -167,8 +167,8 @@ events: ignore line: [Thread model: posix] ignore line: [Supported LTO compression algorithms: zlib zstd] ignore line: [gcc version 13.3.0 (Ubuntu 13.3.0-6ubuntu2~24.04.1) ] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_21458.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_21458.dir/'] - ignore line: [ /usr/libexec/gcc/x86_64-linux-gnu/13/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/share/cmake-3.28/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_21458.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccuSiKHJ.s] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_0e288.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_0e288.dir/'] + ignore line: [ /usr/libexec/gcc/x86_64-linux-gnu/13/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/share/cmake-3.28/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_0e288.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/cciEtBVP.s] ignore line: [GNU C++17 (Ubuntu 13.3.0-6ubuntu2~24.04.1) version 13.3.0 (x86_64-linux-gnu)] ignore line: [ compiled by GNU C version 13.3.0 GMP version 6.3.0 MPFR version 4.2.1 MPC version 1.3.1 isl version isl-0.26-GMP] ignore line: [] @@ -189,15 +189,15 @@ events: ignore line: [ /usr/include] ignore line: [End of search list.] ignore line: [Compiler executable checksum: 7896445e4990772fdae9dc0659a99266] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_21458.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_21458.dir/'] - ignore line: [ as -v --64 -o CMakeFiles/cmTC_21458.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccuSiKHJ.s] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_0e288.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_0e288.dir/'] + ignore line: [ as -v --64 -o CMakeFiles/cmTC_0e288.dir/CMakeCXXCompilerABI.cpp.o /tmp/cciEtBVP.s] ignore line: [GNU assembler version 2.42 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.42] ignore line: [COMPILER_PATH=/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/] ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../:/lib/:/usr/lib/] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_21458.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_21458.dir/CMakeCXXCompilerABI.cpp.'] - ignore line: [Linking CXX executable cmTC_21458] - ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_21458.dir/link.txt --verbose=1] - ignore line: [/usr/bin/c++ -v CMakeFiles/cmTC_21458.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_21458 ] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_0e288.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_0e288.dir/CMakeCXXCompilerABI.cpp.'] + ignore line: [Linking CXX executable cmTC_0e288] + ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_0e288.dir/link.txt --verbose=1] + ignore line: [/usr/bin/c++ -v CMakeFiles/cmTC_0e288.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_0e288 ] ignore line: [Using built-in specs.] ignore line: [COLLECT_GCC=/usr/bin/c++] ignore line: [COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-linux-gnu/13/lto-wrapper] @@ -210,13 +210,13 @@ events: ignore line: [gcc version 13.3.0 (Ubuntu 13.3.0-6ubuntu2~24.04.1) ] ignore line: [COMPILER_PATH=/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/] ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../:/lib/:/usr/lib/] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_21458' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_21458.'] - link line: [ /usr/libexec/gcc/x86_64-linux-gnu/13/collect2 -plugin /usr/libexec/gcc/x86_64-linux-gnu/13/liblto_plugin.so -plugin-opt=/usr/libexec/gcc/x86_64-linux-gnu/13/lto-wrapper -plugin-opt=-fresolution=/tmp/ccR4K2gF.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_21458 /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/13/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/13 -L/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/13/../../.. CMakeFiles/cmTC_21458.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/13/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crtn.o] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_0e288' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_0e288.'] + link line: [ /usr/libexec/gcc/x86_64-linux-gnu/13/collect2 -plugin /usr/libexec/gcc/x86_64-linux-gnu/13/liblto_plugin.so -plugin-opt=/usr/libexec/gcc/x86_64-linux-gnu/13/lto-wrapper -plugin-opt=-fresolution=/tmp/ccJwGfaM.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_0e288 /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/13/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/13 -L/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/13/../../.. CMakeFiles/cmTC_0e288.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/13/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crtn.o] arg [/usr/libexec/gcc/x86_64-linux-gnu/13/collect2] ==> ignore arg [-plugin] ==> ignore arg [/usr/libexec/gcc/x86_64-linux-gnu/13/liblto_plugin.so] ==> ignore arg [-plugin-opt=/usr/libexec/gcc/x86_64-linux-gnu/13/lto-wrapper] ==> ignore - arg [-plugin-opt=-fresolution=/tmp/ccR4K2gF.res] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/ccJwGfaM.res] ==> ignore arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore arg [-plugin-opt=-pass-through=-lgcc] ==> ignore arg [-plugin-opt=-pass-through=-lc] ==> ignore @@ -234,7 +234,7 @@ events: arg [-znow] ==> ignore arg [-zrelro] ==> ignore arg [-o] ==> ignore - arg [cmTC_21458] ==> ignore + arg [cmTC_0e288] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/Scrt1.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/Scrt1.o] arg [/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crti.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crti.o] arg [/usr/lib/gcc/x86_64-linux-gnu/13/crtbeginS.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/13/crtbeginS.o] @@ -246,7 +246,7 @@ events: arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu] arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib] arg [-L/usr/lib/gcc/x86_64-linux-gnu/13/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/13/../../..] - arg [CMakeFiles/cmTC_21458.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [CMakeFiles/cmTC_0e288.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore arg [-lstdc++] ==> lib [stdc++] arg [-lm] ==> lib [m] arg [-lgcc_s] ==> lib [gcc_s] @@ -281,8 +281,8 @@ events: - "CMakeLists.txt:8 (find_package)" description: "Detecting CXX OpenMP compiler info" directories: - source: "/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-GvspNS" - binary: "/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-GvspNS" + source: "/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-Pzeiac" + binary: "/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-Pzeiac" cmakeVariables: CMAKE_CXX_FLAGS: "" CMAKE_CXX_FLAGS_DEBUG: "-g" @@ -291,13 +291,13 @@ events: variable: "OpenMP_COMPILE_RESULT_CXX_fopenmp" cached: true stdout: | - Change Dir: '/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-GvspNS' + Change Dir: '/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-Pzeiac' - Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_b23e5/fast - /usr/bin/gmake -f CMakeFiles/cmTC_b23e5.dir/build.make CMakeFiles/cmTC_b23e5.dir/build - gmake[1]: Entering directory '/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-GvspNS' - Building CXX object CMakeFiles/cmTC_b23e5.dir/OpenMPTryFlag.cpp.o - /usr/bin/c++ -fopenmp -v -std=gnu++14 -o CMakeFiles/cmTC_b23e5.dir/OpenMPTryFlag.cpp.o -c /home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-GvspNS/OpenMPTryFlag.cpp + Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_1afa4/fast + /usr/bin/gmake -f CMakeFiles/cmTC_1afa4.dir/build.make CMakeFiles/cmTC_1afa4.dir/build + gmake[1]: Entering directory '/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-Pzeiac' + Building CXX object CMakeFiles/cmTC_1afa4.dir/OpenMPTryFlag.cpp.o + /usr/bin/c++ -fopenmp -v -std=gnu++14 -o CMakeFiles/cmTC_1afa4.dir/OpenMPTryFlag.cpp.o -c /home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-Pzeiac/OpenMPTryFlag.cpp Using built-in specs. COLLECT_GCC=/usr/bin/c++ OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa @@ -307,8 +307,8 @@ events: Thread model: posix Supported LTO compression algorithms: zlib zstd gcc version 13.3.0 (Ubuntu 13.3.0-6ubuntu2~24.04.1) - COLLECT_GCC_OPTIONS='-fopenmp' '-v' '-std=gnu++14' '-o' 'CMakeFiles/cmTC_b23e5.dir/OpenMPTryFlag.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-pthread' '-dumpdir' 'CMakeFiles/cmTC_b23e5.dir/' - /usr/libexec/gcc/x86_64-linux-gnu/13/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE -D_REENTRANT /home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-GvspNS/OpenMPTryFlag.cpp -quiet -dumpdir CMakeFiles/cmTC_b23e5.dir/ -dumpbase OpenMPTryFlag.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -std=gnu++14 -version -fopenmp -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccpB51rF.s + COLLECT_GCC_OPTIONS='-fopenmp' '-v' '-std=gnu++14' '-o' 'CMakeFiles/cmTC_1afa4.dir/OpenMPTryFlag.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-pthread' '-dumpdir' 'CMakeFiles/cmTC_1afa4.dir/' + /usr/libexec/gcc/x86_64-linux-gnu/13/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE -D_REENTRANT /home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-Pzeiac/OpenMPTryFlag.cpp -quiet -dumpdir CMakeFiles/cmTC_1afa4.dir/ -dumpbase OpenMPTryFlag.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -std=gnu++14 -version -fopenmp -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccvq5etP.s GNU C++14 (Ubuntu 13.3.0-6ubuntu2~24.04.1) version 13.3.0 (x86_64-linux-gnu) compiled by GNU C version 13.3.0, GMP version 6.3.0, MPFR version 4.2.1, MPC version 1.3.1, isl version isl-0.26-GMP @@ -329,15 +329,15 @@ events: /usr/include End of search list. Compiler executable checksum: 7896445e4990772fdae9dc0659a99266 - COLLECT_GCC_OPTIONS='-fopenmp' '-v' '-std=gnu++14' '-o' 'CMakeFiles/cmTC_b23e5.dir/OpenMPTryFlag.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-pthread' '-dumpdir' 'CMakeFiles/cmTC_b23e5.dir/' - as -v --64 -o CMakeFiles/cmTC_b23e5.dir/OpenMPTryFlag.cpp.o /tmp/ccpB51rF.s + COLLECT_GCC_OPTIONS='-fopenmp' '-v' '-std=gnu++14' '-o' 'CMakeFiles/cmTC_1afa4.dir/OpenMPTryFlag.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-pthread' '-dumpdir' 'CMakeFiles/cmTC_1afa4.dir/' + as -v --64 -o CMakeFiles/cmTC_1afa4.dir/OpenMPTryFlag.cpp.o /tmp/ccvq5etP.s GNU assembler version 2.42 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.42 COMPILER_PATH=/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/ LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../:/lib/:/usr/lib/ - COLLECT_GCC_OPTIONS='-fopenmp' '-v' '-std=gnu++14' '-o' 'CMakeFiles/cmTC_b23e5.dir/OpenMPTryFlag.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-pthread' '-dumpdir' 'CMakeFiles/cmTC_b23e5.dir/OpenMPTryFlag.cpp.' - Linking CXX executable cmTC_b23e5 - /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_b23e5.dir/link.txt --verbose=1 - /usr/bin/c++ -fopenmp -v CMakeFiles/cmTC_b23e5.dir/OpenMPTryFlag.cpp.o -o cmTC_b23e5 -v + COLLECT_GCC_OPTIONS='-fopenmp' '-v' '-std=gnu++14' '-o' 'CMakeFiles/cmTC_1afa4.dir/OpenMPTryFlag.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-pthread' '-dumpdir' 'CMakeFiles/cmTC_1afa4.dir/OpenMPTryFlag.cpp.' + Linking CXX executable cmTC_1afa4 + /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_1afa4.dir/link.txt --verbose=1 + /usr/bin/c++ -fopenmp -v CMakeFiles/cmTC_1afa4.dir/OpenMPTryFlag.cpp.o -o cmTC_1afa4 -v Using built-in specs. COLLECT_GCC=/usr/bin/c++ COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-linux-gnu/13/lto-wrapper @@ -351,10 +351,10 @@ events: COMPILER_PATH=/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/ LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../:/lib/:/usr/lib/ Reading specs from /usr/lib/gcc/x86_64-linux-gnu/13/libgomp.spec - COLLECT_GCC_OPTIONS='-fopenmp' '-v' '-o' 'cmTC_b23e5' '-v' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-pthread' '-dumpdir' 'cmTC_b23e5.' - /usr/libexec/gcc/x86_64-linux-gnu/13/collect2 -plugin /usr/libexec/gcc/x86_64-linux-gnu/13/liblto_plugin.so -plugin-opt=/usr/libexec/gcc/x86_64-linux-gnu/13/lto-wrapper -plugin-opt=-fresolution=/tmp/cczYiwNl.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lpthread -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_b23e5 /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/13/crtbeginS.o /usr/lib/gcc/x86_64-linux-gnu/13/crtoffloadbegin.o -L/usr/lib/gcc/x86_64-linux-gnu/13 -L/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/13/../../.. CMakeFiles/cmTC_b23e5.dir/OpenMPTryFlag.cpp.o -lstdc++ -lm -lgomp -lgcc_s -lgcc -lpthread -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/13/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crtn.o /usr/lib/gcc/x86_64-linux-gnu/13/crtoffloadend.o - COLLECT_GCC_OPTIONS='-fopenmp' '-v' '-o' 'cmTC_b23e5' '-v' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-pthread' '-dumpdir' 'cmTC_b23e5.' - gmake[1]: Leaving directory '/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-GvspNS' + COLLECT_GCC_OPTIONS='-fopenmp' '-v' '-o' 'cmTC_1afa4' '-v' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-pthread' '-dumpdir' 'cmTC_1afa4.' + /usr/libexec/gcc/x86_64-linux-gnu/13/collect2 -plugin /usr/libexec/gcc/x86_64-linux-gnu/13/liblto_plugin.so -plugin-opt=/usr/libexec/gcc/x86_64-linux-gnu/13/lto-wrapper -plugin-opt=-fresolution=/tmp/cc4kg3jz.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lpthread -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_1afa4 /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/13/crtbeginS.o /usr/lib/gcc/x86_64-linux-gnu/13/crtoffloadbegin.o -L/usr/lib/gcc/x86_64-linux-gnu/13 -L/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/13/../../.. CMakeFiles/cmTC_1afa4.dir/OpenMPTryFlag.cpp.o -lstdc++ -lm -lgomp -lgcc_s -lgcc -lpthread -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/13/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crtn.o /usr/lib/gcc/x86_64-linux-gnu/13/crtoffloadend.o + COLLECT_GCC_OPTIONS='-fopenmp' '-v' '-o' 'cmTC_1afa4' '-v' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-pthread' '-dumpdir' 'cmTC_1afa4.' + gmake[1]: Leaving directory '/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-Pzeiac' exitCode: 0 - @@ -366,13 +366,13 @@ events: message: | Parsed CXX OpenMP implicit link information from above output: link line regex: [^( *|.*[/\\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\\]+-)?ld|collect2)[^/\\]*( |$)] - ignore line: [Change Dir: '/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-GvspNS'] + ignore line: [Change Dir: '/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-Pzeiac'] ignore line: [] - ignore line: [Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_b23e5/fast] - ignore line: [/usr/bin/gmake -f CMakeFiles/cmTC_b23e5.dir/build.make CMakeFiles/cmTC_b23e5.dir/build] - ignore line: [gmake[1]: Entering directory '/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-GvspNS'] - ignore line: [Building CXX object CMakeFiles/cmTC_b23e5.dir/OpenMPTryFlag.cpp.o] - ignore line: [/usr/bin/c++ -fopenmp -v -std=gnu++14 -o CMakeFiles/cmTC_b23e5.dir/OpenMPTryFlag.cpp.o -c /home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-GvspNS/OpenMPTryFlag.cpp] + ignore line: [Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_1afa4/fast] + ignore line: [/usr/bin/gmake -f CMakeFiles/cmTC_1afa4.dir/build.make CMakeFiles/cmTC_1afa4.dir/build] + ignore line: [gmake[1]: Entering directory '/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-Pzeiac'] + ignore line: [Building CXX object CMakeFiles/cmTC_1afa4.dir/OpenMPTryFlag.cpp.o] + ignore line: [/usr/bin/c++ -fopenmp -v -std=gnu++14 -o CMakeFiles/cmTC_1afa4.dir/OpenMPTryFlag.cpp.o -c /home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-Pzeiac/OpenMPTryFlag.cpp] ignore line: [Using built-in specs.] ignore line: [COLLECT_GCC=/usr/bin/c++] ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa] @@ -382,8 +382,8 @@ events: ignore line: [Thread model: posix] ignore line: [Supported LTO compression algorithms: zlib zstd] ignore line: [gcc version 13.3.0 (Ubuntu 13.3.0-6ubuntu2~24.04.1) ] - ignore line: [COLLECT_GCC_OPTIONS='-fopenmp' '-v' '-std=gnu++14' '-o' 'CMakeFiles/cmTC_b23e5.dir/OpenMPTryFlag.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-pthread' '-dumpdir' 'CMakeFiles/cmTC_b23e5.dir/'] - ignore line: [ /usr/libexec/gcc/x86_64-linux-gnu/13/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE -D_REENTRANT /home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-GvspNS/OpenMPTryFlag.cpp -quiet -dumpdir CMakeFiles/cmTC_b23e5.dir/ -dumpbase OpenMPTryFlag.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -std=gnu++14 -version -fopenmp -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccpB51rF.s] + ignore line: [COLLECT_GCC_OPTIONS='-fopenmp' '-v' '-std=gnu++14' '-o' 'CMakeFiles/cmTC_1afa4.dir/OpenMPTryFlag.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-pthread' '-dumpdir' 'CMakeFiles/cmTC_1afa4.dir/'] + ignore line: [ /usr/libexec/gcc/x86_64-linux-gnu/13/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE -D_REENTRANT /home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-Pzeiac/OpenMPTryFlag.cpp -quiet -dumpdir CMakeFiles/cmTC_1afa4.dir/ -dumpbase OpenMPTryFlag.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -std=gnu++14 -version -fopenmp -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccvq5etP.s] ignore line: [GNU C++14 (Ubuntu 13.3.0-6ubuntu2~24.04.1) version 13.3.0 (x86_64-linux-gnu)] ignore line: [ compiled by GNU C version 13.3.0 GMP version 6.3.0 MPFR version 4.2.1 MPC version 1.3.1 isl version isl-0.26-GMP] ignore line: [] @@ -404,15 +404,15 @@ events: ignore line: [ /usr/include] ignore line: [End of search list.] ignore line: [Compiler executable checksum: 7896445e4990772fdae9dc0659a99266] - ignore line: [COLLECT_GCC_OPTIONS='-fopenmp' '-v' '-std=gnu++14' '-o' 'CMakeFiles/cmTC_b23e5.dir/OpenMPTryFlag.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-pthread' '-dumpdir' 'CMakeFiles/cmTC_b23e5.dir/'] - ignore line: [ as -v --64 -o CMakeFiles/cmTC_b23e5.dir/OpenMPTryFlag.cpp.o /tmp/ccpB51rF.s] + ignore line: [COLLECT_GCC_OPTIONS='-fopenmp' '-v' '-std=gnu++14' '-o' 'CMakeFiles/cmTC_1afa4.dir/OpenMPTryFlag.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-pthread' '-dumpdir' 'CMakeFiles/cmTC_1afa4.dir/'] + ignore line: [ as -v --64 -o CMakeFiles/cmTC_1afa4.dir/OpenMPTryFlag.cpp.o /tmp/ccvq5etP.s] ignore line: [GNU assembler version 2.42 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.42] ignore line: [COMPILER_PATH=/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/] ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../:/lib/:/usr/lib/] - ignore line: [COLLECT_GCC_OPTIONS='-fopenmp' '-v' '-std=gnu++14' '-o' 'CMakeFiles/cmTC_b23e5.dir/OpenMPTryFlag.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-pthread' '-dumpdir' 'CMakeFiles/cmTC_b23e5.dir/OpenMPTryFlag.cpp.'] - ignore line: [Linking CXX executable cmTC_b23e5] - ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_b23e5.dir/link.txt --verbose=1] - ignore line: [/usr/bin/c++ -fopenmp -v CMakeFiles/cmTC_b23e5.dir/OpenMPTryFlag.cpp.o -o cmTC_b23e5 -v ] + ignore line: [COLLECT_GCC_OPTIONS='-fopenmp' '-v' '-std=gnu++14' '-o' 'CMakeFiles/cmTC_1afa4.dir/OpenMPTryFlag.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-pthread' '-dumpdir' 'CMakeFiles/cmTC_1afa4.dir/OpenMPTryFlag.cpp.'] + ignore line: [Linking CXX executable cmTC_1afa4] + ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_1afa4.dir/link.txt --verbose=1] + ignore line: [/usr/bin/c++ -fopenmp -v CMakeFiles/cmTC_1afa4.dir/OpenMPTryFlag.cpp.o -o cmTC_1afa4 -v ] ignore line: [Using built-in specs.] ignore line: [COLLECT_GCC=/usr/bin/c++] ignore line: [COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-linux-gnu/13/lto-wrapper] @@ -426,13 +426,13 @@ events: ignore line: [COMPILER_PATH=/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/] ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../:/lib/:/usr/lib/] ignore line: [Reading specs from /usr/lib/gcc/x86_64-linux-gnu/13/libgomp.spec] - ignore line: [COLLECT_GCC_OPTIONS='-fopenmp' '-v' '-o' 'cmTC_b23e5' '-v' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-pthread' '-dumpdir' 'cmTC_b23e5.'] - link line: [ /usr/libexec/gcc/x86_64-linux-gnu/13/collect2 -plugin /usr/libexec/gcc/x86_64-linux-gnu/13/liblto_plugin.so -plugin-opt=/usr/libexec/gcc/x86_64-linux-gnu/13/lto-wrapper -plugin-opt=-fresolution=/tmp/cczYiwNl.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lpthread -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_b23e5 /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/13/crtbeginS.o /usr/lib/gcc/x86_64-linux-gnu/13/crtoffloadbegin.o -L/usr/lib/gcc/x86_64-linux-gnu/13 -L/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/13/../../.. CMakeFiles/cmTC_b23e5.dir/OpenMPTryFlag.cpp.o -lstdc++ -lm -lgomp -lgcc_s -lgcc -lpthread -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/13/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crtn.o /usr/lib/gcc/x86_64-linux-gnu/13/crtoffloadend.o] + ignore line: [COLLECT_GCC_OPTIONS='-fopenmp' '-v' '-o' 'cmTC_1afa4' '-v' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-pthread' '-dumpdir' 'cmTC_1afa4.'] + link line: [ /usr/libexec/gcc/x86_64-linux-gnu/13/collect2 -plugin /usr/libexec/gcc/x86_64-linux-gnu/13/liblto_plugin.so -plugin-opt=/usr/libexec/gcc/x86_64-linux-gnu/13/lto-wrapper -plugin-opt=-fresolution=/tmp/cc4kg3jz.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lpthread -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_1afa4 /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/13/crtbeginS.o /usr/lib/gcc/x86_64-linux-gnu/13/crtoffloadbegin.o -L/usr/lib/gcc/x86_64-linux-gnu/13 -L/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/13/../../.. CMakeFiles/cmTC_1afa4.dir/OpenMPTryFlag.cpp.o -lstdc++ -lm -lgomp -lgcc_s -lgcc -lpthread -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/13/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crtn.o /usr/lib/gcc/x86_64-linux-gnu/13/crtoffloadend.o] arg [/usr/libexec/gcc/x86_64-linux-gnu/13/collect2] ==> ignore arg [-plugin] ==> ignore arg [/usr/libexec/gcc/x86_64-linux-gnu/13/liblto_plugin.so] ==> ignore arg [-plugin-opt=/usr/libexec/gcc/x86_64-linux-gnu/13/lto-wrapper] ==> ignore - arg [-plugin-opt=-fresolution=/tmp/cczYiwNl.res] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/cc4kg3jz.res] ==> ignore arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore arg [-plugin-opt=-pass-through=-lgcc] ==> ignore arg [-plugin-opt=-pass-through=-lpthread] ==> ignore @@ -451,7 +451,7 @@ events: arg [-znow] ==> ignore arg [-zrelro] ==> ignore arg [-o] ==> ignore - arg [cmTC_b23e5] ==> ignore + arg [cmTC_1afa4] ==> ignore arg [-L/usr/lib/gcc/x86_64-linux-gnu/13] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/13] arg [-L/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu] arg [-L/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib] @@ -460,7 +460,7 @@ events: arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu] arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib] arg [-L/usr/lib/gcc/x86_64-linux-gnu/13/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/13/../../..] - arg [CMakeFiles/cmTC_b23e5.dir/OpenMPTryFlag.cpp.o] ==> ignore + arg [CMakeFiles/cmTC_1afa4.dir/OpenMPTryFlag.cpp.o] ==> ignore arg [-lstdc++] ==> lib [stdc++] arg [-lm] ==> lib [m] arg [-lgomp] ==> lib [gomp] @@ -492,8 +492,8 @@ events: - "CMakeLists.txt:8 (find_package)" description: "Detecting CXX OpenMP version" directories: - source: "/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-1AoRnd" - binary: "/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-1AoRnd" + source: "/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-ktbnRq" + binary: "/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-ktbnRq" cmakeVariables: CMAKE_CXX_FLAGS: "" CMAKE_CXX_FLAGS_DEBUG: "-g" @@ -502,17 +502,17 @@ events: variable: "OpenMP_SPECTEST_CXX_" cached: true stdout: | - Change Dir: '/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-1AoRnd' + Change Dir: '/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-ktbnRq' - Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_d43db/fast - /usr/bin/gmake -f CMakeFiles/cmTC_d43db.dir/build.make CMakeFiles/cmTC_d43db.dir/build - gmake[1]: Entering directory '/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-1AoRnd' - Building CXX object CMakeFiles/cmTC_d43db.dir/OpenMPCheckVersion.cpp.o - /usr/bin/c++ -fopenmp -std=gnu++14 -o CMakeFiles/cmTC_d43db.dir/OpenMPCheckVersion.cpp.o -c /home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-1AoRnd/OpenMPCheckVersion.cpp - Linking CXX executable cmTC_d43db - /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_d43db.dir/link.txt --verbose=1 - /usr/bin/c++ -fopenmp CMakeFiles/cmTC_d43db.dir/OpenMPCheckVersion.cpp.o -o cmTC_d43db - gmake[1]: Leaving directory '/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-1AoRnd' + Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_b97f2/fast + /usr/bin/gmake -f CMakeFiles/cmTC_b97f2.dir/build.make CMakeFiles/cmTC_b97f2.dir/build + gmake[1]: Entering directory '/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-ktbnRq' + Building CXX object CMakeFiles/cmTC_b97f2.dir/OpenMPCheckVersion.cpp.o + /usr/bin/c++ -fopenmp -std=gnu++14 -o CMakeFiles/cmTC_b97f2.dir/OpenMPCheckVersion.cpp.o -c /home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-ktbnRq/OpenMPCheckVersion.cpp + Linking CXX executable cmTC_b97f2 + /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_b97f2.dir/link.txt --verbose=1 + /usr/bin/c++ -fopenmp CMakeFiles/cmTC_b97f2.dir/OpenMPCheckVersion.cpp.o -o cmTC_b97f2 + gmake[1]: Leaving directory '/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-ktbnRq' exitCode: 0 ... diff --git a/build/bin/dense-neural-network b/build/bin/dense-neural-network index e826a89c68d163e459f5098acc1e3fbbdfaca98f..27a9fd6070bf241005c9ebd810e0be7c7e508400 100755 GIT binary patch literal 123864 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 Gb^bp|utA{! literal 154360 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�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 BnzR4_ diff --git a/build/examples/dense-neural-network/CMakeFiles/dense-neural-network.dir/main.cpp.o b/build/examples/dense-neural-network/CMakeFiles/dense-neural-network.dir/main.cpp.o index fee467bc16740e6bb16f78d40bad1ae3e6ebb9b9..5621ccb3ace57c9c07ce9e4cf4460999ef31897b 100644 GIT binary patch literal 260000 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

{1C?d^ZYvgaSr?}#{F~t<3!KJz=wI0js5cl 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 Hi_HHYA|`X4 literal 325752 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

D14G)0o#QeDexmB6%xi^EhSQ|qzJ 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 DYA6 +//#include +//#include + + + + + +int main(int argc, char const *argv[]) +{ + + uint64_t number_of_classes = 2; + uint64_t number_of_samples = 1000; + uint64_t number_of_epochs = 10000; + + utils::Mf X; + utils::Mf X_test; + utils::Matrix y; + utils::Matrix y_test; + float data_loss; + float regularization_loss; + float loss; + float accuracy; + + utils::Vector class_targets; + utils::Matrix predictions; + + + // Create dataset + //neural_networks::create_spital_data(number_of_samples, number_of_classes, X, y); + //neural_networks::create_vertical_data(number_of_samples, number_of_classes, X, y); + neural_networks::create_sine_data(number_of_samples, // samples + 2.0f* 3.1415f, // length + X, + y); + + + + + // Create Dense layer with 2 input featues and 3 output values + neural_networks::Dense_Layer dense1( + 1, 64, // input/output + 0.0f, // weight L1 + 5e-5f, // weight L2 + 0.0f, // bias L1 + 5e-5f // bias L2 + ); + neural_networks::Activation_ReLU activation1; + //neural_networks::Dropout_Layer dropout1(0.1); + + neural_networks::Dense_Layer dense2( + 64, 64, // input/output + 0.0f, // weight L1 + 5e-5f, // weight L2 + 0.0f, // bias L1 + 5e-5f // bias L2 + ); + neural_networks::Activation_ReLU activation2; + + + neural_networks::Dense_Layer dense3( + 64, 1, // input/output + 0.0f, // weight L1 + 5e-5f, // weight L2 + 0.0f, // bias L1 + 5e-5f // bias L2 + ); + neural_networks::Activation_Linear activation3; + + + neural_networks::Loss_MeanSquaredError loss_function; + neural_networks::Optimizer_Adam optimizer( + 0.001, // Learning-rate + 1e-3, // Learning-rate decay + 1e-7, // epsilons + 0.9, // beta 1 + 0.999 // beta 2 + ); + + + /* Accuracy precision for accuracy calculation + # There are no really accuracy factor for regression problem, + # but we can simulate/approximate it. We'll calculate it by checking + # how many values have a difference to their ground truth equivalent + # less than given precision + # We'll calculate this precision as a fraction of standard deviation + # of al the ground truth values */ + // accuracy_precision = np.std(y) / 250 + float accuracy_precision = numerics::standard_deviation(y)/ 250.0f; + + + // Train in loop + for (uint64_t epoch = 0; epoch < number_of_epochs+1; ++epoch){ + + // Perform a forward pass of our training data through this layer + dense1.forward(X); + activation1.forward(dense1.outputs); + //dropout1.forward(activation1.outputs); + + dense2.forward(activation1.outputs); + activation2.forward(dense2.outputs); + + dense3.forward(activation2.outputs); + activation3.forward(dense3.outputs); + + // Perform a foard pass through the activation/loss function + // takes the output of the second dense layer here and returns loss + data_loss = loss_function.calculate(activation3.outputs, y); + + // Calculate regularization penalty + regularization_loss = loss_function.regularization_loss(dense1) + + loss_function.regularization_loss(dense2); + + loss = data_loss + regularization_loss; + + predictions = activation3.outputs; + accuracy = numerics::mean(numerics::less( numerics::abs( numerics::sub(predictions, y)), accuracy_precision)); + //accuracy = numerics::mean(numerics::equal_elementwise_serial(predictions, utils::veccast(y.get_col(0)))); + + + if (!(epoch%100) && epoch != 0){ + + std::cout << "epoch: " << epoch; + std::cout << ", acc: " << accuracy; + std::cout << ", loss: " << loss; + std::cout << ", data_loss: " << data_loss; + std::cout << ", regularization_loss: " << regularization_loss; + std::cout << ", lr: " << optimizer.current_learning_rate; + std::cout << std::endl; + + } + + // Backward pass + loss_function.backward(activation3.outputs, y); + + activation3.backward(loss_function.dinputs); + dense3.backward(activation3.dinputs); + + activation2.backward(dense3.dinputs); + dense2.backward(activation2.dinputs); + + activation1.backward(dense2.dinputs); + dense1.backward(activation1.dinputs); + + // Update weights and biases + optimizer.pre_update_params(); + optimizer.update_params(dense1); + optimizer.update_params(dense2); + optimizer.update_params(dense3); + optimizer.post_update_params(); + + } +/* +std::cout << "X, y, pred:" << std::endl; + +for (uint64_t i = 0; i < X.rows(); ++i) { + std::cout << X(i, 0) + << ", " + << y(i, 0) + << ", " + << activation3.outputs(i, 0) + << std::endl; +} + + // Validate the model + + // Create dataset + neural_networks::create_spital_data(100, number_of_classes, X_test, y_test); + + // Perform a forward pass of our training data through this layer + dense1.forward(X_test); + activation1.forward(dense1.outputs); + //dropout1.forward(activation1.outputs); + + dense2.forward(activation1.outputs); + activation2.forward(dense2.outputs); + + dense3.forward(activation2.outputs); + activation3.forward(dense3.outputs); + + // Perform a foard pass through the activation/loss function + // takes the output of the second dense layer here and returns loss + data_loss = loss_activation.calculate(activation3.outputs, y_test); + + // Calculate regularization penalty + regularization_loss = loss_activation.regularization_loss(dense1) + + loss_activation.regularization_loss(dense2) + + loss_activation.regularization_loss(dense3); + + loss = data_loss + regularization_loss; + + + // skal flyttes ned under loss functions. + predictions = activation3.outputs(); + predictions = numerics::mean(numerics::abs(numerics::sub(predictions, y))); + std::cout << predictions << std::endl; + + // Calculate accuracy from output of activation2 and targets + predictions = numerics::greater_than(activation3.outputs, 0.5f).get_col(0); + + accuracy = numerics::mean(numerics::equal_elementwise_serial(predictions, utils::veccast(y_test.get_col(0)))); + + + std::cout << "validation, acc: " << accuracy << ", loss: " << loss << std::endl; +*/ + return 0; +} \ No newline at end of file diff --git a/examples/dense-neural-network/main.cpp b/examples/dense-neural-network/main.cpp index 527305a..1ed010e 100644 --- a/examples/dense-neural-network/main.cpp +++ b/examples/dense-neural-network/main.cpp @@ -21,93 +21,107 @@ int main(int argc, char const *argv[]) { uint64_t number_of_classes = 2; - uint64_t number_of_samples = 150; - uint64_t number_of_epochs = 1000; + uint64_t number_of_samples = 1000; + uint64_t number_of_epochs = 10000; utils::Mf X; utils::Mf X_test; - utils::Matrix y; - utils::Matrix y_test; + utils::Matrix y; + utils::Matrix y_test; float data_loss; float regularization_loss; float loss; float accuracy; utils::Vector class_targets; - utils::Vector predictions; + utils::Matrix predictions; // Create dataset - neural_networks::create_spital_data(number_of_samples, number_of_classes, X, y); + //neural_networks::create_spital_data(number_of_samples, number_of_classes, X, y); //neural_networks::create_vertical_data(number_of_samples, number_of_classes, X, y); + neural_networks::create_sine_data(number_of_samples, // samples + 2.0f* 3.1415f, // length + X, + y); + + + + neural_networks::Model model; // Create Dense layer with 2 input featues and 3 output values neural_networks::Dense_Layer dense1( - 2, 16, // input/output + 1, 64, // input/output 0.0f, // weight L1 - 5e-4f, // weight L2 + 5e-5f, // weight L2 0.0f, // bias L1 - 5e-4f // bias L2 + 5e-5f // bias L2 ); - - // Create ReLU activation (to be used with Dense layer) neural_networks::Activation_ReLU activation1; neural_networks::Dropout_Layer dropout1(0.1); - - - // Create a second Dense layer with 16 inputs (as we take the vlaues from the last layer) - // and 16 output values neural_networks::Dense_Layer dense2( - 16, 16, // input/output + 64, 64, // input/output 0.0f, // weight L1 - 5e-4f, // weight L2 + 5e-5f, // weight L2 0.0f, // bias L1 - 5e-4f // bias L2 + 5e-5f // bias L2 ); - neural_networks::Activation_Softmax activation2; + neural_networks::Activation_ReLU activation2; - // Create a second Dense layer with 3 inputs (as we take the vlaues from the last layer) - // and 3 output values neural_networks::Dense_Layer dense3( - 16, 1, // input/output + 64, 1, // input/output 0.0f, // weight L1 - 5e-4f, // weight L2 + 5e-5f, // weight L2 0.0f, // bias L1 - 5e-4f // bias L2 + 5e-5f // bias L2 ); - neural_networks::Activation_Sigmoid activation3; + neural_networks::Activation_Linear activation3; - // Create a Sfotmax classifier's combined loss and activation - //neural_networks::Activation_Softmax_Loss_CategoricalCrossentropy loss_activation; - neural_networks::Loss_BinaryCrossentropy loss_activation; - - // Create optimizer - //neural_networks::Optimizer_SGD optimizer(1, 1e-3, 0.5); - //neural_networks::Optimizer_Adagrad optimizer(1, 1e-3, 1e-6); - //neural_networks::Optimizer_RMSprop optimizer(1, 1e-3, 1e-6, 0.9); + neural_networks::Loss_MeanSquaredError loss_function; neural_networks::Optimizer_Adam optimizer( - 0.05, // Learning-rate - 5e-5, // Learning-rate decay - 1e-6, // epsilons + 0.001, // Learning-rate + 1e-3, // Learning-rate decay + 1e-7, // epsilons 0.9, // beta 1 0.999 // beta 2 ); + model.add(dense1); + model.add(activation1); + model.add(dropout1); + model.add(dense2); + model.add(activation2); + model.add(dense3); + model.add(activation3); + + + /* Accuracy precision for accuracy calculation + # There are no really accuracy factor for regression problem, + # but we can simulate/approximate it. We'll calculate it by checking + # how many values have a difference to their ground truth equivalent + # less than given precision + # We'll calculate this precision as a fraction of standard deviation + # of al the ground truth values */ + // accuracy_precision = np.std(y) / 250 + /* + float accuracy_precision = numerics::standard_deviation(y)/ 250.0f; + + // Train in loop for (uint64_t epoch = 0; epoch < number_of_epochs+1; ++epoch){ // Perform a forward pass of our training data through this layer dense1.forward(X); activation1.forward(dense1.outputs); - dropout1.forward(activation1.outputs); + //dropout1.forward(activation1.outputs); - dense2.forward(dropout1.outputs); + dense2.forward(activation1.outputs); activation2.forward(dense2.outputs); dense3.forward(activation2.outputs); @@ -115,25 +129,21 @@ int main(int argc, char const *argv[]) // Perform a foard pass through the activation/loss function // takes the output of the second dense layer here and returns loss - data_loss = loss_activation.calculate(activation3.outputs, y); + data_loss = loss_function.calculate(activation3.outputs, y); // Calculate regularization penalty - regularization_loss = loss_activation.regularization_loss(dense1) + - loss_activation.regularization_loss(dense2) + - loss_activation.regularization_loss(dense3); + regularization_loss = loss_function.regularization_loss(dense1) + + loss_function.regularization_loss(dense2); loss = data_loss + regularization_loss; - // Calculate accuracy from output of activation3 and targets - // Part in the brackets returns a binary mask - array consisting - // of True/False values, multiplying it by 1 changes it into array - // of 1s and 0s - predictions = numerics::greater_than(activation3.outputs, 0.5f).get_col(0); - accuracy = numerics::mean(numerics::equal_elementwise_serial(predictions, utils::veccast(y.get_col(0)))); + predictions = activation3.outputs; + accuracy = numerics::mean(numerics::less( numerics::abs( numerics::sub(predictions, y)), accuracy_precision)); + //accuracy = numerics::mean(numerics::equal_elementwise_serial(predictions, utils::veccast(y.get_col(0)))); - if (!(epoch%100)){ - + if (!(epoch%100) && epoch != 0){ + std::cout << "epoch: " << epoch; std::cout << ", acc: " << accuracy; std::cout << ", loss: " << loss; @@ -145,16 +155,15 @@ int main(int argc, char const *argv[]) } // Backward pass - loss_activation.backward(activation3.outputs, y); + loss_function.backward(activation3.outputs, y); - activation3.backward(loss_activation.dinputs); + activation3.backward(loss_function.dinputs); dense3.backward(activation3.dinputs); activation2.backward(dense3.dinputs); dense2.backward(activation2.dinputs); - dropout1.backward(dense2.dinputs); - activation1.backward(dropout1.dinputs); + activation1.backward(dense2.dinputs); dense1.backward(activation1.dinputs); // Update weights and biases @@ -166,6 +175,17 @@ int main(int argc, char const *argv[]) } +std::cout << "X, y, pred:" << std::endl; + +for (uint64_t i = 0; i < X.rows(); ++i) { + std::cout << X(i, 0) + << ", " + << y(i, 0) + << ", " + << activation3.outputs(i, 0) + << std::endl; +} + // Validate the model // Create dataset @@ -193,6 +213,12 @@ int main(int argc, char const *argv[]) loss = data_loss + regularization_loss; + + // skal flyttes ned under loss functions. + predictions = activation3.outputs(); + predictions = numerics::mean(numerics::abs(numerics::sub(predictions, y))); + std::cout << predictions << std::endl; + // Calculate accuracy from output of activation2 and targets predictions = numerics::greater_than(activation3.outputs, 0.5f).get_col(0); @@ -200,6 +226,6 @@ int main(int argc, char const *argv[]) std::cout << "validation, acc: " << accuracy << ", loss: " << loss << std::endl; - +*/ return 0; } \ No newline at end of file diff --git a/include/modules/neural_networks/activation_functions/Activation_Linear.h b/include/modules/neural_networks/activation_functions/Activation_Linear.h new file mode 100644 index 0000000..1423cec --- /dev/null +++ b/include/modules/neural_networks/activation_functions/Activation_Linear.h @@ -0,0 +1,33 @@ +#pragma once + +#include "core/omp_config.h" + +#include "utils/vector.h" +#include "utils/matrix.h" +#include "modules/neural_networks/layers/Layer.h" + + + +namespace neural_networks{ + + template + struct Activation_Linear : Layer{ + + utils::Matrix _inputs; + utils::Matrix outputs; + + utils::Matrix dinputs; + + void forward(const utils::Matrix& inputs){ + _inputs = inputs; + outputs = inputs; + } + void backward(const utils::Matrix& dvalues){ + + dinputs = dvalues; + } + }; + + + +} // end namespace neural_networks \ No newline at end of file diff --git a/include/modules/neural_networks/activation_functions/Activation_ReLU.h b/include/modules/neural_networks/activation_functions/Activation_ReLU.h index a2de5f8..cb07b92 100644 --- a/include/modules/neural_networks/activation_functions/Activation_ReLU.h +++ b/include/modules/neural_networks/activation_functions/Activation_ReLU.h @@ -4,12 +4,12 @@ #include "utils/vector.h" #include "utils/matrix.h" - +#include "modules/neural_networks/layers/Layer.h" namespace neural_networks{ template - struct Activation_ReLU{ + struct Activation_ReLU : Layer{ utils::Matrix _inputs; utils::Matrix outputs; diff --git a/include/modules/neural_networks/activation_functions/Activation_Sigmoid.h b/include/modules/neural_networks/activation_functions/Activation_Sigmoid.h index 2067c45..102cc52 100644 --- a/include/modules/neural_networks/activation_functions/Activation_Sigmoid.h +++ b/include/modules/neural_networks/activation_functions/Activation_Sigmoid.h @@ -4,6 +4,7 @@ #include "utils/vector.h" #include "utils/matrix.h" +#include "modules/neural_networks/layers/Layer.h" #include "numerics/neg.h" #include "numerics/exp.h" @@ -15,7 +16,7 @@ namespace neural_networks{ template - struct Activation_Sigmoid{ + struct Activation_Sigmoid : Layer{ utils::Matrix _inputs; utils::Matrix outputs; diff --git a/include/modules/neural_networks/activation_functions/Activation_Softmax.h b/include/modules/neural_networks/activation_functions/Activation_Softmax.h index 1237718..6e749f9 100644 --- a/include/modules/neural_networks/activation_functions/Activation_Softmax.h +++ b/include/modules/neural_networks/activation_functions/Activation_Softmax.h @@ -4,6 +4,7 @@ #include "utils/vector.h" #include "utils/matrix.h" +#include "modules/neural_networks/layers/Layer.h" #include "numerics/max.h" #include "numerics/sub.h" @@ -15,7 +16,7 @@ namespace neural_networks{ template - struct Activation_Softmax{ + struct Activation_Softmax : Layer{ //utils::Matrix exp_values; //utils::Matrix probabilities; diff --git a/include/modules/neural_networks/activation_functions/Activation_Softmax_Loss_CategoricalCrossentropy.h b/include/modules/neural_networks/activation_functions/Activation_Softmax_Loss_CategoricalCrossentropy.h index 764f4b3..370181f 100644 --- a/include/modules/neural_networks/activation_functions/Activation_Softmax_Loss_CategoricalCrossentropy.h +++ b/include/modules/neural_networks/activation_functions/Activation_Softmax_Loss_CategoricalCrossentropy.h @@ -4,6 +4,7 @@ #include "utils/vector.h" #include "utils/matrix.h" +#include "modules/neural_networks/layers/Layer.h" #include "numerics/max.h" #include "numerics/sub.h" @@ -17,7 +18,7 @@ namespace neural_networks{ template - struct Activation_Softmax_Loss_CategoricalCrossentropy{ + struct Activation_Softmax_Loss_CategoricalCrossentropy : Layer{ neural_networks::Activation_Softmax activation; neural_networks::Loss_CategoricalCrossentrophy loss; diff --git a/include/modules/neural_networks/datasets/sine.h b/include/modules/neural_networks/datasets/sine.h new file mode 100644 index 0000000..d5a58be --- /dev/null +++ b/include/modules/neural_networks/datasets/sine.h @@ -0,0 +1,37 @@ +#pragma once + +#include "./core/omp_config.h" +#include "./utils/matrix.h" +#include "./utils/vector.h" +#include "utils/generators/linspace.h" + +#include /* sin */ + +//#include "./utils/random.h" + +//#include + + +namespace neural_networks{ + + template + void create_sine_data(const uint64_t samples, const T length, utils::Matrix& X, utils::Matrix& y) { + + X.resize(samples, 1); + X.set_col(0, utils::linspace( + T{0}, // start + length, // stop + samples, // N + true // endpoint + )); + + y.resize(samples, 1); + + + for (uint64_t i = 0; i < samples; ++i){ + y(i,0) = std::sin(X(i,0)); + } + } + + +} // end namesoace NN \ No newline at end of file diff --git a/include/modules/neural_networks/layers/Dense_Layer.h b/include/modules/neural_networks/layers/Dense_Layer.h index be4fbde..66b125e 100644 --- a/include/modules/neural_networks/layers/Dense_Layer.h +++ b/include/modules/neural_networks/layers/Dense_Layer.h @@ -4,13 +4,17 @@ #include "utils/vector.h" #include "utils/matrix.h" +#include "Layer.h" + + #include "utils/random.h" +#include "random/random.h" namespace neural_networks{ template - struct Dense_Layer{ + struct Dense_Layer : Layer{ T weight_regularizer_l1 = {0}; T weight_regularizer_l2 = {0}; @@ -48,7 +52,7 @@ namespace neural_networks{ this->bias_regularizer_l1 = bias_regularizer_l1; this->bias_regularizer_l2 = bias_regularizer_l2; - weights.random(n_inputs, n_neurons, -1, 1); + weights = numerics::mul( rng::normal(n_inputs, n_neurons, 0.0f, 1.0f), 0.1f); //weights = numerics::random_matrix(n_inputs, n_neurons, -1, 1); biases.resize(n_neurons, T{0}); diff --git a/include/modules/neural_networks/layers/Dropout_Layer.h b/include/modules/neural_networks/layers/Dropout_Layer.h index 7b8b67e..c7b5a96 100644 --- a/include/modules/neural_networks/layers/Dropout_Layer.h +++ b/include/modules/neural_networks/layers/Dropout_Layer.h @@ -4,13 +4,15 @@ #include "utils/vector.h" #include "utils/matrix.h" +#include "modules/neural_networks/layers/Layer.h" + #include "random/random.h" namespace neural_networks{ template - struct Dropout_Layer{ + struct Dropout_Layer : Layer{ // Store rate, we invert it as for example for dropout // of 0.1 we need a success rate of 0.9 diff --git a/include/modules/neural_networks/layers/Layer.h b/include/modules/neural_networks/layers/Layer.h new file mode 100644 index 0000000..eec201a --- /dev/null +++ b/include/modules/neural_networks/layers/Layer.h @@ -0,0 +1,21 @@ +#pragma once + +#include "core/omp_config.h" + +#include "utils/vector.h" +#include "utils/matrix.h" + +namespace neural_networks{ + + +template + struct Layer { + utils::Matrix outputs; + utils::Matrix dinputs; + + virtual void forward(const utils::Matrix& inputs) = 0; + virtual void backward(const utils::Matrix& dvalues) = 0; + + virtual ~Layer() = default; + }; +} diff --git a/include/modules/neural_networks/loss/Loss.h b/include/modules/neural_networks/loss/Loss.h index 0234a51..52c8da9 100644 --- a/include/modules/neural_networks/loss/Loss.h +++ b/include/modules/neural_networks/loss/Loss.h @@ -10,7 +10,7 @@ namespace neural_networks{ - template + template struct Loss{ utils::Vector sample_losses; diff --git a/include/modules/neural_networks/loss/Loss_MeanAbsoluteError.h b/include/modules/neural_networks/loss/Loss_MeanAbsoluteError.h new file mode 100644 index 0000000..2093eea --- /dev/null +++ b/include/modules/neural_networks/loss/Loss_MeanAbsoluteError.h @@ -0,0 +1,58 @@ +#pragma once + +#include "core/omp_config.h" + +#include "utils/vector.h" +#include "utils/matrix.h" +#include "utils/matcast.h" + +#include "numerics/clip.h" +#include "numerics/log.h" +#include "numerics/sub.h" + +#include "Loss.h" + + +namespace neural_networks{ + + template + struct Loss_MeanAbsoluteError : Loss { + + utils::Matrix dinputs; + utils::Matrix y_true; + + utils::Vector sample_losses; + + + utils::Vector forward(const utils::Matrix& y_pred, const utils::Matrix& y_true) override{ + + + // Calculate loss + sample_losses = numerics::mean_rowwise(numerics::abs(numerics::sub(y_true, y_pred))); + + + // Return losses + return sample_losses; + } + + void backward(const utils::Matrix& dvalues, const utils::Matrix& y_true) override{ + + + // Number of samples + const T samples = static_cast (dvalues.rows()); + // Number of outputs in every sample + const T outputs = static_cast (dvalues.cols()); + + + // Gradient values + dinputs = numerics::div(numerics::sign(numerics::sub(y_true, dvalues)), outputs); + // Normalise gradient + dinputs = numerics::div(dinputs, samples); + + + } + }; + + + +} // end namespace neural_networks \ No newline at end of file diff --git a/include/modules/neural_networks/loss/Loss_MeanSquaredError.h b/include/modules/neural_networks/loss/Loss_MeanSquaredError.h new file mode 100644 index 0000000..2366f05 --- /dev/null +++ b/include/modules/neural_networks/loss/Loss_MeanSquaredError.h @@ -0,0 +1,58 @@ +#pragma once + +#include "core/omp_config.h" + +#include "utils/vector.h" +#include "utils/matrix.h" +#include "utils/matcast.h" + +#include "numerics/clip.h" +#include "numerics/log.h" +#include "numerics/sub.h" + +#include "Loss.h" + + +namespace neural_networks{ + + template + struct Loss_MeanSquaredError : Loss { + + utils::Matrix dinputs; + utils::Matrix y_true; + + utils::Vector sample_losses; + + + utils::Vector forward(const utils::Matrix& y_pred, const utils::Matrix& y_true) override{ + + + // Calculate loss + sample_losses = numerics::mean_rowwise(numerics::pow(numerics::sub(y_true, y_pred), T{2})); + + + // Return losses + return sample_losses; + } + + void backward(const utils::Matrix& dvalues, const utils::Matrix& y_true) override{ + + + // Number of samples + const T samples = static_cast (dvalues.rows()); + // Number of outputs in every sample + const T outputs = static_cast (dvalues.cols()); + + + // Gradient values + dinputs = numerics::mul(numerics::div(numerics::sub(y_true, dvalues), outputs), T{-2}); + // Normalise gradient + dinputs = numerics::div(dinputs, samples); + + + } + }; + + + +} // end namespace neural_networks \ No newline at end of file diff --git a/include/modules/neural_networks/model/model.h b/include/modules/neural_networks/model/model.h new file mode 100644 index 0000000..0a78cf9 --- /dev/null +++ b/include/modules/neural_networks/model/model.h @@ -0,0 +1,30 @@ +#pragma once + +#include "core/omp_config.h" + +#include "utils/vector.h" +#include "utils/matrix.h" + +#include "modules/neural_networks/layers/Layer.h" + + +namespace neural_networks { + + template + struct Model { + + std::vector*> layers; + + Model() = default; + + void add(Layer& layer) { + layers.push_back(&layer); + } + + }; + + + + + +} // end namespace neural_networks \ No newline at end of file diff --git a/include/modules/neural_networks/neural_networks.h b/include/modules/neural_networks/neural_networks.h index 35abaef..475f073 100644 --- a/include/modules/neural_networks/neural_networks.h +++ b/include/modules/neural_networks/neural_networks.h @@ -3,8 +3,9 @@ #include "datasets/spiral.h" #include "datasets/vertical.h" +#include "datasets/sine.h" - +#include "layers/Layer.h" #include "layers/Dense_Layer.h" #include "layers/Dropout_Layer.h" @@ -13,14 +14,21 @@ #include "activation_functions/Activation_Softmax.h" #include "activation_functions/Activation_Softmax_Loss_CategoricalCrossentropy.h" #include "activation_functions/Activation_Sigmoid.h" +#include "activation_functions/Activation_Linear.h" #include "loss/Loss.h" // Base #include "loss/Loss_CategoricalCrossentrophy.h" #include "loss/Loss_BinaryCrossentropy.h" +#include "loss/Loss_MeanSquaredError.h" + + #include "optimizers/Optimizer_SGD.h" #include "optimizers/Optimizer_Adagrad.h" #include "optimizers/Optimizer_RMSprop.h" -#include "optimizers/Optimizer_Adam.h" \ No newline at end of file +#include "optimizers/Optimizer_Adam.h" + + +#include "model/model.h" \ No newline at end of file diff --git a/include/numerics/detail/greater_or_less_serial.h b/include/numerics/detail/greater_or_less_serial.h new file mode 100644 index 0000000..789b049 --- /dev/null +++ b/include/numerics/detail/greater_or_less_serial.h @@ -0,0 +1,622 @@ +#pragma once + +#include //uint64_t + +#include "utils/vector.h" +#include "utils/matrix.h" + + +namespace numerics::detail{ + + + // + // ---------------- Greater - Vectors ---------------- + // + template + inline void inplace_greater_serial(utils::Vector& v, const T c) { + const uint64_t n = v.size(); + + if (n == 0){ + throw std::runtime_error("inplace_greater_serial: empty vector"); + } + + + for (uint64_t i = 0; i < n; ++i){ + if (v[i] < c){ + v[i] = T{0}; + } + else{ + v[i] = T{1}; + } + } + } + template + inline void inplace_greater_serial(utils::Vector& v, const utils::Vector& p) { + const uint64_t n = v.size(); + const uint64_t m = p.size(); + + if (n == 0){ + throw std::runtime_error("inplace_greater_serial: empty vector"); + } + + if (n != m){ + throw std::runtime_error("inplace_greater_serial: vector size mismatch"); + } + + + for (uint64_t i = 0; i < n; ++i){ + if (v[i] < p[i]){ + v[i] = T{0}; + } + else{ + v[i] = T{1}; + } + } + } + // + // ---------------- Greater - Matrices ---------------- + // + template + inline void inplace_greater_serial(utils::Matrix& A, const T c) { + const uint64_t rows = A.rows(); + const uint64_t cols = A.cols(); + + + if (rows == 0 || cols == 0){ + throw std::runtime_error("inplace_greater_serial: empty matrix"); + } + + for (uint64_t i = 0; i < rows; ++i){ + for (uint64_t j = 0; j < cols; ++j){ + if (A(i,j) < c){ + A(i,j) = T{0}; + } + else{ + A(i,j) = T{1}; + } + } + } + } + template + inline void inplace_greater_rowwise_serial(utils::Matrix& A, const utils::Vector& v) { + const uint64_t rows = A.rows(); + const uint64_t cols = A.cols(); + + + if (rows == 0 || cols == 0){ + throw std::runtime_error("inplace_greater_rowwise_serial: empty matrix"); + } + + if (rows != v.size()){ + throw std::runtime_error("inplace_greater_rowwise_serial: Matrix-Vector size mismatch"); + } + + for (uint64_t i = 0; i < rows; ++i){ + for (uint64_t j = 0; j < cols; ++j){ + if (A(i,j) < v[i]){ + A(i,j) = T{0}; + } + else{ + A(i,j) = T{1}; + } + } + } + } + template + inline void inplace_greater_colwise_serial(utils::Matrix& A, const utils::Vector& v) { + const uint64_t rows = A.rows(); + const uint64_t cols = A.cols(); + + + if (rows == 0 || cols == 0){ + throw std::runtime_error("inplace_greater_colwise_serial: empty matrix"); + } + + if (cols != v.size()){ + throw std::runtime_error("inplace_greater_colwise_serial: Matrix-Vector size mismatch"); + } + + for (uint64_t i = 0; i < rows; ++i){ + for (uint64_t j = 0; j < cols; ++j){ + if (A(i,j) < v[j]){ + A(i,j) = T{0}; + } + else{ + A(i,j) = T{1}; + } + } + } + } + template + inline void inplace_greater_serial(utils::Matrix& A, const utils::Matrix& B) { + const uint64_t rows = A.rows(); + const uint64_t cols = A.cols(); + + + if (rows == 0 || cols == 0){ + throw std::runtime_error("inplace_greater_serial: empty matrix"); + } + + if (rows != B.rows() || cols != B.cols()){ + throw std::runtime_error("inplace_greater_serial: Matrix size mismatch"); + } + + + for (uint64_t i = 0; i < rows; ++i){ + for (uint64_t j = 0; j < cols; ++j){ + if (A(i,j) < B(i,j)){ + A(i,j) = T{0}; + } + else{ + A(i,j) = T{1}; + } + } + } + } + + + + + + + + // + // ---------------- Greater or Equal - Vectors ---------------- + // + template + inline void inplace_greater_equal_serial(utils::Vector& v, const T c) { + const uint64_t n = v.size(); + + if (n == 0){ + throw std::runtime_error("inplace_greater_equal_serial: empty vector"); + } + + + for (uint64_t i = 0; i < n; ++i){ + if (v[i] <= c){ + v[i] = T{0}; + } + else{ + v[i] = T{1}; + } + } + } + template + inline void inplace_greater_equal_serial(utils::Vector& v, const utils::Vector& p) { + const uint64_t n = v.size(); + const uint64_t m = p.size(); + + if (n == 0){ + throw std::runtime_error("inplace_greater_equal_serial: empty vector"); + } + + if (n != m){ + throw std::runtime_error("inplace_greater_equal_serial: vector size mismatch"); + } + + + for (uint64_t i = 0; i < n; ++i){ + if (v[i] <= p[i]){ + v[i] = T{0}; + } + else{ + v[i] = T{1}; + } + } + } + // + // ---------------- Greater - Matrices ---------------- + // + template + inline void inplace_greater_equal_serial(utils::Matrix& A, const T c) { + const uint64_t rows = A.rows(); + const uint64_t cols = A.cols(); + + + if (rows == 0 || cols == 0){ + throw std::runtime_error("inplace_greater_equal_serial: empty matrix"); + } + + for (uint64_t i = 0; i < rows; ++i){ + for (uint64_t j = 0; j < cols; ++j){ + if (A(i,j) <= c){ + A(i,j) = T{0}; + } + else{ + A(i,j) = T{1}; + } + } + } + } + template + inline void inplace_greater_equal_rowwise_serial(utils::Matrix& A, const utils::Vector& v) { + const uint64_t rows = A.rows(); + const uint64_t cols = A.cols(); + + + if (rows == 0 || cols == 0){ + throw std::runtime_error("inplace_greater_equal_rowwise_serial: empty matrix"); + } + + if (rows != v.size()){ + throw std::runtime_error("inplace_greater_equal_rowwise_serial: Matrix-Vector size mismatch"); + } + + for (uint64_t i = 0; i < rows; ++i){ + for (uint64_t j = 0; j < cols; ++j){ + if (A(i,j) <= v[i]){ + A(i,j) = T{0}; + } + else{ + A(i,j) = T{1}; + } + } + } + } + template + inline void inplace_greater_equal_colwise_serial(utils::Matrix& A, const utils::Vector& v) { + const uint64_t rows = A.rows(); + const uint64_t cols = A.cols(); + + + if (rows == 0 || cols == 0){ + throw std::runtime_error("inplace_greater_equal_colwise_serial: empty matrix"); + } + + if (cols != v.size()){ + throw std::runtime_error("inplace_greater_equal_colwise_serial: Matrix-Vector size mismatch"); + } + + for (uint64_t i = 0; i < rows; ++i){ + for (uint64_t j = 0; j < cols; ++j){ + if (A(i,j) <= v[j]){ + A(i,j) = T{0}; + } + else{ + A(i,j) = T{1}; + } + } + } + } + template + inline void inplace_greater_equal_serial(utils::Matrix& A, const utils::Matrix& B) { + const uint64_t rows = A.rows(); + const uint64_t cols = A.cols(); + + + if (rows == 0 || cols == 0){ + throw std::runtime_error("inplace_greater_equal_serial: empty matrix"); + } + + if (rows != B.rows() || cols != B.cols()){ + throw std::runtime_error("inplace_greater_equal_serial: Matrix size mismatch"); + } + + + for (uint64_t i = 0; i < rows; ++i){ + for (uint64_t j = 0; j < cols; ++j){ + if (A(i,j) <= B(i,j)){ + A(i,j) = T{0}; + } + else{ + A(i,j) = T{1}; + } + } + } + } + + + + + + + + + + + + + + + + // + // ---------------- Less - Vectors ---------------- + // + template + inline void inplace_less_serial(utils::Vector& v, const T c) { + const uint64_t n = v.size(); + + if (n == 0){ + throw std::runtime_error("inplace_less_serial: empty vector"); + } + + + for (uint64_t i = 0; i < n; ++i){ + if (v[i] > c){ + v[i] = T{0}; + } + else{ + v[i] = T{1}; + } + } + } + template + inline void inplace_less_serial(utils::Vector& v, const utils::Vector& p) { + const uint64_t n = v.size(); + const uint64_t m = p.size(); + + if (n == 0){ + throw std::runtime_error("inplace_less_serial: empty vector"); + } + + if (n != m){ + throw std::runtime_error("inplace_less_serial: vector size mismatch"); + } + + + for (uint64_t i = 0; i < n; ++i){ + if (v[i] > p[i]){ + v[i] = T{0}; + } + else{ + v[i] = T{1}; + } + } + } + // + // ---------------- Greater - Matrices ---------------- + // + template + inline void inplace_less_serial(utils::Matrix& A, const T c) { + const uint64_t rows = A.rows(); + const uint64_t cols = A.cols(); + + + if (rows == 0 || cols == 0){ + throw std::runtime_error("inplace_less_serial: empty matrix"); + } + + for (uint64_t i = 0; i < rows; ++i){ + for (uint64_t j = 0; j < cols; ++j){ + if (A(i,j) > c){ + A(i,j) = T{0}; + } + else{ + A(i,j) = T{1}; + } + } + } + } + template + inline void inplace_less_rowwise_serial(utils::Matrix& A, const utils::Vector& v) { + const uint64_t rows = A.rows(); + const uint64_t cols = A.cols(); + + + if (rows == 0 || cols == 0){ + throw std::runtime_error("inplace_less_rowwise_serial: empty matrix"); + } + + if (rows != v.size()){ + throw std::runtime_error("inplace_less_rowwise_serial: Matrix-Vector size mismatch"); + } + + for (uint64_t i = 0; i < rows; ++i){ + for (uint64_t j = 0; j < cols; ++j){ + if (A(i,j) > v[i]){ + A(i,j) = T{0}; + } + else{ + A(i,j) = T{1}; + } + } + } + } + template + inline void inplace_less_colwise_serial(utils::Matrix& A, const utils::Vector& v) { + const uint64_t rows = A.rows(); + const uint64_t cols = A.cols(); + + + if (rows == 0 || cols == 0){ + throw std::runtime_error("inplace_less_colwise_serial: empty matrix"); + } + + if (cols != v.size()){ + throw std::runtime_error("inplace_less_colwise_serial: Matrix-Vector size mismatch"); + } + + for (uint64_t i = 0; i < rows; ++i){ + for (uint64_t j = 0; j < cols; ++j){ + if (A(i,j) > v[j]){ + A(i,j) = T{0}; + } + else{ + A(i,j) = T{1}; + } + } + } + } + template + inline void inplace_less_serial(utils::Matrix& A, const utils::Matrix& B) { + const uint64_t rows = A.rows(); + const uint64_t cols = A.cols(); + + + if (rows == 0 || cols == 0){ + throw std::runtime_error("inplace_less_serial: empty matrix"); + } + + if (rows != B.rows() || cols != B.cols()){ + throw std::runtime_error("inplace_less_serial: Matrix size mismatch"); + } + + + for (uint64_t i = 0; i < rows; ++i){ + for (uint64_t j = 0; j < cols; ++j){ + if (A(i,j) > B(i,j)){ + A(i,j) = T{0}; + } + else{ + A(i,j) = T{1}; + } + } + } + } + + + + + + + + // + // ---------------- Less or Equal - Vectors ---------------- + // + template + inline void inplace_less_equal_serial(utils::Vector& v, const T c) { + const uint64_t n = v.size(); + + if (n == 0){ + throw std::runtime_error("inplace_less_equal_serial: empty vector"); + } + + + for (uint64_t i = 0; i < n; ++i){ + if (v[i] >= c){ + v[i] = T{0}; + } + else{ + v[i] = T{1}; + } + } + } + template + inline void inplace_less_equal_serial(utils::Vector& v, const utils::Vector& p) { + const uint64_t n = v.size(); + const uint64_t m = p.size(); + + if (n == 0){ + throw std::runtime_error("inplace_less_equal_serial: empty vector"); + } + + if (n != m){ + throw std::runtime_error("inplace_less_equal_serial: vector size mismatch"); + } + + + for (uint64_t i = 0; i < n; ++i){ + if (v[i] >= p[i]){ + v[i] = T{0}; + } + else{ + v[i] = T{1}; + } + } + } + // + // ---------------- Greater - Matrices ---------------- + // + template + inline void inplace_less_equal_serial(utils::Matrix& A, const T c) { + const uint64_t rows = A.rows(); + const uint64_t cols = A.cols(); + + + if (rows == 0 || cols == 0){ + throw std::runtime_error("inplace_less_equal_serial: empty matrix"); + } + + for (uint64_t i = 0; i < rows; ++i){ + for (uint64_t j = 0; j < cols; ++j){ + if (A(i,j) >= c){ + A(i,j) = T{0}; + } + else{ + A(i,j) = T{1}; + } + } + } + } + template + inline void inplace_less_equal_rowwise_serial(utils::Matrix& A, const utils::Vector& v) { + const uint64_t rows = A.rows(); + const uint64_t cols = A.cols(); + + + if (rows == 0 || cols == 0){ + throw std::runtime_error("inplace_less_equal_rowwise_serial: empty matrix"); + } + + if (rows != v.size()){ + throw std::runtime_error("inplace_less_equal_rowwise_serial: Matrix-Vector size mismatch"); + } + + for (uint64_t i = 0; i < rows; ++i){ + for (uint64_t j = 0; j < cols; ++j){ + if (A(i,j) >= v[i]){ + A(i,j) = T{0}; + } + else{ + A(i,j) = T{1}; + } + } + } + } + template + inline void inplace_less_equal_colwise_serial(utils::Matrix& A, const utils::Vector& v) { + const uint64_t rows = A.rows(); + const uint64_t cols = A.cols(); + + + if (rows == 0 || cols == 0){ + throw std::runtime_error("inplace_less_equal_colwise_serial: empty matrix"); + } + + if (cols != v.size()){ + throw std::runtime_error("inplace_less_equal_colwise_serial: Matrix-Vector size mismatch"); + } + + for (uint64_t i = 0; i < rows; ++i){ + for (uint64_t j = 0; j < cols; ++j){ + if (A(i,j) >= v[j]){ + A(i,j) = T{0}; + } + else{ + A(i,j) = T{1}; + } + } + } + } + template + inline void inplace_less_equal_serial(utils::Matrix& A, const utils::Matrix& B) { + const uint64_t rows = A.rows(); + const uint64_t cols = A.cols(); + + + if (rows == 0 || cols == 0){ + throw std::runtime_error("inplace_less_equal_serial: empty matrix"); + } + + if (rows != B.rows() || cols != B.cols()){ + throw std::runtime_error("inplace_less_equal_serial: Matrix size mismatch"); + } + + + for (uint64_t i = 0; i < rows; ++i){ + for (uint64_t j = 0; j < cols; ++j){ + if (A(i,j) >= B(i,j)){ + A(i,j) = T{0}; + } + else{ + A(i,j) = T{1}; + } + } + } + } + + + + +} // namespace numerics + diff --git a/include/numerics/detail/sign_serial.h b/include/numerics/detail/sign_serial.h new file mode 100644 index 0000000..8c2f919 --- /dev/null +++ b/include/numerics/detail/sign_serial.h @@ -0,0 +1,48 @@ +#pragma once + +#include //uint64_t +#include // std::abs + +#include "utils/vector.h" +#include "utils/matrix.h" + +namespace numerics::detail{ + + + + template + void inplace_sign_serial(T& c) { + if (c < T{0}){ + c = T{-1}; + } + else if(c > T{0}){ + c = T{1}; + } + else{ + c = T{0}; + } + } + + template + void inplace_sign_serial(utils::Vector& v) { + const uint64_t n = v.size(); + for (uint64_t i = 0; i < n; ++i){ + inplace_sign_serial(v[i]); + } + } + + + template + void inplace_sign_serial(utils::Matrix& A) { + const uint64_t rows = A.rows(); + const uint64_t cols = A.cols(); + for (uint64_t i = 0; i < rows; ++i){ + for (uint64_t j = 0; j < cols; ++j){ + inplace_sign_serial(A(i,j)); + } + } + } + + +} // namespace numerics + diff --git a/include/numerics/detail/standard_deviation_serial.h b/include/numerics/detail/standard_deviation_serial.h new file mode 100644 index 0000000..d380f3a --- /dev/null +++ b/include/numerics/detail/standard_deviation_serial.h @@ -0,0 +1,61 @@ +#pragma once + +#include //uint64_t +#include // std::abs + +#include "utils/vector.h" +#include "utils/matrix.h" + +#include "numerics/mean.h" + +namespace numerics::detail{ + + + template + inline T standard_deviation_serial(const utils::Vector& v) { + const uint64_t n = v.size(); + + if (n == 0){ + throw std::runtime_error("std_serial: empty vector"); + } + + const T mean_value = numerics::mean(v); + + T sum_squared_diff = T{0}; + + + for (uint64_t i = 0; i < n; ++i){ + const T diff = v[i] - mean_value; + sum_squared_diff += diff * diff; + } + + const T variance = sum_squared_diff / static_cast(n); + + return numerics::sqrt(variance); + } + + + template + inline T standard_deviation_serial(const utils::Matrix& A) { + const uint64_t rows = A.rows(); + const uint64_t cols = A.cols(); + + const T mean_value = numerics::mean(A); + + T sum_squared_diff = T{0}; + + + for (uint64_t i = 0; i < rows; ++i){ + for (uint64_t j = 0; j < cols; ++j){ + const T diff = A(i,j) - mean_value; + sum_squared_diff += diff * diff; + } + } + const T variance = sum_squared_diff / static_cast(rows*cols); + + return numerics::sqrt(variance); + } + + +} // namespace numerics + diff --git a/include/numerics/greater_or_less.h b/include/numerics/greater_or_less.h new file mode 100644 index 0000000..488c33f --- /dev/null +++ b/include/numerics/greater_or_less.h @@ -0,0 +1,316 @@ +#pragma once + +#include "./core/omp_config.h" +#include "detail/greater_or_less_serial.h" + + +namespace numerics{ + + + // + // ---------------- Greater - Vectors ---------------- + // + template + inline void inplace_greater(utils::Vector& v, const T c) { + detail::inplace_greater_serial(v, c); + } + template + inline utils::Vector greater(const utils::Vector& v, const T c) { + utils::Vector out = v; + inplace_greater(out, c); + return out; + } + + + template + inline void inplace_greater(utils::Vector& v, const utils::Vector& p) { + detail::inplace_greater_serial(v, p); + } + template + inline utils::Vector greater(const utils::Vector& v, const utils::Vector& p) { + utils::Vector out = v; + inplace_greater(out, p); + return out; + } + + + // + // ---------------- Greater - Matrices ---------------- + // + template + inline void inplace_greater(utils::Matrix& A, const T c) { + detail::inplace_greater_serial(A, c); + } + template + inline utils::Matrix greater(const utils::Matrix& A, const T c) { + utils::Matrix out = A; + inplace_greater(out, c); + return out; + } + + template + inline void inplace_greater_rowwise(utils::Matrix& A, const utils::Vector v) { + detail::inplace_greater_rowwise_serial(A, v); + } + template + inline utils::Matrix greater_rowwise(const utils::Matrix& A, const utils::Vector v) { + utils::Matrix out = A; + inplace_greater_rowwise(out, v); + return out; + } + + template + inline void inplace_greater_colwise(utils::Matrix& A, const utils::Vector v) { + detail::inplace_greater_colwise_serial(A, v); + } + template + inline utils::Matrix greater_colwise(const utils::Matrix& A, const utils::Vector v) { + utils::Matrix out = A; + inplace_greater_colwise(out, v); + return out; + } + + template + inline void inplace_greater(utils::Matrix& A, const utils::Matrix B) { + detail::inplace_greater_serial(A, B); + } + template + inline utils::Matrix greater(const utils::Matrix& A, const utils::Matrix B) { + utils::Matrix out = A; + inplace_greater(out, B); + return out; + } + + + // + // ---------------- Greater or Equal - Vectors ---------------- + // + template + inline void inplace_greater_equal(utils::Vector& v, const T c) { + detail::inplace_greater_equal_serial(v, c); + } + template + inline utils::Vector greater_equal(const utils::Vector& v, const T c) { + utils::Vector out = v; + inplace_greater_equal(out, c); + return out; + } + + + template + inline void inplace_greater_equal(utils::Vector& v, const utils::Vector& p) { + detail::inplace_greater_equal_serial(v, p); + } + template + inline utils::Vector greater_equal(const utils::Vector& v, const utils::Vector& p) { + utils::Vector out = v; + inplace_greater_equal(out, p); + return out; + } + + + // + // ---------------- Greater or Equal - Matrices ---------------- + // + template + inline void inplace_greater_equal(utils::Matrix& A, const T c) { + detail::inplace_greater_equal_serial(A, c); + } + template + inline utils::Matrix greater_equal(const utils::Matrix& A, const T c) { + utils::Matrix out = A; + inplace_greater_equal(out, c); + return out; + } + + template + inline void inplace_greater_equal_rowwise(utils::Matrix& A, const utils::Vector v) { + detail::inplace_greater_equal_rowwise_serial(A, v); + } + template + inline utils::Matrix greater_equal_rowwise(const utils::Matrix& A, const utils::Vector v) { + utils::Matrix out = A; + inplace_greater_equal_rowwise(out, v); + return out; + } + + template + inline void inplace_greater_equal_colwise(utils::Matrix& A, const utils::Vector v) { + detail::inplace_greater_equal_colwise_serial(A, v); + } + template + inline utils::Matrix greater_equal_colwise(const utils::Matrix& A, const utils::Vector v) { + utils::Matrix out = A; + inplace_greater_equal_colwise(out, v); + return out; + } + + template + inline void inplace_greater_equal(utils::Matrix& A, const utils::Matrix B) { + detail::inplace_greater_equal_serial(A, B); + } + template + inline utils::Matrix greater_euqal(const utils::Matrix& A, const utils::Matrix B) { + utils::Matrix out = A; + inplace_greater_equal(out, B); + return out; + } + + + // + // ---------------- Less - Vectors ---------------- + // + template + inline void inplace_less(utils::Vector& v, const T c) { + detail::inplace_less_serial(v, c); + } + template + inline utils::Vector less(const utils::Vector& v, const T c) { + utils::Vector out = v; + inplace_less(out, c); + return out; + } + + + template + inline void inplace_less(utils::Vector& v, const utils::Vector& p) { + detail::inplace_less_serial(v, p); + } + template + inline utils::Vector less(const utils::Vector& v, const utils::Vector& p) { + utils::Vector out = v; + inplace_less(out, p); + return out; + } + + + + + // + // ---------------- Less - Matrices ---------------- + // + template + inline void inplace_less(utils::Matrix& A, const T c) { + detail::inplace_less_serial(A, c); + } + template + inline utils::Matrix less(const utils::Matrix& A, const T c) { + utils::Matrix out = A; + inplace_less(out, c); + return out; + } + + template + inline void inplace_less_rowwise(utils::Matrix& A, const utils::Vector v) { + detail::inplace_less_rowwise_serial(A, v); + } + template + inline utils::Matrix less_rowwise(const utils::Matrix& A, const utils::Vector v) { + utils::Matrix out = A; + inplace_less_rowwise(out, v); + return out; + } + + template + inline void inplace_less_colwise(utils::Matrix& A, const utils::Vector v) { + detail::inplace_less_colwise_serial(A, v); + } + template + inline utils::Matrix less_colwise(const utils::Matrix& A, const utils::Vector v) { + utils::Matrix out = A; + inplace_less_colwise(out, v); + return out; + } + + template + inline void inplace_less(utils::Matrix& A, const utils::Matrix B) { + detail::inplace_less_serial(A, B); + } + template + inline utils::Matrix less(const utils::Matrix& A, const utils::Matrix B) { + utils::Matrix out = A; + inplace_less(out, B); + return out; + } + + + // + // ---------------- Less or Equal - Vectors ---------------- + // + template + inline void inplace_less_equal(utils::Vector& v, const T c) { + detail::inplace_less_equal_serial(v, c); + } + template + inline utils::Vector less_equal(const utils::Vector& v, const T c) { + utils::Vector out = v; + inplace_less_equal(out, c); + return out; + } + + + template + inline void inplace_less_equal(utils::Vector& v, const utils::Vector& p) { + detail::inplace_less_equal_serial(v, p); + } + template + inline utils::Vector less_equal(const utils::Vector& v, const utils::Vector& p) { + utils::Vector out = v; + inplace_less_equal(out, p); + return out; + } + + + // + // ---------------- Less or Equal - Matrices ---------------- + // + template + inline void inplace_less_equal(utils::Matrix& A, const T c) { + detail::inplace_less_equal_serial(A, c); + } + template + inline utils::Matrix less_equal(const utils::Matrix& A, const T c) { + utils::Matrix out = A; + inplace_less_equal(out, c); + return out; + } + + template + inline void inplace_less_equal_rowwise(utils::Matrix& A, const utils::Vector v) { + detail::inplace_less_equal_rowwise_serial(A, v); + } + template + inline utils::Matrix less_equal_rowwise(const utils::Matrix& A, const utils::Vector v) { + utils::Matrix out = A; + inplace_less_equal_rowwise(out, v); + return out; + } + + template + inline void inplace_less_equal_colwise(utils::Matrix& A, const utils::Vector v) { + detail::inplace_less_equal_colwise_serial(A, v); + } + template + inline utils::Matrix less_equal_colwise(const utils::Matrix& A, const utils::Vector v) { + utils::Matrix out = A; + inplace_less_equal_colwise(out, v); + return out; + } + + template + inline void inplace_less_equal(utils::Matrix& A, const utils::Matrix B) { + detail::inplace_less_equal_serial(A, B); + } + template + inline utils::Matrix less_euqal(const utils::Matrix& A, const utils::Matrix B) { + utils::Matrix out = A; + inplace_less_equal(out, B); + return out; + } + + + + + + +} \ No newline at end of file diff --git a/include/numerics/numerics.h b/include/numerics/numerics.h index 9990509..a32a116 100644 --- a/include/numerics/numerics.h +++ b/include/numerics/numerics.h @@ -10,6 +10,7 @@ #include "./numerics/dot.h" #include "./numerics/equal.h" #include "./numerics/exp.h" +#include "./numerics/greater_or_less.h" #include "./numerics/interpolation1d.h" // base #include "./numerics/inverse.h" #include "./numerics/isclose.h" @@ -22,7 +23,9 @@ #include "./numerics/neg.h" #include "./numerics/pow.h" #include "./numerics/random.h" +#include "./numerics/sign.h" #include "./numerics/sqrt.h" +#include "./numerics/standard_deviation.h" #include "./numerics/sub.h" #include "./numerics/sum.h" #include "./numerics/transpose.h" diff --git a/include/numerics/sign.h b/include/numerics/sign.h new file mode 100644 index 0000000..3bbfe81 --- /dev/null +++ b/include/numerics/sign.h @@ -0,0 +1,51 @@ +#pragma once + +#include "./core/omp_config.h" +#include "detail/sign_serial.h" + + +namespace numerics{ + + // ---------------- Elementwise ---------------- + template + inline void inplace_sign(T& c) { + detail::inplace_sign_serial(c); + } + template + inline T sign(const T c) { + T out = c; + inplace_sign(out); + return out; + } + + + + template + inline void inplace_sign(utils::Vector& v) { + detail::inplace_sign_serial(v); + } + + template + inline utils::Vector sign(const utils::Vector& v) { + utils::Vector out = v; + inplace_sign(out); + return out; + } + + + + + template + inline void inplace_sign(utils::Matrix& A) { + detail::inplace_sign_serial(A); + } + + template + inline utils::Matrix sign(const utils::Matrix& A) { + utils::Matrix out = A; + inplace_sign(out); + return out; + } + + +} \ No newline at end of file diff --git a/include/numerics/standard_deviation.h b/include/numerics/standard_deviation.h new file mode 100644 index 0000000..b01e15a --- /dev/null +++ b/include/numerics/standard_deviation.h @@ -0,0 +1,22 @@ +#pragma once + +#include "./core/omp_config.h" +#include "detail/standard_deviation_serial.h" + + +namespace numerics{ + + // ---------------- Elementwise ---------------- + template + inline T standard_deviation(const utils::Vector& v) { + return detail::standard_deviation_serial(v); + } + + template + inline T standard_deviation(const utils::Matrix& A){ + return detail::standard_deviation_serial(A); + } + + + +} \ No newline at end of file diff --git a/include/random/detail/normal_serial.h b/include/random/detail/normal_serial.h new file mode 100644 index 0000000..6e34dcd --- /dev/null +++ b/include/random/detail/normal_serial.h @@ -0,0 +1,57 @@ +#pragma once + +#include "random/engine.h" + +#include +//#include + +#include "utils/matrix.h" +#include "utils/vector.h" + +namespace rng::detail { + + // + // Base functions int + // + template + typename std::enable_if::value, T>::type + normal_serial(const T mean, const T stddev) { + std::normal_distribution dist(mean, stddev); + return dist(rng::engine()); + } + + // + // Base functions float + // + template + typename std::enable_if::value, T>::type + normal_serial(const T mean, const T stddev) { + std::normal_distribution dist(mean, stddev); + return dist(rng::engine()); + } + + template + utils::Vector normal_serial(const uint64_t size, const T mean, const T stddev){ + utils::Vector v(size); + for (uint64_t i = 0; i < size; ++i){ + v[i] = normal_serial(mean, stddev); + } + return v; + } + + template + utils::Matrix normal_serial(const uint64_t rows, const uint64_t cols, const T mean, const T stddev){ + utils::Matrix A(rows, cols); + for (uint64_t i = 0; i < rows; ++i){ + for (uint64_t j = 0; j < cols; ++j){ + A(i,j) = normal_serial(mean, stddev); + } + } + return A; + } + + + + + +} diff --git a/include/random/normal.h b/include/random/normal.h new file mode 100644 index 0000000..a03f966 --- /dev/null +++ b/include/random/normal.h @@ -0,0 +1,28 @@ +#pragma once + + +#include "detail/normal_serial.h" + +namespace rng { + + template + T normal(const T mean, const T stddev) { + return rng::detail::normal_serial(mean, stddev); + } + + template + utils::Vector normal(const uint64_t size, const T mean, const T stddev) { + return rng::detail::normal_serial(size, mean, stddev); + } + + template + utils::Matrix normal(const uint64_t rows, const uint64_t cols, const T mean, const T stddev) { + return rng::detail::normal_serial(rows, cols, mean, stddev); + } + + + + +} + + diff --git a/include/random/random.h b/include/random/random.h index b84333e..15ac7fe 100644 --- a/include/random/random.h +++ b/include/random/random.h @@ -7,5 +7,6 @@ #include "uniform.h" #include "binomial.h" +#include "normal.h"