Starting on the model.h, but need to make layer structs and structs for loss and optimizers

This commit is contained in:
2026-05-30 09:13:52 +02:00
parent cb65174cf4
commit edad247227
30 changed files with 1879 additions and 159 deletions
+90 -90
View File
@@ -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
...
Binary file not shown.
@@ -210,6 +210,8 @@ examples/dense-neural-network/CMakeFiles/dense-neural-network.dir/main.cpp.o: \
/home/atlas/Documents/Git/Flux/include/./numerics/detail/equal_serial.h \
/home/atlas/Documents/Git/Flux/include/./numerics/exp.h \
/home/atlas/Documents/Git/Flux/include/./numerics/detail/exp_serial.h \
/home/atlas/Documents/Git/Flux/include/./numerics/greater_or_less.h \
/home/atlas/Documents/Git/Flux/include/./numerics/detail/greater_or_less_serial.h \
/home/atlas/Documents/Git/Flux/include/./numerics/interpolation1d.h \
/home/atlas/Documents/Git/Flux/include/./numerics/interpolation1d/interpolation1d_barycentric.h \
/home/atlas/Documents/Git/Flux/include/./numerics/interpolation1d/interpolation1d_base.h \
@@ -242,8 +244,12 @@ examples/dense-neural-network/CMakeFiles/dense-neural-network.dir/main.cpp.o: \
/home/atlas/Documents/Git/Flux/include/./numerics/detail/pow_serial.h \
/home/atlas/Documents/Git/Flux/include/./numerics/random.h \
/home/atlas/Documents/Git/Flux/include/./numerics/detail/random_serial.h \
/home/atlas/Documents/Git/Flux/include/./numerics/sign.h \
/home/atlas/Documents/Git/Flux/include/./numerics/detail/sign_serial.h \
/home/atlas/Documents/Git/Flux/include/./numerics/sqrt.h \
/home/atlas/Documents/Git/Flux/include/./numerics/detail/sqrt_serial.h \
/home/atlas/Documents/Git/Flux/include/./numerics/standard_deviation.h \
/home/atlas/Documents/Git/Flux/include/./numerics/detail/standard_deviation_serial.h \
/home/atlas/Documents/Git/Flux/include/./numerics/sub.h \
/home/atlas/Documents/Git/Flux/include/./numerics/detail/sub_serial.h \
/home/atlas/Documents/Git/Flux/include/./numerics/sum.h \
@@ -252,23 +258,30 @@ examples/dense-neural-network/CMakeFiles/dense-neural-network.dir/main.cpp.o: \
/home/atlas/Documents/Git/Flux/include/modules/neural_networks/neural_networks.h \
/home/atlas/Documents/Git/Flux/include/modules/neural_networks/datasets/spiral.h \
/home/atlas/Documents/Git/Flux/include/modules/neural_networks/datasets/vertical.h \
/home/atlas/Documents/Git/Flux/include/modules/neural_networks/datasets/sine.h \
/usr/include/c++/13/math.h \
/home/atlas/Documents/Git/Flux/include/modules/neural_networks/layers/Layer.h \
/home/atlas/Documents/Git/Flux/include/modules/neural_networks/layers/Dense_Layer.h \
/home/atlas/Documents/Git/Flux/include/modules/neural_networks/layers/Dropout_Layer.h \
/home/atlas/Documents/Git/Flux/include/random/random.h \
/home/atlas/Documents/Git/Flux/include/random/engine.h \
/home/atlas/Documents/Git/Flux/include/random/uniform.h \
/home/atlas/Documents/Git/Flux/include/random/detail/uniform_serial.h \
/home/atlas/Documents/Git/Flux/include/random/binomial.h \
/home/atlas/Documents/Git/Flux/include/random/detail/binomial_serial.h \
/home/atlas/Documents/Git/Flux/include/random/normal.h \
/home/atlas/Documents/Git/Flux/include/random/detail/normal_serial.h \
/home/atlas/Documents/Git/Flux/include/modules/neural_networks/layers/Dropout_Layer.h \
/home/atlas/Documents/Git/Flux/include/modules/neural_networks/activation_functions/Activation_ReLU.h \
/home/atlas/Documents/Git/Flux/include/modules/neural_networks/activation_functions/Activation_Softmax.h \
/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/activation_functions/Activation_Linear.h \
/home/atlas/Documents/Git/Flux/include/modules/neural_networks/loss/Loss_BinaryCrossentropy.h \
/home/atlas/Documents/Git/Flux/include/modules/neural_networks/loss/Loss_MeanSquaredError.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 \
/home/atlas/Documents/Git/Flux/include/modules/neural_networks/optimizers/Optimizer_RMSprop.h \
/home/atlas/Documents/Git/Flux/include/modules/neural_networks/optimizers/Optimizer_Adam.h
/home/atlas/Documents/Git/Flux/include/modules/neural_networks/optimizers/Optimizer_Adam.h \
/home/atlas/Documents/Git/Flux/include/modules/neural_networks/model/model.h
@@ -0,0 +1,218 @@
#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 <iostream>
//#include <stdexcept>
//#include <chrono>
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<float> y;
utils::Matrix<float> y_test;
float data_loss;
float regularization_loss;
float loss;
float accuracy;
utils::Vector<uint64_t> class_targets;
utils::Matrix<float> predictions;
// Create dataset
//neural_networks::create_spital_data<float, int64_t>(number_of_samples, number_of_classes, X, y);
//neural_networks::create_vertical_data<float, int64_t>(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<float> 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<float> activation1;
//neural_networks::Dropout_Layer<float> dropout1(0.1);
neural_networks::Dense_Layer<float> 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<float> activation2;
neural_networks::Dense_Layer<float> 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<float> activation3;
neural_networks::Loss_MeanSquaredError<float> loss_function;
neural_networks::Optimizer_Adam<float> 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<float, int64_t>(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<float, int64_t>(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<float, int64_t>(y_test.get_col(0))));
std::cout << "validation, acc: " << accuracy << ", loss: " << loss << std::endl;
*/
return 0;
}
+80 -54
View File
@@ -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<int64_t> y;
utils::Matrix<int64_t> y_test;
utils::Matrix<float> y;
utils::Matrix<float> y_test;
float data_loss;
float regularization_loss;
float loss;
float accuracy;
utils::Vector<uint64_t> class_targets;
utils::Vector<float> predictions;
utils::Matrix<float> predictions;
// Create dataset
neural_networks::create_spital_data<float, int64_t>(number_of_samples, number_of_classes, X, y);
//neural_networks::create_spital_data<float, int64_t>(number_of_samples, number_of_classes, X, y);
//neural_networks::create_vertical_data<float, int64_t>(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<float> model;
// Create Dense layer with 2 input featues and 3 output values
neural_networks::Dense_Layer<float> 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<float> activation1;
neural_networks::Dropout_Layer<float> 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<float> 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<float> activation2;
neural_networks::Activation_ReLU<float> 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<float> 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<float> activation3;
neural_networks::Activation_Linear<float> activation3;
// Create a Sfotmax classifier's combined loss and activation
//neural_networks::Activation_Softmax_Loss_CategoricalCrossentropy<float, int64_t> loss_activation;
neural_networks::Loss_BinaryCrossentropy<float, int64_t> loss_activation;
// Create optimizer
//neural_networks::Optimizer_SGD<float> optimizer(1, 1e-3, 0.5);
//neural_networks::Optimizer_Adagrad<float> optimizer(1, 1e-3, 1e-6);
//neural_networks::Optimizer_RMSprop<float> optimizer(1, 1e-3, 1e-6, 0.9);
neural_networks::Loss_MeanSquaredError<float> loss_function;
neural_networks::Optimizer_Adam<float> 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,24 +129,20 @@ 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<float, int64_t>(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<float, int64_t>(y.get_col(0))));
if (!(epoch%100)){
if (!(epoch%100) && epoch != 0){
std::cout << "epoch: " << epoch;
std::cout << ", acc: " << accuracy;
@@ -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;
}
@@ -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 <typename T>
struct Activation_Linear : Layer<T>{
utils::Matrix<T> _inputs;
utils::Matrix<T> outputs;
utils::Matrix<T> dinputs;
void forward(const utils::Matrix<T>& inputs){
_inputs = inputs;
outputs = inputs;
}
void backward(const utils::Matrix<T>& dvalues){
dinputs = dvalues;
}
};
} // end namespace neural_networks
@@ -4,12 +4,12 @@
#include "utils/vector.h"
#include "utils/matrix.h"
#include "modules/neural_networks/layers/Layer.h"
namespace neural_networks{
template <typename T>
struct Activation_ReLU{
struct Activation_ReLU : Layer<T>{
utils::Matrix<T> _inputs;
utils::Matrix<T> outputs;
@@ -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 <typename T>
struct Activation_Sigmoid{
struct Activation_Sigmoid : Layer<T>{
utils::Matrix<T> _inputs;
utils::Matrix<T> outputs;
@@ -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 <typename T>
struct Activation_Softmax{
struct Activation_Softmax : Layer<T>{
//utils::Matrix<T> exp_values;
//utils::Matrix<T> probabilities;
@@ -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 <typename Td, typename Ti>
struct Activation_Softmax_Loss_CategoricalCrossentropy{
struct Activation_Softmax_Loss_CategoricalCrossentropy : Layer<Td>{
neural_networks::Activation_Softmax<Td> activation;
neural_networks::Loss_CategoricalCrossentrophy<Td, Ti> loss;
@@ -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 <math.h> /* sin */
//#include "./utils/random.h"
//#include <math.h>
namespace neural_networks{
template <typename T>
void create_sine_data(const uint64_t samples, const T length, utils::Matrix<T>& X, utils::Matrix<T>& 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
@@ -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 <typename T>
struct Dense_Layer{
struct Dense_Layer : Layer<T>{
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});
@@ -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 <typename T>
struct Dropout_Layer{
struct Dropout_Layer : Layer<T>{
// Store rate, we invert it as for example for dropout
// of 0.1 we need a success rate of 0.9
@@ -0,0 +1,21 @@
#pragma once
#include "core/omp_config.h"
#include "utils/vector.h"
#include "utils/matrix.h"
namespace neural_networks{
template <typename T>
struct Layer {
utils::Matrix<T> outputs;
utils::Matrix<T> dinputs;
virtual void forward(const utils::Matrix<T>& inputs) = 0;
virtual void backward(const utils::Matrix<T>& dvalues) = 0;
virtual ~Layer() = default;
};
}
+1 -1
View File
@@ -10,7 +10,7 @@
namespace neural_networks{
template <typename Td, typename Ti>
template <typename Td, typename Ti = Td>
struct Loss{
utils::Vector<Td> sample_losses;
@@ -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 <typename T>
struct Loss_MeanAbsoluteError : Loss<T> {
utils::Matrix<T> dinputs;
utils::Matrix<T> y_true;
utils::Vector<T> sample_losses;
utils::Vector<T> forward(const utils::Matrix<T>& y_pred, const utils::Matrix<T>& 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<T>& dvalues, const utils::Matrix<T>& y_true) override{
// Number of samples
const T samples = static_cast<T> (dvalues.rows());
// Number of outputs in every sample
const T outputs = static_cast<T> (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
@@ -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 <typename T>
struct Loss_MeanSquaredError : Loss<T> {
utils::Matrix<T> dinputs;
utils::Matrix<T> y_true;
utils::Vector<T> sample_losses;
utils::Vector<T> forward(const utils::Matrix<T>& y_pred, const utils::Matrix<T>& 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<T>& dvalues, const utils::Matrix<T>& y_true) override{
// Number of samples
const T samples = static_cast<T> (dvalues.rows());
// Number of outputs in every sample
const T outputs = static_cast<T> (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
@@ -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 <typename T>
struct Model {
std::vector<Layer<T>*> layers;
Model() = default;
void add(Layer<T>& layer) {
layers.push_back(&layer);
}
};
} // end namespace neural_networks
@@ -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"
#include "model/model.h"
@@ -0,0 +1,622 @@
#pragma once
#include <cstdint> //uint64_t
#include "utils/vector.h"
#include "utils/matrix.h"
namespace numerics::detail{
//
// ---------------- Greater - Vectors ----------------
//
template <typename T>
inline void inplace_greater_serial(utils::Vector<T>& 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 <typename T>
inline void inplace_greater_serial(utils::Vector<T>& v, const utils::Vector<T>& 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 <typename T>
inline void inplace_greater_serial(utils::Matrix<T>& 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 <typename T>
inline void inplace_greater_rowwise_serial(utils::Matrix<T>& A, const utils::Vector<T>& 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 <typename T>
inline void inplace_greater_colwise_serial(utils::Matrix<T>& A, const utils::Vector<T>& 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 <typename T>
inline void inplace_greater_serial(utils::Matrix<T>& A, const utils::Matrix<T>& 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 <typename T>
inline void inplace_greater_equal_serial(utils::Vector<T>& 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 <typename T>
inline void inplace_greater_equal_serial(utils::Vector<T>& v, const utils::Vector<T>& 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 <typename T>
inline void inplace_greater_equal_serial(utils::Matrix<T>& 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 <typename T>
inline void inplace_greater_equal_rowwise_serial(utils::Matrix<T>& A, const utils::Vector<T>& 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 <typename T>
inline void inplace_greater_equal_colwise_serial(utils::Matrix<T>& A, const utils::Vector<T>& 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 <typename T>
inline void inplace_greater_equal_serial(utils::Matrix<T>& A, const utils::Matrix<T>& 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 <typename T>
inline void inplace_less_serial(utils::Vector<T>& 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 <typename T>
inline void inplace_less_serial(utils::Vector<T>& v, const utils::Vector<T>& 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 <typename T>
inline void inplace_less_serial(utils::Matrix<T>& 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 <typename T>
inline void inplace_less_rowwise_serial(utils::Matrix<T>& A, const utils::Vector<T>& 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 <typename T>
inline void inplace_less_colwise_serial(utils::Matrix<T>& A, const utils::Vector<T>& 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 <typename T>
inline void inplace_less_serial(utils::Matrix<T>& A, const utils::Matrix<T>& 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 <typename T>
inline void inplace_less_equal_serial(utils::Vector<T>& 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 <typename T>
inline void inplace_less_equal_serial(utils::Vector<T>& v, const utils::Vector<T>& 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 <typename T>
inline void inplace_less_equal_serial(utils::Matrix<T>& 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 <typename T>
inline void inplace_less_equal_rowwise_serial(utils::Matrix<T>& A, const utils::Vector<T>& 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 <typename T>
inline void inplace_less_equal_colwise_serial(utils::Matrix<T>& A, const utils::Vector<T>& 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 <typename T>
inline void inplace_less_equal_serial(utils::Matrix<T>& A, const utils::Matrix<T>& 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
+48
View File
@@ -0,0 +1,48 @@
#pragma once
#include <cstdint> //uint64_t
#include <cmath> // std::abs
#include "utils/vector.h"
#include "utils/matrix.h"
namespace numerics::detail{
template <typename T>
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 <typename T>
void inplace_sign_serial(utils::Vector<T>& v) {
const uint64_t n = v.size();
for (uint64_t i = 0; i < n; ++i){
inplace_sign_serial(v[i]);
}
}
template <typename T>
void inplace_sign_serial(utils::Matrix<T>& 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
@@ -0,0 +1,61 @@
#pragma once
#include <cstdint> //uint64_t
#include <cmath> // std::abs
#include "utils/vector.h"
#include "utils/matrix.h"
#include "numerics/mean.h"
namespace numerics::detail{
template <typename T>
inline T standard_deviation_serial(const utils::Vector<T>& 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<T>(n);
return numerics::sqrt(variance);
}
template <typename T>
inline T standard_deviation_serial(const utils::Matrix<T>& 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<T>(rows*cols);
return numerics::sqrt(variance);
}
} // namespace numerics
+316
View File
@@ -0,0 +1,316 @@
#pragma once
#include "./core/omp_config.h"
#include "detail/greater_or_less_serial.h"
namespace numerics{
//
// ---------------- Greater - Vectors ----------------
//
template <typename T>
inline void inplace_greater(utils::Vector<T>& v, const T c) {
detail::inplace_greater_serial(v, c);
}
template <typename T>
inline utils::Vector<T> greater(const utils::Vector<T>& v, const T c) {
utils::Vector<T> out = v;
inplace_greater(out, c);
return out;
}
template <typename T>
inline void inplace_greater(utils::Vector<T>& v, const utils::Vector<T>& p) {
detail::inplace_greater_serial(v, p);
}
template <typename T>
inline utils::Vector<T> greater(const utils::Vector<T>& v, const utils::Vector<T>& p) {
utils::Vector<T> out = v;
inplace_greater(out, p);
return out;
}
//
// ---------------- Greater - Matrices ----------------
//
template <typename T>
inline void inplace_greater(utils::Matrix<T>& A, const T c) {
detail::inplace_greater_serial(A, c);
}
template <typename T>
inline utils::Matrix<T> greater(const utils::Matrix<T>& A, const T c) {
utils::Matrix<T> out = A;
inplace_greater(out, c);
return out;
}
template <typename T>
inline void inplace_greater_rowwise(utils::Matrix<T>& A, const utils::Vector<T> v) {
detail::inplace_greater_rowwise_serial(A, v);
}
template <typename T>
inline utils::Matrix<T> greater_rowwise(const utils::Matrix<T>& A, const utils::Vector<T> v) {
utils::Matrix<T> out = A;
inplace_greater_rowwise(out, v);
return out;
}
template <typename T>
inline void inplace_greater_colwise(utils::Matrix<T>& A, const utils::Vector<T> v) {
detail::inplace_greater_colwise_serial(A, v);
}
template <typename T>
inline utils::Matrix<T> greater_colwise(const utils::Matrix<T>& A, const utils::Vector<T> v) {
utils::Matrix<T> out = A;
inplace_greater_colwise(out, v);
return out;
}
template <typename T>
inline void inplace_greater(utils::Matrix<T>& A, const utils::Matrix<T> B) {
detail::inplace_greater_serial(A, B);
}
template <typename T>
inline utils::Matrix<T> greater(const utils::Matrix<T>& A, const utils::Matrix<T> B) {
utils::Matrix<T> out = A;
inplace_greater(out, B);
return out;
}
//
// ---------------- Greater or Equal - Vectors ----------------
//
template <typename T>
inline void inplace_greater_equal(utils::Vector<T>& v, const T c) {
detail::inplace_greater_equal_serial(v, c);
}
template <typename T>
inline utils::Vector<T> greater_equal(const utils::Vector<T>& v, const T c) {
utils::Vector<T> out = v;
inplace_greater_equal(out, c);
return out;
}
template <typename T>
inline void inplace_greater_equal(utils::Vector<T>& v, const utils::Vector<T>& p) {
detail::inplace_greater_equal_serial(v, p);
}
template <typename T>
inline utils::Vector<T> greater_equal(const utils::Vector<T>& v, const utils::Vector<T>& p) {
utils::Vector<T> out = v;
inplace_greater_equal(out, p);
return out;
}
//
// ---------------- Greater or Equal - Matrices ----------------
//
template <typename T>
inline void inplace_greater_equal(utils::Matrix<T>& A, const T c) {
detail::inplace_greater_equal_serial(A, c);
}
template <typename T>
inline utils::Matrix<T> greater_equal(const utils::Matrix<T>& A, const T c) {
utils::Matrix<T> out = A;
inplace_greater_equal(out, c);
return out;
}
template <typename T>
inline void inplace_greater_equal_rowwise(utils::Matrix<T>& A, const utils::Vector<T> v) {
detail::inplace_greater_equal_rowwise_serial(A, v);
}
template <typename T>
inline utils::Matrix<T> greater_equal_rowwise(const utils::Matrix<T>& A, const utils::Vector<T> v) {
utils::Matrix<T> out = A;
inplace_greater_equal_rowwise(out, v);
return out;
}
template <typename T>
inline void inplace_greater_equal_colwise(utils::Matrix<T>& A, const utils::Vector<T> v) {
detail::inplace_greater_equal_colwise_serial(A, v);
}
template <typename T>
inline utils::Matrix<T> greater_equal_colwise(const utils::Matrix<T>& A, const utils::Vector<T> v) {
utils::Matrix<T> out = A;
inplace_greater_equal_colwise(out, v);
return out;
}
template <typename T>
inline void inplace_greater_equal(utils::Matrix<T>& A, const utils::Matrix<T> B) {
detail::inplace_greater_equal_serial(A, B);
}
template <typename T>
inline utils::Matrix<T> greater_euqal(const utils::Matrix<T>& A, const utils::Matrix<T> B) {
utils::Matrix<T> out = A;
inplace_greater_equal(out, B);
return out;
}
//
// ---------------- Less - Vectors ----------------
//
template <typename T>
inline void inplace_less(utils::Vector<T>& v, const T c) {
detail::inplace_less_serial(v, c);
}
template <typename T>
inline utils::Vector<T> less(const utils::Vector<T>& v, const T c) {
utils::Vector<T> out = v;
inplace_less(out, c);
return out;
}
template <typename T>
inline void inplace_less(utils::Vector<T>& v, const utils::Vector<T>& p) {
detail::inplace_less_serial(v, p);
}
template <typename T>
inline utils::Vector<T> less(const utils::Vector<T>& v, const utils::Vector<T>& p) {
utils::Vector<T> out = v;
inplace_less(out, p);
return out;
}
//
// ---------------- Less - Matrices ----------------
//
template <typename T>
inline void inplace_less(utils::Matrix<T>& A, const T c) {
detail::inplace_less_serial(A, c);
}
template <typename T>
inline utils::Matrix<T> less(const utils::Matrix<T>& A, const T c) {
utils::Matrix<T> out = A;
inplace_less(out, c);
return out;
}
template <typename T>
inline void inplace_less_rowwise(utils::Matrix<T>& A, const utils::Vector<T> v) {
detail::inplace_less_rowwise_serial(A, v);
}
template <typename T>
inline utils::Matrix<T> less_rowwise(const utils::Matrix<T>& A, const utils::Vector<T> v) {
utils::Matrix<T> out = A;
inplace_less_rowwise(out, v);
return out;
}
template <typename T>
inline void inplace_less_colwise(utils::Matrix<T>& A, const utils::Vector<T> v) {
detail::inplace_less_colwise_serial(A, v);
}
template <typename T>
inline utils::Matrix<T> less_colwise(const utils::Matrix<T>& A, const utils::Vector<T> v) {
utils::Matrix<T> out = A;
inplace_less_colwise(out, v);
return out;
}
template <typename T>
inline void inplace_less(utils::Matrix<T>& A, const utils::Matrix<T> B) {
detail::inplace_less_serial(A, B);
}
template <typename T>
inline utils::Matrix<T> less(const utils::Matrix<T>& A, const utils::Matrix<T> B) {
utils::Matrix<T> out = A;
inplace_less(out, B);
return out;
}
//
// ---------------- Less or Equal - Vectors ----------------
//
template <typename T>
inline void inplace_less_equal(utils::Vector<T>& v, const T c) {
detail::inplace_less_equal_serial(v, c);
}
template <typename T>
inline utils::Vector<T> less_equal(const utils::Vector<T>& v, const T c) {
utils::Vector<T> out = v;
inplace_less_equal(out, c);
return out;
}
template <typename T>
inline void inplace_less_equal(utils::Vector<T>& v, const utils::Vector<T>& p) {
detail::inplace_less_equal_serial(v, p);
}
template <typename T>
inline utils::Vector<T> less_equal(const utils::Vector<T>& v, const utils::Vector<T>& p) {
utils::Vector<T> out = v;
inplace_less_equal(out, p);
return out;
}
//
// ---------------- Less or Equal - Matrices ----------------
//
template <typename T>
inline void inplace_less_equal(utils::Matrix<T>& A, const T c) {
detail::inplace_less_equal_serial(A, c);
}
template <typename T>
inline utils::Matrix<T> less_equal(const utils::Matrix<T>& A, const T c) {
utils::Matrix<T> out = A;
inplace_less_equal(out, c);
return out;
}
template <typename T>
inline void inplace_less_equal_rowwise(utils::Matrix<T>& A, const utils::Vector<T> v) {
detail::inplace_less_equal_rowwise_serial(A, v);
}
template <typename T>
inline utils::Matrix<T> less_equal_rowwise(const utils::Matrix<T>& A, const utils::Vector<T> v) {
utils::Matrix<T> out = A;
inplace_less_equal_rowwise(out, v);
return out;
}
template <typename T>
inline void inplace_less_equal_colwise(utils::Matrix<T>& A, const utils::Vector<T> v) {
detail::inplace_less_equal_colwise_serial(A, v);
}
template <typename T>
inline utils::Matrix<T> less_equal_colwise(const utils::Matrix<T>& A, const utils::Vector<T> v) {
utils::Matrix<T> out = A;
inplace_less_equal_colwise(out, v);
return out;
}
template <typename T>
inline void inplace_less_equal(utils::Matrix<T>& A, const utils::Matrix<T> B) {
detail::inplace_less_equal_serial(A, B);
}
template <typename T>
inline utils::Matrix<T> less_euqal(const utils::Matrix<T>& A, const utils::Matrix<T> B) {
utils::Matrix<T> out = A;
inplace_less_equal(out, B);
return out;
}
}
+3
View File
@@ -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"
+51
View File
@@ -0,0 +1,51 @@
#pragma once
#include "./core/omp_config.h"
#include "detail/sign_serial.h"
namespace numerics{
// ---------------- Elementwise ----------------
template <typename T>
inline void inplace_sign(T& c) {
detail::inplace_sign_serial(c);
}
template <typename T>
inline T sign(const T c) {
T out = c;
inplace_sign(out);
return out;
}
template <typename T>
inline void inplace_sign(utils::Vector<T>& v) {
detail::inplace_sign_serial(v);
}
template <typename T>
inline utils::Vector<T> sign(const utils::Vector<T>& v) {
utils::Vector<T> out = v;
inplace_sign(out);
return out;
}
template <typename T>
inline void inplace_sign(utils::Matrix<T>& A) {
detail::inplace_sign_serial(A);
}
template <typename T>
inline utils::Matrix<T> sign(const utils::Matrix<T>& A) {
utils::Matrix<T> out = A;
inplace_sign(out);
return out;
}
}
+22
View File
@@ -0,0 +1,22 @@
#pragma once
#include "./core/omp_config.h"
#include "detail/standard_deviation_serial.h"
namespace numerics{
// ---------------- Elementwise ----------------
template <typename T>
inline T standard_deviation(const utils::Vector<T>& v) {
return detail::standard_deviation_serial(v);
}
template <typename T>
inline T standard_deviation(const utils::Matrix<T>& A){
return detail::standard_deviation_serial(A);
}
}
+57
View File
@@ -0,0 +1,57 @@
#pragma once
#include "random/engine.h"
#include <random>
//#include <type_traits>
#include "utils/matrix.h"
#include "utils/vector.h"
namespace rng::detail {
//
// Base functions int
//
template <typename T>
typename std::enable_if<std::is_integral<T>::value, T>::type
normal_serial(const T mean, const T stddev) {
std::normal_distribution<T> dist(mean, stddev);
return dist(rng::engine());
}
//
// Base functions float
//
template <typename T>
typename std::enable_if<std::is_floating_point<T>::value, T>::type
normal_serial(const T mean, const T stddev) {
std::normal_distribution<T> dist(mean, stddev);
return dist(rng::engine());
}
template <typename T>
utils::Vector<T> normal_serial(const uint64_t size, const T mean, const T stddev){
utils::Vector<T> v(size);
for (uint64_t i = 0; i < size; ++i){
v[i] = normal_serial(mean, stddev);
}
return v;
}
template <typename T>
utils::Matrix<T> normal_serial(const uint64_t rows, const uint64_t cols, const T mean, const T stddev){
utils::Matrix<T> 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;
}
}
+28
View File
@@ -0,0 +1,28 @@
#pragma once
#include "detail/normal_serial.h"
namespace rng {
template <typename T>
T normal(const T mean, const T stddev) {
return rng::detail::normal_serial(mean, stddev);
}
template <typename T>
utils::Vector<T> normal(const uint64_t size, const T mean, const T stddev) {
return rng::detail::normal_serial(size, mean, stddev);
}
template <typename T>
utils::Matrix<T> normal(const uint64_t rows, const uint64_t cols, const T mean, const T stddev) {
return rng::detail::normal_serial(rows, cols, mean, stddev);
}
}
+1
View File
@@ -7,5 +7,6 @@
#include "uniform.h"
#include "binomial.h"
#include "normal.h"