diff --git a/build/CMakeFiles/CMakeConfigureLog.yaml b/build/CMakeFiles/CMakeConfigureLog.yaml index cecd968..ae25ccc 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-UDWKAn" - binary: "/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-UDWKAn" + source: "/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-6fQL2C" + binary: "/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-6fQL2C" 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-UDWKAn' + Change Dir: '/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-6fQL2C' - Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_a2c08/fast - /usr/bin/gmake -f CMakeFiles/cmTC_a2c08.dir/build.make CMakeFiles/cmTC_a2c08.dir/build - gmake[1]: Entering directory '/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-UDWKAn' - Building CXX object CMakeFiles/cmTC_a2c08.dir/CMakeCXXCompilerABI.cpp.o - /usr/bin/c++ -v -o CMakeFiles/cmTC_a2c08.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_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 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_a2c08.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_a2c08.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_a2c08.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/cc5fTyjy.s + 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 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_a2c08.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_a2c08.dir/' - as -v --64 -o CMakeFiles/cmTC_a2c08.dir/CMakeCXXCompilerABI.cpp.o /tmp/cc5fTyjy.s + 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 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_a2c08.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_a2c08.dir/CMakeCXXCompilerABI.cpp.' - Linking CXX executable cmTC_a2c08 - /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_a2c08.dir/link.txt --verbose=1 - /usr/bin/c++ -v CMakeFiles/cmTC_a2c08.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_a2c08 + 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 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_a2c08' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_a2c08.' - /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/cc4LTvwQ.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_a2c08 /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_a2c08.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_a2c08' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_a2c08.' - gmake[1]: Leaving directory '/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-UDWKAn' + 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' 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-UDWKAn'] + ignore line: [Change Dir: '/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-6fQL2C'] ignore line: [] - ignore line: [Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_a2c08/fast] - ignore line: [/usr/bin/gmake -f CMakeFiles/cmTC_a2c08.dir/build.make CMakeFiles/cmTC_a2c08.dir/build] - ignore line: [gmake[1]: Entering directory '/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-UDWKAn'] - ignore line: [Building CXX object CMakeFiles/cmTC_a2c08.dir/CMakeCXXCompilerABI.cpp.o] - ignore line: [/usr/bin/c++ -v -o CMakeFiles/cmTC_a2c08.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_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: [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_a2c08.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_a2c08.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_a2c08.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/cc5fTyjy.s] + 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: [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_a2c08.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_a2c08.dir/'] - ignore line: [ as -v --64 -o CMakeFiles/cmTC_a2c08.dir/CMakeCXXCompilerABI.cpp.o /tmp/cc5fTyjy.s] + 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: [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_a2c08.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_a2c08.dir/CMakeCXXCompilerABI.cpp.'] - ignore line: [Linking CXX executable cmTC_a2c08] - ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_a2c08.dir/link.txt --verbose=1] - ignore line: [/usr/bin/c++ -v CMakeFiles/cmTC_a2c08.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_a2c08 ] + 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: [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_a2c08' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_a2c08.'] - 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/cc4LTvwQ.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_a2c08 /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_a2c08.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_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] 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/cc4LTvwQ.res] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/ccR4K2gF.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_a2c08] ==> ignore + arg [cmTC_21458] ==> 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_a2c08.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [CMakeFiles/cmTC_21458.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-TW1FRu" - binary: "/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-TW1FRu" + source: "/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-GvspNS" + binary: "/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-GvspNS" 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-TW1FRu' + Change Dir: '/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-GvspNS' - Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_ff875/fast - /usr/bin/gmake -f CMakeFiles/cmTC_ff875.dir/build.make CMakeFiles/cmTC_ff875.dir/build - gmake[1]: Entering directory '/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-TW1FRu' - Building CXX object CMakeFiles/cmTC_ff875.dir/OpenMPTryFlag.cpp.o - /usr/bin/c++ -fopenmp -v -std=gnu++14 -o CMakeFiles/cmTC_ff875.dir/OpenMPTryFlag.cpp.o -c /home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-TW1FRu/OpenMPTryFlag.cpp + 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 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_ff875.dir/OpenMPTryFlag.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-pthread' '-dumpdir' 'CMakeFiles/cmTC_ff875.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-TW1FRu/OpenMPTryFlag.cpp -quiet -dumpdir CMakeFiles/cmTC_ff875.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/ccVR5Lll.s + 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 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_ff875.dir/OpenMPTryFlag.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-pthread' '-dumpdir' 'CMakeFiles/cmTC_ff875.dir/' - as -v --64 -o CMakeFiles/cmTC_ff875.dir/OpenMPTryFlag.cpp.o /tmp/ccVR5Lll.s + 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 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_ff875.dir/OpenMPTryFlag.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-pthread' '-dumpdir' 'CMakeFiles/cmTC_ff875.dir/OpenMPTryFlag.cpp.' - Linking CXX executable cmTC_ff875 - /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_ff875.dir/link.txt --verbose=1 - /usr/bin/c++ -fopenmp -v CMakeFiles/cmTC_ff875.dir/OpenMPTryFlag.cpp.o -o cmTC_ff875 -v + 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 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_ff875' '-v' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-pthread' '-dumpdir' 'cmTC_ff875.' - /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/cchSaPDX.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_ff875 /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_ff875.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_ff875' '-v' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-pthread' '-dumpdir' 'cmTC_ff875.' - gmake[1]: Leaving directory '/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-TW1FRu' + 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' 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-TW1FRu'] + ignore line: [Change Dir: '/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-GvspNS'] ignore line: [] - ignore line: [Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_ff875/fast] - ignore line: [/usr/bin/gmake -f CMakeFiles/cmTC_ff875.dir/build.make CMakeFiles/cmTC_ff875.dir/build] - ignore line: [gmake[1]: Entering directory '/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-TW1FRu'] - ignore line: [Building CXX object CMakeFiles/cmTC_ff875.dir/OpenMPTryFlag.cpp.o] - ignore line: [/usr/bin/c++ -fopenmp -v -std=gnu++14 -o CMakeFiles/cmTC_ff875.dir/OpenMPTryFlag.cpp.o -c /home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-TW1FRu/OpenMPTryFlag.cpp] + 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: [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_ff875.dir/OpenMPTryFlag.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-pthread' '-dumpdir' 'CMakeFiles/cmTC_ff875.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-TW1FRu/OpenMPTryFlag.cpp -quiet -dumpdir CMakeFiles/cmTC_ff875.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/ccVR5Lll.s] + 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: [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_ff875.dir/OpenMPTryFlag.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-pthread' '-dumpdir' 'CMakeFiles/cmTC_ff875.dir/'] - ignore line: [ as -v --64 -o CMakeFiles/cmTC_ff875.dir/OpenMPTryFlag.cpp.o /tmp/ccVR5Lll.s] + 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: [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_ff875.dir/OpenMPTryFlag.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-pthread' '-dumpdir' 'CMakeFiles/cmTC_ff875.dir/OpenMPTryFlag.cpp.'] - ignore line: [Linking CXX executable cmTC_ff875] - ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_ff875.dir/link.txt --verbose=1] - ignore line: [/usr/bin/c++ -fopenmp -v CMakeFiles/cmTC_ff875.dir/OpenMPTryFlag.cpp.o -o cmTC_ff875 -v ] + 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: [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_ff875' '-v' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-pthread' '-dumpdir' 'cmTC_ff875.'] - 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/cchSaPDX.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_ff875 /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_ff875.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_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] 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/cchSaPDX.res] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/cczYiwNl.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_ff875] ==> ignore + arg [cmTC_b23e5] ==> 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_ff875.dir/OpenMPTryFlag.cpp.o] ==> ignore + arg [CMakeFiles/cmTC_b23e5.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-8cCtst" - binary: "/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-8cCtst" + source: "/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-1AoRnd" + binary: "/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-1AoRnd" 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-8cCtst' + Change Dir: '/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_9bda3/fast - /usr/bin/gmake -f CMakeFiles/cmTC_9bda3.dir/build.make CMakeFiles/cmTC_9bda3.dir/build - gmake[1]: Entering directory '/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-8cCtst' - Building CXX object CMakeFiles/cmTC_9bda3.dir/OpenMPCheckVersion.cpp.o - /usr/bin/c++ -fopenmp -std=gnu++14 -o CMakeFiles/cmTC_9bda3.dir/OpenMPCheckVersion.cpp.o -c /home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-8cCtst/OpenMPCheckVersion.cpp - Linking CXX executable cmTC_9bda3 - /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_9bda3.dir/link.txt --verbose=1 - /usr/bin/c++ -fopenmp CMakeFiles/cmTC_9bda3.dir/OpenMPCheckVersion.cpp.o -o cmTC_9bda3 - gmake[1]: Leaving directory '/home/atlas/Documents/Git/Flux/build/CMakeFiles/CMakeScratch/TryCompile-8cCtst' + 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' exitCode: 0 ... diff --git a/build/bin/dense-neural-network b/build/bin/dense-neural-network index 96ee28b..e826a89 100755 Binary files a/build/bin/dense-neural-network and b/build/bin/dense-neural-network differ 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 6514b24..fee467b 100644 Binary files a/build/examples/dense-neural-network/CMakeFiles/dense-neural-network.dir/main.cpp.o and b/build/examples/dense-neural-network/CMakeFiles/dense-neural-network.dir/main.cpp.o differ diff --git a/build/examples/dense-neural-network/CMakeFiles/dense-neural-network.dir/main.cpp.o.d b/build/examples/dense-neural-network/CMakeFiles/dense-neural-network.dir/main.cpp.o.d index 95edf89..3063bfa 100644 --- a/build/examples/dense-neural-network/CMakeFiles/dense-neural-network.dir/main.cpp.o.d +++ b/build/examples/dense-neural-network/CMakeFiles/dense-neural-network.dir/main.cpp.o.d @@ -198,6 +198,8 @@ examples/dense-neural-network/CMakeFiles/dense-neural-network.dir/main.cpp.o: \ /home/atlas/Documents/Git/Flux/include/./numerics/detail/argmax_serial.h \ /home/atlas/Documents/Git/Flux/include/./numerics/argmin.h \ /home/atlas/Documents/Git/Flux/include/./numerics/detail/argmin_serial.h \ + /home/atlas/Documents/Git/Flux/include/./numerics/binary_threshold.h \ + /home/atlas/Documents/Git/Flux/include/./numerics/detail/binary_threshold_serial.h \ /home/atlas/Documents/Git/Flux/include/./numerics/clip.h \ /home/atlas/Documents/Git/Flux/include/./numerics/detail/clip_serial.h \ /home/atlas/Documents/Git/Flux/include/./numerics/div.h \ @@ -263,6 +265,8 @@ examples/dense-neural-network/CMakeFiles/dense-neural-network.dir/main.cpp.o: \ /home/atlas/Documents/Git/Flux/include/modules/neural_networks/activation_functions/Activation_Softmax_Loss_CategoricalCrossentropy.h \ /home/atlas/Documents/Git/Flux/include/modules/neural_networks/loss/Loss_CategoricalCrossentrophy.h \ /home/atlas/Documents/Git/Flux/include/modules/neural_networks/loss/Loss.h \ + /home/atlas/Documents/Git/Flux/include/modules/neural_networks/activation_functions/Activation_Sigmoid.h \ + /home/atlas/Documents/Git/Flux/include/modules/neural_networks/loss/Loss_BinaryCrossentropy.h \ /home/atlas/Documents/Git/Flux/include/modules/neural_networks/optimizers/Optimizer_SGD.h \ /home/atlas/Documents/Git/Flux/include/modules/neural_networks/optimizers/Optimizer_Adagrad.h \ /usr/include/c++/13/math.h \ diff --git a/examples/dense-neural-network/Activation_Softmax_Loss_CategoricalCrossentropy-Example.txt b/examples/dense-neural-network/Activation_Softmax_Loss_CategoricalCrossentropy-Example.txt new file mode 100644 index 0000000..8c8cb32 --- /dev/null +++ b/examples/dense-neural-network/Activation_Softmax_Loss_CategoricalCrossentropy-Example.txt @@ -0,0 +1,233 @@ +#include "core/omp_config.h" + +#include "utils/utils.h" +#include "numerics/numerics.h" +#include "decomp/decomp.h" + +#include "modules/neural_networks/neural_networks.h" +#include "random/random.h" + + + +//#include +//#include +//#include + + + + + +int main(int argc, char const *argv[]) +{ + + uint64_t number_of_classes = 3; + uint64_t number_of_samples = 150; + uint64_t number_of_epochs = 500; + + 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::Vector predections; + + + // 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); + + // Create Dense layer with 2 input featues and 3 output values + neural_networks::Dense_Layer dense1( + 2, 16, // input/output + 0.0f, // weight L1 + 5e-4f, // weight L2 + 0.0f, // bias L1 + 5e-4f // 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 + 0.0f, // weight L1 + 5e-4f, // weight L2 + 0.0f, // bias L1 + 5e-4f // bias L2 + ); + neural_networks::Activation_Softmax 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, 16, // input/output + 0.0f, // weight L1 + 5e-4f, // weight L2 + 0.0f, // bias L1 + 5e-4f // bias L2 + ); + neural_networks::Activation_Sigmoid activation3; + + neural_networks::Dense_Layer dense4( + 16, number_of_classes, // input/output + 0.0f, // weight L1 + 5e-4f, // weight L2 + 0.0f, // bias L1 + 5e-4f // bias L2 + ); + + // Create a Sfotmax classifier's combined loss and activation + neural_networks::Activation_Softmax_Loss_CategoricalCrossentropy 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::Optimizer_Adam optimizer( + 0.05, // Learning-rate + 5e-5, // Learning-rate decay + 1e-6, // epsilons + 0.9, // beta 1 + 0.999 // beta 2 + ); + + + + // 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(dropout1.outputs); + activation2.forward(dense2.outputs); + + dense3.forward(activation2.outputs); + activation3.forward(dense3.outputs); + + dense4.forward(activation3.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.forward(dense4.outputs, y); + + // Calculate regularization penalty + regularization_loss = loss_activation.loss.regularization_loss(dense1) + + loss_activation.loss.regularization_loss(dense2) + + loss_activation.loss.regularization_loss(dense3) + + loss_activation.loss.regularization_loss(dense4); + + loss = data_loss + regularization_loss; + + // Calculate accuracy from output of activation2 and targets + //predections = numerics::matargmax_row (loss_activation.outputs); + predections = numerics::argmax_rowwise(loss_activation.outputs); + + if (y.cols() > 1){ + class_targets = numerics::argmax_rowwise(y); + }else{ + class_targets = utils::veccast (y.get_col(0)); + } + + + accuracy = numerics::mean( utils::veccast (numerics::equal_elementwise_serial(predections, class_targets))); + + + if (!(epoch%100)){ + 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_activation.backward(loss_activation.outputs, y); + dense4.backward(loss_activation.dinputs); + + activation3.backward(dense4.dinputs); + dense3.backward(activation3.dinputs); + + activation2.backward(dense3.dinputs); + dense2.backward(activation2.dinputs); + + dropout1.backward(dense2.dinputs); + activation1.backward(dropout1.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.update_params(dense4); + optimizer.post_update_params(); + + } + + // 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); + + dense4.forward(activation3.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.forward(dense4.outputs, y_test); + + // Calculate regularization penalty + regularization_loss = loss_activation.loss.regularization_loss(dense1) + + loss_activation.loss.regularization_loss(dense2) + + loss_activation.loss.regularization_loss(dense3) + + loss_activation.loss.regularization_loss(dense4); + + loss = data_loss + regularization_loss; + + // Calculate accuracy from output of activation2 and targets + predections = numerics::argmax_rowwise(loss_activation.outputs); + + + + + if (y.cols() > 1){ + class_targets = numerics::argmax_rowwise(y_test); + }else{ + class_targets = utils::veccast (y_test.get_col(0)); + } + + + accuracy = numerics::mean( utils::veccast (numerics::equal_elementwise_serial(predections, class_targets))); + + + std::cout << "validation, acc: " << accuracy << ", loss: " << loss << std::endl; + + return 0; +} \ No newline at end of file diff --git a/examples/dense-neural-network/Loss_BinaryCrossentropy_example.txt b/examples/dense-neural-network/Loss_BinaryCrossentropy_example.txt new file mode 100644 index 0000000..527305a --- /dev/null +++ b/examples/dense-neural-network/Loss_BinaryCrossentropy_example.txt @@ -0,0 +1,205 @@ +#include "core/omp_config.h" + +#include "utils/utils.h" +#include "numerics/numerics.h" +#include "decomp/decomp.h" + +#include "modules/neural_networks/neural_networks.h" +#include "random/random.h" + + + +//#include +//#include +//#include + + + + + +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; + + 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::Vector 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); + + + // Create Dense layer with 2 input featues and 3 output values + neural_networks::Dense_Layer dense1( + 2, 16, // input/output + 0.0f, // weight L1 + 5e-4f, // weight L2 + 0.0f, // bias L1 + 5e-4f // 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 + 0.0f, // weight L1 + 5e-4f, // weight L2 + 0.0f, // bias L1 + 5e-4f // bias L2 + ); + neural_networks::Activation_Softmax 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 + 0.0f, // weight L1 + 5e-4f, // weight L2 + 0.0f, // bias L1 + 5e-4f // bias L2 + ); + neural_networks::Activation_Sigmoid 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::Optimizer_Adam optimizer( + 0.05, // Learning-rate + 5e-5, // Learning-rate decay + 1e-6, // epsilons + 0.9, // beta 1 + 0.999 // beta 2 + ); + + + + // 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(dropout1.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); + + // 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; + + // 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)))); + + + if (!(epoch%100)){ + + 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_activation.backward(activation3.outputs, y); + + activation3.backward(loss_activation.dinputs); + dense3.backward(activation3.dinputs); + + activation2.backward(dense3.dinputs); + dense2.backward(activation2.dinputs); + + dropout1.backward(dense2.dinputs); + activation1.backward(dropout1.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(); + + } + + // 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; + + // 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 c220b23..527305a 100644 --- a/examples/dense-neural-network/main.cpp +++ b/examples/dense-neural-network/main.cpp @@ -20,9 +20,9 @@ int main(int argc, char const *argv[]) { - uint64_t number_of_classes = 3; - uint64_t number_of_samples = 1000; - uint64_t number_of_epochs = 500; + uint64_t number_of_classes = 2; + uint64_t number_of_samples = 150; + uint64_t number_of_epochs = 1000; utils::Mf X; utils::Mf X_test; @@ -34,13 +34,14 @@ int main(int argc, char const *argv[]) float accuracy; utils::Vector class_targets; - utils::Vector predections; + utils::Vector 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); + // Create Dense layer with 2 input featues and 3 output values neural_networks::Dense_Layer dense1( 2, 16, // input/output @@ -65,29 +66,31 @@ int main(int argc, char const *argv[]) 0.0f, // bias L1 5e-4f // bias L2 ); - // Create Softmax activation (to be used with Dense layer) neural_networks::Activation_Softmax 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, number_of_classes, // input/output + 16, 1, // input/output 0.0f, // weight L1 5e-4f, // weight L2 0.0f, // bias L1 5e-4f // bias L2 ); + neural_networks::Activation_Sigmoid activation3; + // Create a Sfotmax classifier's combined loss and activation - neural_networks::Activation_Softmax_Loss_CategoricalCrossentropy loss_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::Optimizer_Adam optimizer( - 0.05, // Learning-rate + 0.05, // Learning-rate 5e-5, // Learning-rate decay 1e-6, // epsilons 0.9, // beta 1 @@ -101,51 +104,36 @@ int main(int argc, char const *argv[]) // Perform a forward pass of our training data through this layer dense1.forward(X); - - // Perform a forward pass thourgh activation function - // takes the output fo the first layer here activation1.forward(dense1.outputs); dropout1.forward(activation1.outputs); - // Perform a forward pass through second Dense layer - // takes output of activation function of the first layer as input dense2.forward(dropout1.outputs); - - - // Perform a forward pass thourgh activation function - // takes the output fo the first layer here activation2.forward(dense2.outputs); - // Perform a forward pass through second Dense layer - // takes output of activation function of the first layer as input 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.forward(dense3.outputs, y); + data_loss = loss_activation.calculate(activation3.outputs, y); // Calculate regularization penalty - regularization_loss = loss_activation.loss.regularization_loss(dense1) + loss_activation.loss.regularization_loss(dense2) + loss_activation.loss.regularization_loss(dense3); + regularization_loss = loss_activation.regularization_loss(dense1) + + loss_activation.regularization_loss(dense2) + + loss_activation.regularization_loss(dense3); loss = data_loss + regularization_loss; - // Calculate accuracy from output of activation2 and targets - //predections = numerics::matargmax_row (loss_activation.outputs); - predections = numerics::argmax_rowwise(loss_activation.outputs); - - if (y.cols() > 1){ - class_targets = numerics::argmax_rowwise(y); - }else{ - class_targets = utils::veccast (y.get_col(0)); - } - - - accuracy = numerics::mean( utils::veccast (numerics::equal_elementwise_serial(predections, class_targets))); + // 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)))); if (!(epoch%100)){ + std::cout << "epoch: " << epoch; std::cout << ", acc: " << accuracy; std::cout << ", loss: " << loss; @@ -153,18 +141,22 @@ int main(int argc, char const *argv[]) std::cout << ", regularization_loss: " << regularization_loss; std::cout << ", lr: " << optimizer.current_learning_rate; std::cout << std::endl; + } // Backward pass - loss_activation.backward(loss_activation.outputs, y); - dense3.backward(loss_activation.dinputs); + loss_activation.backward(activation3.outputs, y); + + activation3.backward(loss_activation.dinputs); + dense3.backward(activation3.dinputs); + activation2.backward(dense3.dinputs); dense2.backward(activation2.dinputs); + dropout1.backward(dense2.dinputs); activation1.backward(dropout1.dinputs); dense1.backward(activation1.dinputs); - // Update weights and biases optimizer.pre_update_params(); optimizer.update_params(dense1); @@ -179,48 +171,34 @@ int main(int argc, char const *argv[]) // Create dataset neural_networks::create_spital_data(100, number_of_classes, X_test, y_test); - // Perform a forward pass of our testing data through this layer + // Perform a forward pass of our training data through this layer dense1.forward(X_test); - - - // Perform a forward pass thourgh activation function - // takes the output fo the first layer here activation1.forward(dense1.outputs); + //dropout1.forward(activation1.outputs); - // Perform a forward pass through second Dense layer - // takes output of activation function of the first layer as input dense2.forward(activation1.outputs); - - // Perform a forward pass thourgh activation function - // takes the output fo the first layer here activation2.forward(dense2.outputs); - // Perform a forward pass through second Dense layer - // takes output of activation function of the first layer as input 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.forward(dense3.outputs, y_test); + data_loss = loss_activation.calculate(activation3.outputs, y_test); // Calculate regularization penalty - regularization_loss = loss_activation.loss.regularization_loss(dense1) + loss_activation.loss.regularization_loss(dense2) + loss_activation.loss.regularization_loss(dense3); + regularization_loss = loss_activation.regularization_loss(dense1) + + loss_activation.regularization_loss(dense2) + + loss_activation.regularization_loss(dense3); loss = data_loss + regularization_loss; // Calculate accuracy from output of activation2 and targets - predections = numerics::argmax_rowwise(loss_activation.outputs); + predictions = numerics::greater_than(activation3.outputs, 0.5f).get_col(0); - if (y.cols() > 1){ - class_targets = numerics::argmax_rowwise(y_test); - }else{ - class_targets = utils::veccast (y_test.get_col(0)); - } + accuracy = numerics::mean(numerics::equal_elementwise_serial(predictions, utils::veccast(y_test.get_col(0)))); - accuracy = numerics::mean( utils::veccast (numerics::equal_elementwise_serial(predections, class_targets))); - std::cout << "validation, acc: " << accuracy << ", loss: " << loss << std::endl; return 0; diff --git a/include/modules/neural_networks/activation_functions/Activation_Sigmoid.h b/include/modules/neural_networks/activation_functions/Activation_Sigmoid.h new file mode 100644 index 0000000..2067c45 --- /dev/null +++ b/include/modules/neural_networks/activation_functions/Activation_Sigmoid.h @@ -0,0 +1,46 @@ +#pragma once + +#include "core/omp_config.h" + +#include "utils/vector.h" +#include "utils/matrix.h" + +#include "numerics/neg.h" +#include "numerics/exp.h" +#include "numerics/add.h" +#include "numerics/div.h" +#include "numerics/sub.h" +#include "numerics/mul.h" + +namespace neural_networks{ + + template + struct Activation_Sigmoid{ + + utils::Matrix _inputs; + utils::Matrix outputs; + + utils::Matrix dinputs; + + void forward(const utils::Matrix& inputs){ + _inputs = inputs; + + outputs = numerics::neg(inputs); + outputs = numerics::exp(outputs); + outputs = numerics::add(outputs, T{1}); + outputs = numerics::div(T{1}, outputs); + } + void backward(const utils::Matrix& dvalues){ + + dinputs = numerics::sub(T{1}, outputs); + dinputs = numerics::mul(dvalues, dinputs); + dinputs = numerics::mul(dinputs, outputs); + + + + } + }; + + + +} // end namespace neural_networks \ No newline at end of file diff --git a/include/modules/neural_networks/activation_functions/Activation_Softmax.h b/include/modules/neural_networks/activation_functions/Activation_Softmax.h index 9409426..1237718 100644 --- a/include/modules/neural_networks/activation_functions/Activation_Softmax.h +++ b/include/modules/neural_networks/activation_functions/Activation_Softmax.h @@ -29,7 +29,7 @@ namespace neural_networks{ utils::Matrix exp_values = numerics::exp(numerics::sub_colwise(inputs, numerics::max_rowwise(inputs))); // Normalize them for each sample - utils::Matrix probabilities = numerics::div_colwise(exp_values, numerics::sum_colwise(exp_values)); + utils::Matrix probabilities = numerics::div_colwise(exp_values, numerics::sum_rowwise(exp_values)); outputs = probabilities; } diff --git a/include/modules/neural_networks/layers/Dense_Layer.h b/include/modules/neural_networks/layers/Dense_Layer.h index 2bcaf5e..be4fbde 100644 --- a/include/modules/neural_networks/layers/Dense_Layer.h +++ b/include/modules/neural_networks/layers/Dense_Layer.h @@ -63,7 +63,7 @@ namespace neural_networks{ void backward(const utils::Matrix& dvalues){ // Gradients on parameters dweights = numerics::matmul(numerics::transpose(_inputs), dvalues); - dbiases = numerics::sum_rowwise(dvalues); + dbiases = numerics::sum_colwise(dvalues); // Gradients on regularization diff --git a/include/modules/neural_networks/loss/Loss_BinaryCrossentropy.h b/include/modules/neural_networks/loss/Loss_BinaryCrossentropy.h new file mode 100644 index 0000000..d59c772 --- /dev/null +++ b/include/modules/neural_networks/loss/Loss_BinaryCrossentropy.h @@ -0,0 +1,81 @@ +#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_BinaryCrossentropy : Loss { + + utils::Matrix dinputs; + utils::Matrix y_true; + + + utils::Vector forward(const utils::Matrix& y_pred, const utils::Matrix& y_true) override{ + + this->y_true = utils::matcast(y_true); + + // Clip daa to prevent division by 0 + // Clip both sides not to drag mean towards any value + utils::Matrix y_pred_clipped = numerics::clip(y_pred, Td{1e-7}, Td{1.0} - Td{1e-7}); + + // Calculate sample-wise loss + utils::Matrix sample_losses_temp = numerics::log(numerics::sub(Td{1}, y_pred_clipped)); + sample_losses_temp = numerics::mul(sample_losses_temp, numerics::sub(Td{1}, this->y_true)); + sample_losses_temp = numerics::add(sample_losses_temp, numerics::mul(this->y_true, numerics::log(y_pred_clipped))); + sample_losses_temp = numerics::neg(sample_losses_temp); + + + + + + utils::Vector sample_losses = numerics::mean_rowwise(sample_losses_temp); + + // Return losses + return sample_losses; + } + + void backward(const utils::Matrix& dvalues, const utils::Matrix& y_true) override{ + + /*std::cout << "BCE backward y_true: " + << y_true.rows() << " x " << y_true.cols() + << std::endl;*/ + + + // Number of samples + const Td samples = static_cast (this->y_true.rows()); + // Number of outputs in every sample + const Td outputs = static_cast (dvalues.cols()); + + // Clip data to prevent division by 0 + // Clip both sides to not drag mean towards any value + utils::Matrix clipped_dvalues = numerics::clip(dvalues, Td{1e-7}, Td{1.0} - Td{1e-7}); + + + // Calculate gradient + dinputs = numerics::div(numerics::neg(numerics::sub(numerics::div(this->y_true, clipped_dvalues), numerics::div(numerics::sub(Td{1}, this->y_true), numerics::sub(Td{1}, clipped_dvalues)))), outputs); + // Normalize gradients + dinputs = numerics::div(dinputs, samples); + + /* + std::cout << "BCE backward dinputs: " + << dinputs.rows() << " x " << dinputs.cols() + << std::endl;*/ + + } + }; + + + +} // 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 718f9eb..35abaef 100644 --- a/include/modules/neural_networks/neural_networks.h +++ b/include/modules/neural_networks/neural_networks.h @@ -12,10 +12,12 @@ #include "activation_functions/Activation_ReLU.h" #include "activation_functions/Activation_Softmax.h" #include "activation_functions/Activation_Softmax_Loss_CategoricalCrossentropy.h" +#include "activation_functions/Activation_Sigmoid.h" #include "loss/Loss.h" // Base #include "loss/Loss_CategoricalCrossentrophy.h" +#include "loss/Loss_BinaryCrossentropy.h" #include "optimizers/Optimizer_SGD.h" diff --git a/include/numerics/binary_threshold.h b/include/numerics/binary_threshold.h new file mode 100644 index 0000000..8f2a097 --- /dev/null +++ b/include/numerics/binary_threshold.h @@ -0,0 +1,51 @@ +#pragma once + +#include "core/omp_config.h" +#include "detail/binary_threshold_serial.h" + + +namespace numerics{ + + // ---------------- Elementwise ---------------- + template + inline void inplace_greater_than(T& a, const T c) { + detail::inplace_greater_than_serial(a, c); + } + + template + inline T greater_than(const T a, const T c) { + T out = a; + inplace_greater_than(out, c); + return out; + } + + template + inline void inplace_greater_than(utils::Vector& v, const T c) { + detail::inplace_greater_than_serial(v, c); + } + + template + inline utils::Vector greater_than(const utils::Vector& v, const T c) { + utils::Vector out = v; + inplace_greater_than(out, c); + return out; + } + + + + template + inline void inplace_greater_than(utils::Matrix& A, const T c) { + detail::inplace_greater_than_serial(A, c); + } + + template + inline utils::Matrix greater_than(const utils::Matrix& A, const T c) { + utils::Matrix out = A; + inplace_greater_than(out, c); + return out; + } + + + + +} \ No newline at end of file diff --git a/include/numerics/detail/binary_threshold_serial.h b/include/numerics/detail/binary_threshold_serial.h new file mode 100644 index 0000000..abc137f --- /dev/null +++ b/include/numerics/detail/binary_threshold_serial.h @@ -0,0 +1,44 @@ +#pragma once + +#include //uint64_t +#include // std::abs + +#include "utils/vector.h" +#include "utils/matrix.h" + +namespace numerics::detail{ + + + // ---------------- Elemenwise ---------------- + template + void inplace_greater_than_serial(T& a, const T c) { + if (a > c){ + a = T{1}; + } + else{ + a = T{0}; + } + } + + template + void inplace_greater_than_serial(utils::Vector& v, const T c) { + for (uint64_t i = 0; i < v.size(); ++i){ + inplace_greater_than_serial(v[i], c); + } + } + + + template + void inplace_greater_than_serial(utils::Matrix& A, const T c) { + 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_greater_than_serial(A(i,j), c); + } + } + } + + +} // namespace numerics + diff --git a/include/numerics/detail/div_serial.h b/include/numerics/detail/div_serial.h index ea48533..a96eed6 100644 --- a/include/numerics/detail/div_serial.h +++ b/include/numerics/detail/div_serial.h @@ -20,12 +20,31 @@ namespace numerics::detail{ } } + template + void inplace_div_scalar_serial(const T c, 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){ + A(i,j) = c / A(i,j); + } + } + } + template void inplace_div_scalar_serial(utils::Vector& v, const T c) { for (uint64_t i = 0; i < v.size(); ++i){ v[i] /= c; } } + + template + void inplace_div_scalar_serial(const T c, utils::Vector& v) { + for (uint64_t i = 0; i < v.size(); ++i){ + v[i] = c / v[i]; + } + } + // ---------------- Elemenwise ---------------- template void inplace_div_elementwise_serial(utils::Matrix& A, const utils::Matrix& B) { diff --git a/include/numerics/detail/sub_serial.h b/include/numerics/detail/sub_serial.h index faf67db..4d0bb47 100644 --- a/include/numerics/detail/sub_serial.h +++ b/include/numerics/detail/sub_serial.h @@ -20,12 +20,33 @@ namespace numerics::detail{ } } + template + void inplace_sub_scalar_serial(const T c, 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){ + A(i,j) = c - A(i,j); + } + } + } + + + template void inplace_sub_scalar_serial(utils::Vector& v, const T c) { for (uint64_t i = 0; i < v.size(); ++i){ v[i] -= c; } } + + template + void inplace_sub_scalar_serial(const T c, utils::Vector& v) { + for (uint64_t i = 0; i < v.size(); ++i){ + v[i] = c - v[i]; + } + } + // ---------------- Elemenwise ---------------- template void inplace_sub_elementwise_serial(utils::Matrix& A, const utils::Matrix& B) { diff --git a/include/numerics/detail/sum_serial.h b/include/numerics/detail/sum_serial.h index ff32eff..9bc36f0 100644 --- a/include/numerics/detail/sum_serial.h +++ b/include/numerics/detail/sum_serial.h @@ -38,10 +38,10 @@ namespace numerics::detail{ utils::Vector sum_rowwise_serial(const utils::Matrix& A) { const uint64_t rows = A.rows(); const uint64_t cols = A.cols(); - utils::Vector sum(cols, T{0}); + utils::Vector sum(rows, T{0}); for (uint64_t i = 0; i < rows; ++i){ for (uint64_t j = 0; j < cols; ++j){ - sum[j] += A(i,j); + sum[i] += A(i,j); } } return sum; @@ -51,10 +51,10 @@ namespace numerics::detail{ utils::Vector sum_colwise_serial(const utils::Matrix& A) { const uint64_t rows = A.rows(); const uint64_t cols = A.cols(); - utils::Vector sum(rows, T{0}); + utils::Vector sum(cols, T{0}); for (uint64_t i = 0; i < rows; ++i){ for (uint64_t j = 0; j < cols; ++j){ - sum[i] += A(i,j); + sum[j] += A(i,j); } } return sum; diff --git a/include/numerics/div.h b/include/numerics/div.h index 41098ab..a0cd835 100644 --- a/include/numerics/div.h +++ b/include/numerics/div.h @@ -11,7 +11,6 @@ namespace numerics{ inline void inplace_div(utils::Matrix& A, const T b) { detail::inplace_div_scalar_serial(A,b); } - template inline utils::Matrix div(const utils::Matrix& A, const T b) { utils::Matrix out = A; @@ -19,17 +18,41 @@ namespace numerics{ return out; } + template + inline void inplace_div(const T b, utils::Matrix& A) { + detail::inplace_div_scalar_serial(b, A); + } + template + inline utils::Matrix div(const T b, const utils::Matrix& A) { + utils::Matrix out = A; + inplace_div(b, out); + return out; + } + + template inline void inplace_div(utils::Vector& v, const T b) { detail::inplace_div_scalar_serial(v,b); } - template inline utils::Vector div(const utils::Vector& v, const T b) { utils::Vector out = v; inplace_div(out, b); return out; } + + template + inline void inplace_div(const T b, utils::Vector& v) { + detail::inplace_div_scalar_serial(b, v); + } + template + inline utils::Vector div(const T b, const utils::Vector& v) { + utils::Vector out = v; + inplace_div(b, out); + return out; + } + + // ---------------- Elementwise ---------------- template inline void inplace_div(utils::Matrix& A, const utils::Matrix& B) { diff --git a/include/numerics/numerics.h b/include/numerics/numerics.h index dd5beff..9990509 100644 --- a/include/numerics/numerics.h +++ b/include/numerics/numerics.h @@ -4,6 +4,7 @@ #include "./numerics/add.h" #include "./numerics/argmax.h" #include "./numerics/argmin.h" +#include "./numerics/binary_threshold.h" #include "./numerics/clip.h" #include "./numerics/div.h" #include "./numerics/dot.h" diff --git a/include/numerics/sub.h b/include/numerics/sub.h index 942e46f..e53b33f 100644 --- a/include/numerics/sub.h +++ b/include/numerics/sub.h @@ -11,6 +11,11 @@ namespace numerics{ inline void inplace_sub(utils::Matrix& A, const T b) { detail::inplace_sub_scalar_serial(A,b); } + template + inline void inplace_sub(const T b, utils::Matrix& A) { + detail::inplace_sub_scalar_serial(b,A); + } + template inline utils::Matrix sub(const utils::Matrix& A, const T b) { @@ -18,11 +23,22 @@ namespace numerics{ inplace_sub(out, b); return out; } + template + inline utils::Matrix sub(const T b, const utils::Matrix& A) { + utils::Matrix out = A; + inplace_sub(b, out); + return out; + } + template inline void inplace_sub(utils::Vector& v, const T b) { detail::inplace_sub_scalar_serial(v,b); } + template + inline void inplace_sub(const T b, utils::Vector& v) { + detail::inplace_sub_scalar_serial(b,v); + } template inline utils::Vector sub(const utils::Vector& v, const T b) { @@ -30,6 +46,14 @@ namespace numerics{ inplace_sub(out, b); return out; } + template + inline utils::Vector sub(const T b, const utils::Vector& v) { + utils::Vector out = v; + inplace_sub(b, out); + return out; + } + + // ---------------- Elementwise ---------------- template inline void inplace_sub(utils::Matrix& A, const utils::Matrix& B) { diff --git a/include/utils/matcast.h b/include/utils/matcast.h index 3858bdd..d811cb2 100644 --- a/include/utils/matcast.h +++ b/include/utils/matcast.h @@ -31,5 +31,8 @@ namespace utils{ return B; } +// utils::matcast (A); + + } // end namespace utils