Final Code Cleanup
This commit is contained in:
parent
88394b7779
commit
689d34d7d9
2186
build/DOTFILE.dot
2186
build/DOTFILE.dot
File diff suppressed because it is too large
Load Diff
@ -48,19 +48,19 @@ cmake_force:
|
|||||||
SHELL = /bin/sh
|
SHELL = /bin/sh
|
||||||
|
|
||||||
# The CMake executable.
|
# The CMake executable.
|
||||||
CMAKE_COMMAND = /storage/home/nschrick/pkg/cmake/3.22.0/bin/cmake
|
CMAKE_COMMAND = /usr/bin/cmake
|
||||||
|
|
||||||
# The command to remove a file.
|
# The command to remove a file.
|
||||||
RM = /storage/home/nschrick/pkg/cmake/3.22.0/bin/cmake -E rm -f
|
RM = /usr/bin/cmake -E rm -f
|
||||||
|
|
||||||
# Escaping for special characters.
|
# Escaping for special characters.
|
||||||
EQUALS = =
|
EQUALS = =
|
||||||
|
|
||||||
# The top-level source directory on which CMake was run.
|
# The top-level source directory on which CMake was run.
|
||||||
CMAKE_SOURCE_DIR = /home/nschrick/ag_parallel
|
CMAKE_SOURCE_DIR = "/home/noah/Documents/School/Thesis Work/ag_parallel"
|
||||||
|
|
||||||
# The top-level build directory on which CMake was run.
|
# The top-level build directory on which CMake was run.
|
||||||
CMAKE_BINARY_DIR = /home/nschrick/ag_parallel/build
|
CMAKE_BINARY_DIR = "/home/noah/Documents/School/Thesis Work/ag_parallel/build"
|
||||||
|
|
||||||
#=============================================================================
|
#=============================================================================
|
||||||
# Targets provided globally by CMake.
|
# Targets provided globally by CMake.
|
||||||
@ -68,7 +68,7 @@ CMAKE_BINARY_DIR = /home/nschrick/ag_parallel/build
|
|||||||
# Special rule for the target edit_cache
|
# Special rule for the target edit_cache
|
||||||
edit_cache:
|
edit_cache:
|
||||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake cache editor..."
|
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake cache editor..."
|
||||||
/storage/home/nschrick/pkg/cmake/3.22.0/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
|
/usr/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
|
||||||
.PHONY : edit_cache
|
.PHONY : edit_cache
|
||||||
|
|
||||||
# Special rule for the target edit_cache
|
# Special rule for the target edit_cache
|
||||||
@ -78,7 +78,7 @@ edit_cache/fast: edit_cache
|
|||||||
# Special rule for the target rebuild_cache
|
# Special rule for the target rebuild_cache
|
||||||
rebuild_cache:
|
rebuild_cache:
|
||||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..."
|
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..."
|
||||||
/storage/home/nschrick/pkg/cmake/3.22.0/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
|
/usr/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
|
||||||
.PHONY : rebuild_cache
|
.PHONY : rebuild_cache
|
||||||
|
|
||||||
# Special rule for the target rebuild_cache
|
# Special rule for the target rebuild_cache
|
||||||
@ -87,9 +87,9 @@ rebuild_cache/fast: rebuild_cache
|
|||||||
|
|
||||||
# The main all target
|
# The main all target
|
||||||
all: cmake_check_build_system
|
all: cmake_check_build_system
|
||||||
$(CMAKE_COMMAND) -E cmake_progress_start /home/nschrick/ag_parallel/build/CMakeFiles /home/nschrick/ag_parallel/build//CMakeFiles/progress.marks
|
$(CMAKE_COMMAND) -E cmake_progress_start "/home/noah/Documents/School/Thesis Work/ag_parallel/build/CMakeFiles" "/home/noah/Documents/School/Thesis Work/ag_parallel/build//CMakeFiles/progress.marks"
|
||||||
$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 all
|
$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 all
|
||||||
$(CMAKE_COMMAND) -E cmake_progress_start /home/nschrick/ag_parallel/build/CMakeFiles 0
|
$(CMAKE_COMMAND) -E cmake_progress_start "/home/noah/Documents/School/Thesis Work/ag_parallel/build/CMakeFiles" 0
|
||||||
.PHONY : all
|
.PHONY : all
|
||||||
|
|
||||||
# The main clean target
|
# The main clean target
|
||||||
@ -116,6 +116,19 @@ depend:
|
|||||||
$(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
|
$(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
|
||||||
.PHONY : depend
|
.PHONY : depend
|
||||||
|
|
||||||
|
#=============================================================================
|
||||||
|
# Target rules for targets named doc
|
||||||
|
|
||||||
|
# Build rule for target.
|
||||||
|
doc: cmake_check_build_system
|
||||||
|
$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 doc
|
||||||
|
.PHONY : doc
|
||||||
|
|
||||||
|
# fast build rule for target.
|
||||||
|
doc/fast:
|
||||||
|
$(MAKE) $(MAKESILENT) -f CMakeFiles/doc.dir/build.make CMakeFiles/doc.dir/build
|
||||||
|
.PHONY : doc/fast
|
||||||
|
|
||||||
#=============================================================================
|
#=============================================================================
|
||||||
# Target rules for targets named ag_gen
|
# Target rules for targets named ag_gen
|
||||||
|
|
||||||
@ -129,6 +142,19 @@ ag_gen/fast:
|
|||||||
$(MAKE) $(MAKESILENT) -f CMakeFiles/ag_gen.dir/build.make CMakeFiles/ag_gen.dir/build
|
$(MAKE) $(MAKESILENT) -f CMakeFiles/ag_gen.dir/build.make CMakeFiles/ag_gen.dir/build
|
||||||
.PHONY : ag_gen/fast
|
.PHONY : ag_gen/fast
|
||||||
|
|
||||||
|
#=============================================================================
|
||||||
|
# Target rules for targets named dynstr_test
|
||||||
|
|
||||||
|
# Build rule for target.
|
||||||
|
dynstr_test: cmake_check_build_system
|
||||||
|
$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 dynstr_test
|
||||||
|
.PHONY : dynstr_test
|
||||||
|
|
||||||
|
# fast build rule for target.
|
||||||
|
dynstr_test/fast:
|
||||||
|
$(MAKE) $(MAKESILENT) -f CMakeFiles/dynstr_test.dir/build.make CMakeFiles/dynstr_test.dir/build
|
||||||
|
.PHONY : dynstr_test/fast
|
||||||
|
|
||||||
nm_parser.o: nm_parser.c.o
|
nm_parser.o: nm_parser.c.o
|
||||||
.PHONY : nm_parser.o
|
.PHONY : nm_parser.o
|
||||||
|
|
||||||
@ -465,6 +491,30 @@ src/mpi/tasks.cpp.s:
|
|||||||
$(MAKE) $(MAKESILENT) -f CMakeFiles/ag_gen.dir/build.make CMakeFiles/ag_gen.dir/src/mpi/tasks.cpp.s
|
$(MAKE) $(MAKESILENT) -f CMakeFiles/ag_gen.dir/build.make CMakeFiles/ag_gen.dir/src/mpi/tasks.cpp.s
|
||||||
.PHONY : src/mpi/tasks.cpp.s
|
.PHONY : src/mpi/tasks.cpp.s
|
||||||
|
|
||||||
|
src/tests/mem_test.o: src/tests/mem_test.c.o
|
||||||
|
.PHONY : src/tests/mem_test.o
|
||||||
|
|
||||||
|
# target to build an object file
|
||||||
|
src/tests/mem_test.c.o:
|
||||||
|
$(MAKE) $(MAKESILENT) -f CMakeFiles/dynstr_test.dir/build.make CMakeFiles/dynstr_test.dir/src/tests/mem_test.c.o
|
||||||
|
.PHONY : src/tests/mem_test.c.o
|
||||||
|
|
||||||
|
src/tests/mem_test.i: src/tests/mem_test.c.i
|
||||||
|
.PHONY : src/tests/mem_test.i
|
||||||
|
|
||||||
|
# target to preprocess a source file
|
||||||
|
src/tests/mem_test.c.i:
|
||||||
|
$(MAKE) $(MAKESILENT) -f CMakeFiles/dynstr_test.dir/build.make CMakeFiles/dynstr_test.dir/src/tests/mem_test.c.i
|
||||||
|
.PHONY : src/tests/mem_test.c.i
|
||||||
|
|
||||||
|
src/tests/mem_test.s: src/tests/mem_test.c.s
|
||||||
|
.PHONY : src/tests/mem_test.s
|
||||||
|
|
||||||
|
# target to generate assembly for a file
|
||||||
|
src/tests/mem_test.c.s:
|
||||||
|
$(MAKE) $(MAKESILENT) -f CMakeFiles/dynstr_test.dir/build.make CMakeFiles/dynstr_test.dir/src/tests/mem_test.c.s
|
||||||
|
.PHONY : src/tests/mem_test.c.s
|
||||||
|
|
||||||
src/util/avail_mem.o: src/util/avail_mem.cpp.o
|
src/util/avail_mem.o: src/util/avail_mem.cpp.o
|
||||||
.PHONY : src/util/avail_mem.o
|
.PHONY : src/util/avail_mem.o
|
||||||
|
|
||||||
@ -615,6 +665,7 @@ src/util/mem.o: src/util/mem.c.o
|
|||||||
# target to build an object file
|
# target to build an object file
|
||||||
src/util/mem.c.o:
|
src/util/mem.c.o:
|
||||||
$(MAKE) $(MAKESILENT) -f CMakeFiles/ag_gen.dir/build.make CMakeFiles/ag_gen.dir/src/util/mem.c.o
|
$(MAKE) $(MAKESILENT) -f CMakeFiles/ag_gen.dir/build.make CMakeFiles/ag_gen.dir/src/util/mem.c.o
|
||||||
|
$(MAKE) $(MAKESILENT) -f CMakeFiles/dynstr_test.dir/build.make CMakeFiles/dynstr_test.dir/src/util/mem.c.o
|
||||||
.PHONY : src/util/mem.c.o
|
.PHONY : src/util/mem.c.o
|
||||||
|
|
||||||
src/util/mem.i: src/util/mem.c.i
|
src/util/mem.i: src/util/mem.c.i
|
||||||
@ -623,6 +674,7 @@ src/util/mem.i: src/util/mem.c.i
|
|||||||
# target to preprocess a source file
|
# target to preprocess a source file
|
||||||
src/util/mem.c.i:
|
src/util/mem.c.i:
|
||||||
$(MAKE) $(MAKESILENT) -f CMakeFiles/ag_gen.dir/build.make CMakeFiles/ag_gen.dir/src/util/mem.c.i
|
$(MAKE) $(MAKESILENT) -f CMakeFiles/ag_gen.dir/build.make CMakeFiles/ag_gen.dir/src/util/mem.c.i
|
||||||
|
$(MAKE) $(MAKESILENT) -f CMakeFiles/dynstr_test.dir/build.make CMakeFiles/dynstr_test.dir/src/util/mem.c.i
|
||||||
.PHONY : src/util/mem.c.i
|
.PHONY : src/util/mem.c.i
|
||||||
|
|
||||||
src/util/mem.s: src/util/mem.c.s
|
src/util/mem.s: src/util/mem.c.s
|
||||||
@ -631,6 +683,7 @@ src/util/mem.s: src/util/mem.c.s
|
|||||||
# target to generate assembly for a file
|
# target to generate assembly for a file
|
||||||
src/util/mem.c.s:
|
src/util/mem.c.s:
|
||||||
$(MAKE) $(MAKESILENT) -f CMakeFiles/ag_gen.dir/build.make CMakeFiles/ag_gen.dir/src/util/mem.c.s
|
$(MAKE) $(MAKESILENT) -f CMakeFiles/ag_gen.dir/build.make CMakeFiles/ag_gen.dir/src/util/mem.c.s
|
||||||
|
$(MAKE) $(MAKESILENT) -f CMakeFiles/dynstr_test.dir/build.make CMakeFiles/dynstr_test.dir/src/util/mem.c.s
|
||||||
.PHONY : src/util/mem.c.s
|
.PHONY : src/util/mem.c.s
|
||||||
|
|
||||||
src/util/redis_manager.o: src/util/redis_manager.cpp.o
|
src/util/redis_manager.o: src/util/redis_manager.cpp.o
|
||||||
@ -761,7 +814,9 @@ help:
|
|||||||
@echo "... depend"
|
@echo "... depend"
|
||||||
@echo "... edit_cache"
|
@echo "... edit_cache"
|
||||||
@echo "... rebuild_cache"
|
@echo "... rebuild_cache"
|
||||||
|
@echo "... doc"
|
||||||
@echo "... ag_gen"
|
@echo "... ag_gen"
|
||||||
|
@echo "... dynstr_test"
|
||||||
@echo "... nm_parser.o"
|
@echo "... nm_parser.o"
|
||||||
@echo "... nm_parser.i"
|
@echo "... nm_parser.i"
|
||||||
@echo "... nm_parser.s"
|
@echo "... nm_parser.s"
|
||||||
@ -804,6 +859,9 @@ help:
|
|||||||
@echo "... src/mpi/tasks.o"
|
@echo "... src/mpi/tasks.o"
|
||||||
@echo "... src/mpi/tasks.i"
|
@echo "... src/mpi/tasks.i"
|
||||||
@echo "... src/mpi/tasks.s"
|
@echo "... src/mpi/tasks.s"
|
||||||
|
@echo "... src/tests/mem_test.o"
|
||||||
|
@echo "... src/tests/mem_test.i"
|
||||||
|
@echo "... src/tests/mem_test.s"
|
||||||
@echo "... src/util/avail_mem.o"
|
@echo "... src/util/avail_mem.o"
|
||||||
@echo "... src/util/avail_mem.i"
|
@echo "... src/util/avail_mem.i"
|
||||||
@echo "... src/util/avail_mem.s"
|
@echo "... src/util/avail_mem.s"
|
||||||
|
|||||||
16412
build/ag.svg
16412
build/ag.svg
File diff suppressed because it is too large
Load Diff
|
Before Width: | Height: | Size: 788 KiB After Width: | Height: | Size: 785 KiB |
BIN
build/ag_gen
BIN
build/ag_gen
Binary file not shown.
@ -1,132 +1,142 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"directory": "/home/nschrick/ag_parallel/build",
|
"directory": "/home/noah/Documents/School/Thesis Work/ag_parallel/build",
|
||||||
"command": "/opt/apps/gcc/8.2.0/bin/g++ -DBOOST_ALL_NO_LIB -DBOOST_MPI_DYN_LINK -DBOOST_SERIALIZATION_DYN_LINK -I/usr/include/postgresql -I/home/nschrick/ag_parallel/src -isystem /home/nschrick/pkg/boost/1.77.0/include -isystem /storage/home/nschrick/pkg/openmpi/4.1.2/include -isystem /home/nschrick/pkg/openmpi/4.1.2/include -std=c++14 -fopenmp -g -g -O0 -ggdb -Wall -fopenmp -pedantic -pthread -o CMakeFiles/ag_gen.dir/src/main.cpp.o -c /home/nschrick/ag_parallel/src/main.cpp",
|
"command": "/usr/bin/c++ -DBOOST_MPI_DYN_LINK -DBOOST_MPI_NO_LIB -DBOOST_SERIALIZATION_DYN_LINK -DBOOST_SERIALIZATION_NO_LIB -I/usr/include/postgresql -I\"/home/noah/Documents/School/Thesis Work/ag_parallel/src\" -std=c++14 -fopenmp -DREDIS -g -g -O0 -ggdb -Wall -fopenmp -pedantic -pthread -o CMakeFiles/ag_gen.dir/src/main.cpp.o -c \"/home/noah/Documents/School/Thesis Work/ag_parallel/src/main.cpp\"",
|
||||||
"file": "/home/nschrick/ag_parallel/src/main.cpp"
|
"file": "/home/noah/Documents/School/Thesis Work/ag_parallel/src/main.cpp"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"directory": "/home/nschrick/ag_parallel/build",
|
"directory": "/home/noah/Documents/School/Thesis Work/ag_parallel/build",
|
||||||
"command": "/opt/apps/gcc/8.2.0/bin/gcc -DBOOST_ALL_NO_LIB -DBOOST_MPI_DYN_LINK -DBOOST_SERIALIZATION_DYN_LINK -I/usr/include/postgresql -I/home/nschrick/ag_parallel/src -isystem /home/nschrick/pkg/boost/1.77.0/include -isystem /storage/home/nschrick/pkg/openmpi/4.1.2/include -isystem /home/nschrick/pkg/openmpi/4.1.2/include -g -pthread -o CMakeFiles/ag_gen.dir/nm_scanner.c.o -c /home/nschrick/ag_parallel/build/nm_scanner.c",
|
"command": "/usr/bin/cc -DBOOST_MPI_DYN_LINK -DBOOST_MPI_NO_LIB -DBOOST_SERIALIZATION_DYN_LINK -DBOOST_SERIALIZATION_NO_LIB -I/usr/include/postgresql -I\"/home/noah/Documents/School/Thesis Work/ag_parallel/src\" -g -pthread -o CMakeFiles/ag_gen.dir/nm_scanner.c.o -c \"/home/noah/Documents/School/Thesis Work/ag_parallel/build/nm_scanner.c\"",
|
||||||
"file": "/home/nschrick/ag_parallel/build/nm_scanner.c"
|
"file": "/home/noah/Documents/School/Thesis Work/ag_parallel/build/nm_scanner.c"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"directory": "/home/nschrick/ag_parallel/build",
|
"directory": "/home/noah/Documents/School/Thesis Work/ag_parallel/build",
|
||||||
"command": "/opt/apps/gcc/8.2.0/bin/gcc -DBOOST_ALL_NO_LIB -DBOOST_MPI_DYN_LINK -DBOOST_SERIALIZATION_DYN_LINK -I/usr/include/postgresql -I/home/nschrick/ag_parallel/src -isystem /home/nschrick/pkg/boost/1.77.0/include -isystem /storage/home/nschrick/pkg/openmpi/4.1.2/include -isystem /home/nschrick/pkg/openmpi/4.1.2/include -g -pthread -o CMakeFiles/ag_gen.dir/nm_parser.c.o -c /home/nschrick/ag_parallel/build/nm_parser.c",
|
"command": "/usr/bin/cc -DBOOST_MPI_DYN_LINK -DBOOST_MPI_NO_LIB -DBOOST_SERIALIZATION_DYN_LINK -DBOOST_SERIALIZATION_NO_LIB -I/usr/include/postgresql -I\"/home/noah/Documents/School/Thesis Work/ag_parallel/src\" -g -pthread -o CMakeFiles/ag_gen.dir/nm_parser.c.o -c \"/home/noah/Documents/School/Thesis Work/ag_parallel/build/nm_parser.c\"",
|
||||||
"file": "/home/nschrick/ag_parallel/build/nm_parser.c"
|
"file": "/home/noah/Documents/School/Thesis Work/ag_parallel/build/nm_parser.c"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"directory": "/home/nschrick/ag_parallel/build",
|
"directory": "/home/noah/Documents/School/Thesis Work/ag_parallel/build",
|
||||||
"command": "/opt/apps/gcc/8.2.0/bin/gcc -DBOOST_ALL_NO_LIB -DBOOST_MPI_DYN_LINK -DBOOST_SERIALIZATION_DYN_LINK -I/usr/include/postgresql -I/home/nschrick/ag_parallel/src -isystem /home/nschrick/pkg/boost/1.77.0/include -isystem /storage/home/nschrick/pkg/openmpi/4.1.2/include -isystem /home/nschrick/pkg/openmpi/4.1.2/include -g -pthread -o CMakeFiles/ag_gen.dir/xp_scanner.c.o -c /home/nschrick/ag_parallel/build/xp_scanner.c",
|
"command": "/usr/bin/cc -DBOOST_MPI_DYN_LINK -DBOOST_MPI_NO_LIB -DBOOST_SERIALIZATION_DYN_LINK -DBOOST_SERIALIZATION_NO_LIB -I/usr/include/postgresql -I\"/home/noah/Documents/School/Thesis Work/ag_parallel/src\" -g -pthread -o CMakeFiles/ag_gen.dir/xp_scanner.c.o -c \"/home/noah/Documents/School/Thesis Work/ag_parallel/build/xp_scanner.c\"",
|
||||||
"file": "/home/nschrick/ag_parallel/build/xp_scanner.c"
|
"file": "/home/noah/Documents/School/Thesis Work/ag_parallel/build/xp_scanner.c"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"directory": "/home/nschrick/ag_parallel/build",
|
"directory": "/home/noah/Documents/School/Thesis Work/ag_parallel/build",
|
||||||
"command": "/opt/apps/gcc/8.2.0/bin/gcc -DBOOST_ALL_NO_LIB -DBOOST_MPI_DYN_LINK -DBOOST_SERIALIZATION_DYN_LINK -I/usr/include/postgresql -I/home/nschrick/ag_parallel/src -isystem /home/nschrick/pkg/boost/1.77.0/include -isystem /storage/home/nschrick/pkg/openmpi/4.1.2/include -isystem /home/nschrick/pkg/openmpi/4.1.2/include -g -pthread -o CMakeFiles/ag_gen.dir/xp_parser.c.o -c /home/nschrick/ag_parallel/build/xp_parser.c",
|
"command": "/usr/bin/cc -DBOOST_MPI_DYN_LINK -DBOOST_MPI_NO_LIB -DBOOST_SERIALIZATION_DYN_LINK -DBOOST_SERIALIZATION_NO_LIB -I/usr/include/postgresql -I\"/home/noah/Documents/School/Thesis Work/ag_parallel/src\" -g -pthread -o CMakeFiles/ag_gen.dir/xp_parser.c.o -c \"/home/noah/Documents/School/Thesis Work/ag_parallel/build/xp_parser.c\"",
|
||||||
"file": "/home/nschrick/ag_parallel/build/xp_parser.c"
|
"file": "/home/noah/Documents/School/Thesis Work/ag_parallel/build/xp_parser.c"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"directory": "/home/nschrick/ag_parallel/build",
|
"directory": "/home/noah/Documents/School/Thesis Work/ag_parallel/build",
|
||||||
"command": "/opt/apps/gcc/8.2.0/bin/g++ -DBOOST_ALL_NO_LIB -DBOOST_MPI_DYN_LINK -DBOOST_SERIALIZATION_DYN_LINK -I/usr/include/postgresql -I/home/nschrick/ag_parallel/src -isystem /home/nschrick/pkg/boost/1.77.0/include -isystem /storage/home/nschrick/pkg/openmpi/4.1.2/include -isystem /home/nschrick/pkg/openmpi/4.1.2/include -std=c++14 -fopenmp -g -g -O0 -ggdb -Wall -fopenmp -pedantic -pthread -o CMakeFiles/ag_gen.dir/src/ag_gen/ag_gen.cpp.o -c /home/nschrick/ag_parallel/src/ag_gen/ag_gen.cpp",
|
"command": "/usr/bin/c++ -DBOOST_MPI_DYN_LINK -DBOOST_MPI_NO_LIB -DBOOST_SERIALIZATION_DYN_LINK -DBOOST_SERIALIZATION_NO_LIB -I/usr/include/postgresql -I\"/home/noah/Documents/School/Thesis Work/ag_parallel/src\" -std=c++14 -fopenmp -DREDIS -g -g -O0 -ggdb -Wall -fopenmp -pedantic -pthread -o CMakeFiles/ag_gen.dir/src/ag_gen/ag_gen.cpp.o -c \"/home/noah/Documents/School/Thesis Work/ag_parallel/src/ag_gen/ag_gen.cpp\"",
|
||||||
"file": "/home/nschrick/ag_parallel/src/ag_gen/ag_gen.cpp"
|
"file": "/home/noah/Documents/School/Thesis Work/ag_parallel/src/ag_gen/ag_gen.cpp"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"directory": "/home/nschrick/ag_parallel/build",
|
"directory": "/home/noah/Documents/School/Thesis Work/ag_parallel/build",
|
||||||
"command": "/opt/apps/gcc/8.2.0/bin/g++ -DBOOST_ALL_NO_LIB -DBOOST_MPI_DYN_LINK -DBOOST_SERIALIZATION_DYN_LINK -I/usr/include/postgresql -I/home/nschrick/ag_parallel/src -isystem /home/nschrick/pkg/boost/1.77.0/include -isystem /storage/home/nschrick/pkg/openmpi/4.1.2/include -isystem /home/nschrick/pkg/openmpi/4.1.2/include -std=c++14 -fopenmp -g -g -O0 -ggdb -Wall -fopenmp -pedantic -pthread -o CMakeFiles/ag_gen.dir/src/ag_gen/asset.cpp.o -c /home/nschrick/ag_parallel/src/ag_gen/asset.cpp",
|
"command": "/usr/bin/c++ -DBOOST_MPI_DYN_LINK -DBOOST_MPI_NO_LIB -DBOOST_SERIALIZATION_DYN_LINK -DBOOST_SERIALIZATION_NO_LIB -I/usr/include/postgresql -I\"/home/noah/Documents/School/Thesis Work/ag_parallel/src\" -std=c++14 -fopenmp -DREDIS -g -g -O0 -ggdb -Wall -fopenmp -pedantic -pthread -o CMakeFiles/ag_gen.dir/src/ag_gen/asset.cpp.o -c \"/home/noah/Documents/School/Thesis Work/ag_parallel/src/ag_gen/asset.cpp\"",
|
||||||
"file": "/home/nschrick/ag_parallel/src/ag_gen/asset.cpp"
|
"file": "/home/noah/Documents/School/Thesis Work/ag_parallel/src/ag_gen/asset.cpp"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"directory": "/home/nschrick/ag_parallel/build",
|
"directory": "/home/noah/Documents/School/Thesis Work/ag_parallel/build",
|
||||||
"command": "/opt/apps/gcc/8.2.0/bin/g++ -DBOOST_ALL_NO_LIB -DBOOST_MPI_DYN_LINK -DBOOST_SERIALIZATION_DYN_LINK -I/usr/include/postgresql -I/home/nschrick/ag_parallel/src -isystem /home/nschrick/pkg/boost/1.77.0/include -isystem /storage/home/nschrick/pkg/openmpi/4.1.2/include -isystem /home/nschrick/pkg/openmpi/4.1.2/include -std=c++14 -fopenmp -g -g -O0 -ggdb -Wall -fopenmp -pedantic -pthread -o CMakeFiles/ag_gen.dir/src/ag_gen/assetgroup.cpp.o -c /home/nschrick/ag_parallel/src/ag_gen/assetgroup.cpp",
|
"command": "/usr/bin/c++ -DBOOST_MPI_DYN_LINK -DBOOST_MPI_NO_LIB -DBOOST_SERIALIZATION_DYN_LINK -DBOOST_SERIALIZATION_NO_LIB -I/usr/include/postgresql -I\"/home/noah/Documents/School/Thesis Work/ag_parallel/src\" -std=c++14 -fopenmp -DREDIS -g -g -O0 -ggdb -Wall -fopenmp -pedantic -pthread -o CMakeFiles/ag_gen.dir/src/ag_gen/assetgroup.cpp.o -c \"/home/noah/Documents/School/Thesis Work/ag_parallel/src/ag_gen/assetgroup.cpp\"",
|
||||||
"file": "/home/nschrick/ag_parallel/src/ag_gen/assetgroup.cpp"
|
"file": "/home/noah/Documents/School/Thesis Work/ag_parallel/src/ag_gen/assetgroup.cpp"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"directory": "/home/nschrick/ag_parallel/build",
|
"directory": "/home/noah/Documents/School/Thesis Work/ag_parallel/build",
|
||||||
"command": "/opt/apps/gcc/8.2.0/bin/g++ -DBOOST_ALL_NO_LIB -DBOOST_MPI_DYN_LINK -DBOOST_SERIALIZATION_DYN_LINK -I/usr/include/postgresql -I/home/nschrick/ag_parallel/src -isystem /home/nschrick/pkg/boost/1.77.0/include -isystem /storage/home/nschrick/pkg/openmpi/4.1.2/include -isystem /home/nschrick/pkg/openmpi/4.1.2/include -std=c++14 -fopenmp -g -g -O0 -ggdb -Wall -fopenmp -pedantic -pthread -o CMakeFiles/ag_gen.dir/src/ag_gen/edge.cpp.o -c /home/nschrick/ag_parallel/src/ag_gen/edge.cpp",
|
"command": "/usr/bin/c++ -DBOOST_MPI_DYN_LINK -DBOOST_MPI_NO_LIB -DBOOST_SERIALIZATION_DYN_LINK -DBOOST_SERIALIZATION_NO_LIB -I/usr/include/postgresql -I\"/home/noah/Documents/School/Thesis Work/ag_parallel/src\" -std=c++14 -fopenmp -DREDIS -g -g -O0 -ggdb -Wall -fopenmp -pedantic -pthread -o CMakeFiles/ag_gen.dir/src/ag_gen/edge.cpp.o -c \"/home/noah/Documents/School/Thesis Work/ag_parallel/src/ag_gen/edge.cpp\"",
|
||||||
"file": "/home/nschrick/ag_parallel/src/ag_gen/edge.cpp"
|
"file": "/home/noah/Documents/School/Thesis Work/ag_parallel/src/ag_gen/edge.cpp"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"directory": "/home/nschrick/ag_parallel/build",
|
"directory": "/home/noah/Documents/School/Thesis Work/ag_parallel/build",
|
||||||
"command": "/opt/apps/gcc/8.2.0/bin/g++ -DBOOST_ALL_NO_LIB -DBOOST_MPI_DYN_LINK -DBOOST_SERIALIZATION_DYN_LINK -I/usr/include/postgresql -I/home/nschrick/ag_parallel/src -isystem /home/nschrick/pkg/boost/1.77.0/include -isystem /storage/home/nschrick/pkg/openmpi/4.1.2/include -isystem /home/nschrick/pkg/openmpi/4.1.2/include -std=c++14 -fopenmp -g -g -O0 -ggdb -Wall -fopenmp -pedantic -pthread -o CMakeFiles/ag_gen.dir/src/ag_gen/exploit.cpp.o -c /home/nschrick/ag_parallel/src/ag_gen/exploit.cpp",
|
"command": "/usr/bin/c++ -DBOOST_MPI_DYN_LINK -DBOOST_MPI_NO_LIB -DBOOST_SERIALIZATION_DYN_LINK -DBOOST_SERIALIZATION_NO_LIB -I/usr/include/postgresql -I\"/home/noah/Documents/School/Thesis Work/ag_parallel/src\" -std=c++14 -fopenmp -DREDIS -g -g -O0 -ggdb -Wall -fopenmp -pedantic -pthread -o CMakeFiles/ag_gen.dir/src/ag_gen/exploit.cpp.o -c \"/home/noah/Documents/School/Thesis Work/ag_parallel/src/ag_gen/exploit.cpp\"",
|
||||||
"file": "/home/nschrick/ag_parallel/src/ag_gen/exploit.cpp"
|
"file": "/home/noah/Documents/School/Thesis Work/ag_parallel/src/ag_gen/exploit.cpp"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"directory": "/home/nschrick/ag_parallel/build",
|
"directory": "/home/noah/Documents/School/Thesis Work/ag_parallel/build",
|
||||||
"command": "/opt/apps/gcc/8.2.0/bin/g++ -DBOOST_ALL_NO_LIB -DBOOST_MPI_DYN_LINK -DBOOST_SERIALIZATION_DYN_LINK -I/usr/include/postgresql -I/home/nschrick/ag_parallel/src -isystem /home/nschrick/pkg/boost/1.77.0/include -isystem /storage/home/nschrick/pkg/openmpi/4.1.2/include -isystem /home/nschrick/pkg/openmpi/4.1.2/include -std=c++14 -fopenmp -g -g -O0 -ggdb -Wall -fopenmp -pedantic -pthread -o CMakeFiles/ag_gen.dir/src/ag_gen/factbase.cpp.o -c /home/nschrick/ag_parallel/src/ag_gen/factbase.cpp",
|
"command": "/usr/bin/c++ -DBOOST_MPI_DYN_LINK -DBOOST_MPI_NO_LIB -DBOOST_SERIALIZATION_DYN_LINK -DBOOST_SERIALIZATION_NO_LIB -I/usr/include/postgresql -I\"/home/noah/Documents/School/Thesis Work/ag_parallel/src\" -std=c++14 -fopenmp -DREDIS -g -g -O0 -ggdb -Wall -fopenmp -pedantic -pthread -o CMakeFiles/ag_gen.dir/src/ag_gen/factbase.cpp.o -c \"/home/noah/Documents/School/Thesis Work/ag_parallel/src/ag_gen/factbase.cpp\"",
|
||||||
"file": "/home/nschrick/ag_parallel/src/ag_gen/factbase.cpp"
|
"file": "/home/noah/Documents/School/Thesis Work/ag_parallel/src/ag_gen/factbase.cpp"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"directory": "/home/nschrick/ag_parallel/build",
|
"directory": "/home/noah/Documents/School/Thesis Work/ag_parallel/build",
|
||||||
"command": "/opt/apps/gcc/8.2.0/bin/g++ -DBOOST_ALL_NO_LIB -DBOOST_MPI_DYN_LINK -DBOOST_SERIALIZATION_DYN_LINK -I/usr/include/postgresql -I/home/nschrick/ag_parallel/src -isystem /home/nschrick/pkg/boost/1.77.0/include -isystem /storage/home/nschrick/pkg/openmpi/4.1.2/include -isystem /home/nschrick/pkg/openmpi/4.1.2/include -std=c++14 -fopenmp -g -g -O0 -ggdb -Wall -fopenmp -pedantic -pthread -o CMakeFiles/ag_gen.dir/src/ag_gen/network_state.cpp.o -c /home/nschrick/ag_parallel/src/ag_gen/network_state.cpp",
|
"command": "/usr/bin/c++ -DBOOST_MPI_DYN_LINK -DBOOST_MPI_NO_LIB -DBOOST_SERIALIZATION_DYN_LINK -DBOOST_SERIALIZATION_NO_LIB -I/usr/include/postgresql -I\"/home/noah/Documents/School/Thesis Work/ag_parallel/src\" -std=c++14 -fopenmp -DREDIS -g -g -O0 -ggdb -Wall -fopenmp -pedantic -pthread -o CMakeFiles/ag_gen.dir/src/ag_gen/network_state.cpp.o -c \"/home/noah/Documents/School/Thesis Work/ag_parallel/src/ag_gen/network_state.cpp\"",
|
||||||
"file": "/home/nschrick/ag_parallel/src/ag_gen/network_state.cpp"
|
"file": "/home/noah/Documents/School/Thesis Work/ag_parallel/src/ag_gen/network_state.cpp"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"directory": "/home/nschrick/ag_parallel/build",
|
"directory": "/home/noah/Documents/School/Thesis Work/ag_parallel/build",
|
||||||
"command": "/opt/apps/gcc/8.2.0/bin/g++ -DBOOST_ALL_NO_LIB -DBOOST_MPI_DYN_LINK -DBOOST_SERIALIZATION_DYN_LINK -I/usr/include/postgresql -I/home/nschrick/ag_parallel/src -isystem /home/nschrick/pkg/boost/1.77.0/include -isystem /storage/home/nschrick/pkg/openmpi/4.1.2/include -isystem /home/nschrick/pkg/openmpi/4.1.2/include -std=c++14 -fopenmp -g -g -O0 -ggdb -Wall -fopenmp -pedantic -pthread -o CMakeFiles/ag_gen.dir/src/ag_gen/quality.cpp.o -c /home/nschrick/ag_parallel/src/ag_gen/quality.cpp",
|
"command": "/usr/bin/c++ -DBOOST_MPI_DYN_LINK -DBOOST_MPI_NO_LIB -DBOOST_SERIALIZATION_DYN_LINK -DBOOST_SERIALIZATION_NO_LIB -I/usr/include/postgresql -I\"/home/noah/Documents/School/Thesis Work/ag_parallel/src\" -std=c++14 -fopenmp -DREDIS -g -g -O0 -ggdb -Wall -fopenmp -pedantic -pthread -o CMakeFiles/ag_gen.dir/src/ag_gen/quality.cpp.o -c \"/home/noah/Documents/School/Thesis Work/ag_parallel/src/ag_gen/quality.cpp\"",
|
||||||
"file": "/home/nschrick/ag_parallel/src/ag_gen/quality.cpp"
|
"file": "/home/noah/Documents/School/Thesis Work/ag_parallel/src/ag_gen/quality.cpp"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"directory": "/home/nschrick/ag_parallel/build",
|
"directory": "/home/noah/Documents/School/Thesis Work/ag_parallel/build",
|
||||||
"command": "/opt/apps/gcc/8.2.0/bin/g++ -DBOOST_ALL_NO_LIB -DBOOST_MPI_DYN_LINK -DBOOST_SERIALIZATION_DYN_LINK -I/usr/include/postgresql -I/home/nschrick/ag_parallel/src -isystem /home/nschrick/pkg/boost/1.77.0/include -isystem /storage/home/nschrick/pkg/openmpi/4.1.2/include -isystem /home/nschrick/pkg/openmpi/4.1.2/include -std=c++14 -fopenmp -g -g -O0 -ggdb -Wall -fopenmp -pedantic -pthread -o CMakeFiles/ag_gen.dir/src/ag_gen/topology.cpp.o -c /home/nschrick/ag_parallel/src/ag_gen/topology.cpp",
|
"command": "/usr/bin/c++ -DBOOST_MPI_DYN_LINK -DBOOST_MPI_NO_LIB -DBOOST_SERIALIZATION_DYN_LINK -DBOOST_SERIALIZATION_NO_LIB -I/usr/include/postgresql -I\"/home/noah/Documents/School/Thesis Work/ag_parallel/src\" -std=c++14 -fopenmp -DREDIS -g -g -O0 -ggdb -Wall -fopenmp -pedantic -pthread -o CMakeFiles/ag_gen.dir/src/ag_gen/topology.cpp.o -c \"/home/noah/Documents/School/Thesis Work/ag_parallel/src/ag_gen/topology.cpp\"",
|
||||||
"file": "/home/nschrick/ag_parallel/src/ag_gen/topology.cpp"
|
"file": "/home/noah/Documents/School/Thesis Work/ag_parallel/src/ag_gen/topology.cpp"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"directory": "/home/nschrick/ag_parallel/build",
|
"directory": "/home/noah/Documents/School/Thesis Work/ag_parallel/build",
|
||||||
"command": "/opt/apps/gcc/8.2.0/bin/g++ -DBOOST_ALL_NO_LIB -DBOOST_MPI_DYN_LINK -DBOOST_SERIALIZATION_DYN_LINK -I/usr/include/postgresql -I/home/nschrick/ag_parallel/src -isystem /home/nschrick/pkg/boost/1.77.0/include -isystem /storage/home/nschrick/pkg/openmpi/4.1.2/include -isystem /home/nschrick/pkg/openmpi/4.1.2/include -std=c++14 -fopenmp -g -g -O0 -ggdb -Wall -fopenmp -pedantic -pthread -o CMakeFiles/ag_gen.dir/src/util/avail_mem.cpp.o -c /home/nschrick/ag_parallel/src/util/avail_mem.cpp",
|
"command": "/usr/bin/c++ -DBOOST_MPI_DYN_LINK -DBOOST_MPI_NO_LIB -DBOOST_SERIALIZATION_DYN_LINK -DBOOST_SERIALIZATION_NO_LIB -I/usr/include/postgresql -I\"/home/noah/Documents/School/Thesis Work/ag_parallel/src\" -std=c++14 -fopenmp -DREDIS -g -g -O0 -ggdb -Wall -fopenmp -pedantic -pthread -o CMakeFiles/ag_gen.dir/src/util/avail_mem.cpp.o -c \"/home/noah/Documents/School/Thesis Work/ag_parallel/src/util/avail_mem.cpp\"",
|
||||||
"file": "/home/nschrick/ag_parallel/src/util/avail_mem.cpp"
|
"file": "/home/noah/Documents/School/Thesis Work/ag_parallel/src/util/avail_mem.cpp"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"directory": "/home/nschrick/ag_parallel/build",
|
"directory": "/home/noah/Documents/School/Thesis Work/ag_parallel/build",
|
||||||
"command": "/opt/apps/gcc/8.2.0/bin/gcc -DBOOST_ALL_NO_LIB -DBOOST_MPI_DYN_LINK -DBOOST_SERIALIZATION_DYN_LINK -I/usr/include/postgresql -I/home/nschrick/ag_parallel/src -isystem /home/nschrick/pkg/boost/1.77.0/include -isystem /storage/home/nschrick/pkg/openmpi/4.1.2/include -isystem /home/nschrick/pkg/openmpi/4.1.2/include -g -pthread -o CMakeFiles/ag_gen.dir/src/util/build_sql.c.o -c /home/nschrick/ag_parallel/src/util/build_sql.c",
|
"command": "/usr/bin/cc -DBOOST_MPI_DYN_LINK -DBOOST_MPI_NO_LIB -DBOOST_SERIALIZATION_DYN_LINK -DBOOST_SERIALIZATION_NO_LIB -I/usr/include/postgresql -I\"/home/noah/Documents/School/Thesis Work/ag_parallel/src\" -g -pthread -o CMakeFiles/ag_gen.dir/src/util/build_sql.c.o -c \"/home/noah/Documents/School/Thesis Work/ag_parallel/src/util/build_sql.c\"",
|
||||||
"file": "/home/nschrick/ag_parallel/src/util/build_sql.c"
|
"file": "/home/noah/Documents/School/Thesis Work/ag_parallel/src/util/build_sql.c"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"directory": "/home/nschrick/ag_parallel/build",
|
"directory": "/home/noah/Documents/School/Thesis Work/ag_parallel/build",
|
||||||
"command": "/opt/apps/gcc/8.2.0/bin/g++ -DBOOST_ALL_NO_LIB -DBOOST_MPI_DYN_LINK -DBOOST_SERIALIZATION_DYN_LINK -I/usr/include/postgresql -I/home/nschrick/ag_parallel/src -isystem /home/nschrick/pkg/boost/1.77.0/include -isystem /storage/home/nschrick/pkg/openmpi/4.1.2/include -isystem /home/nschrick/pkg/openmpi/4.1.2/include -std=c++14 -fopenmp -g -g -O0 -ggdb -Wall -fopenmp -pedantic -pthread -o CMakeFiles/ag_gen.dir/src/util/common.cpp.o -c /home/nschrick/ag_parallel/src/util/common.cpp",
|
"command": "/usr/bin/c++ -DBOOST_MPI_DYN_LINK -DBOOST_MPI_NO_LIB -DBOOST_SERIALIZATION_DYN_LINK -DBOOST_SERIALIZATION_NO_LIB -I/usr/include/postgresql -I\"/home/noah/Documents/School/Thesis Work/ag_parallel/src\" -std=c++14 -fopenmp -DREDIS -g -g -O0 -ggdb -Wall -fopenmp -pedantic -pthread -o CMakeFiles/ag_gen.dir/src/util/common.cpp.o -c \"/home/noah/Documents/School/Thesis Work/ag_parallel/src/util/common.cpp\"",
|
||||||
"file": "/home/nschrick/ag_parallel/src/util/common.cpp"
|
"file": "/home/noah/Documents/School/Thesis Work/ag_parallel/src/util/common.cpp"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"directory": "/home/nschrick/ag_parallel/build",
|
"directory": "/home/noah/Documents/School/Thesis Work/ag_parallel/build",
|
||||||
"command": "/opt/apps/gcc/8.2.0/bin/g++ -DBOOST_ALL_NO_LIB -DBOOST_MPI_DYN_LINK -DBOOST_SERIALIZATION_DYN_LINK -I/usr/include/postgresql -I/home/nschrick/ag_parallel/src -isystem /home/nschrick/pkg/boost/1.77.0/include -isystem /storage/home/nschrick/pkg/openmpi/4.1.2/include -isystem /home/nschrick/pkg/openmpi/4.1.2/include -std=c++14 -fopenmp -g -g -O0 -ggdb -Wall -fopenmp -pedantic -pthread -o CMakeFiles/ag_gen.dir/src/util/db_functions.cpp.o -c /home/nschrick/ag_parallel/src/util/db_functions.cpp",
|
"command": "/usr/bin/c++ -DBOOST_MPI_DYN_LINK -DBOOST_MPI_NO_LIB -DBOOST_SERIALIZATION_DYN_LINK -DBOOST_SERIALIZATION_NO_LIB -I/usr/include/postgresql -I\"/home/noah/Documents/School/Thesis Work/ag_parallel/src\" -std=c++14 -fopenmp -DREDIS -g -g -O0 -ggdb -Wall -fopenmp -pedantic -pthread -o CMakeFiles/ag_gen.dir/src/util/db_functions.cpp.o -c \"/home/noah/Documents/School/Thesis Work/ag_parallel/src/util/db_functions.cpp\"",
|
||||||
"file": "/home/nschrick/ag_parallel/src/util/db_functions.cpp"
|
"file": "/home/noah/Documents/School/Thesis Work/ag_parallel/src/util/db_functions.cpp"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"directory": "/home/nschrick/ag_parallel/build",
|
"directory": "/home/noah/Documents/School/Thesis Work/ag_parallel/build",
|
||||||
"command": "/opt/apps/gcc/8.2.0/bin/gcc -DBOOST_ALL_NO_LIB -DBOOST_MPI_DYN_LINK -DBOOST_SERIALIZATION_DYN_LINK -I/usr/include/postgresql -I/home/nschrick/ag_parallel/src -isystem /home/nschrick/pkg/boost/1.77.0/include -isystem /storage/home/nschrick/pkg/openmpi/4.1.2/include -isystem /home/nschrick/pkg/openmpi/4.1.2/include -g -pthread -o CMakeFiles/ag_gen.dir/src/util/hash.c.o -c /home/nschrick/ag_parallel/src/util/hash.c",
|
"command": "/usr/bin/cc -DBOOST_MPI_DYN_LINK -DBOOST_MPI_NO_LIB -DBOOST_SERIALIZATION_DYN_LINK -DBOOST_SERIALIZATION_NO_LIB -I/usr/include/postgresql -I\"/home/noah/Documents/School/Thesis Work/ag_parallel/src\" -g -pthread -o CMakeFiles/ag_gen.dir/src/util/hash.c.o -c \"/home/noah/Documents/School/Thesis Work/ag_parallel/src/util/hash.c\"",
|
||||||
"file": "/home/nschrick/ag_parallel/src/util/hash.c"
|
"file": "/home/noah/Documents/School/Thesis Work/ag_parallel/src/util/hash.c"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"directory": "/home/nschrick/ag_parallel/build",
|
"directory": "/home/noah/Documents/School/Thesis Work/ag_parallel/build",
|
||||||
"command": "/opt/apps/gcc/8.2.0/bin/gcc -DBOOST_ALL_NO_LIB -DBOOST_MPI_DYN_LINK -DBOOST_SERIALIZATION_DYN_LINK -I/usr/include/postgresql -I/home/nschrick/ag_parallel/src -isystem /home/nschrick/pkg/boost/1.77.0/include -isystem /storage/home/nschrick/pkg/openmpi/4.1.2/include -isystem /home/nschrick/pkg/openmpi/4.1.2/include -g -pthread -o CMakeFiles/ag_gen.dir/src/util/list.c.o -c /home/nschrick/ag_parallel/src/util/list.c",
|
"command": "/usr/bin/cc -DBOOST_MPI_DYN_LINK -DBOOST_MPI_NO_LIB -DBOOST_SERIALIZATION_DYN_LINK -DBOOST_SERIALIZATION_NO_LIB -I/usr/include/postgresql -I\"/home/noah/Documents/School/Thesis Work/ag_parallel/src\" -g -pthread -o CMakeFiles/ag_gen.dir/src/util/list.c.o -c \"/home/noah/Documents/School/Thesis Work/ag_parallel/src/util/list.c\"",
|
||||||
"file": "/home/nschrick/ag_parallel/src/util/list.c"
|
"file": "/home/noah/Documents/School/Thesis Work/ag_parallel/src/util/list.c"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"directory": "/home/nschrick/ag_parallel/build",
|
"directory": "/home/noah/Documents/School/Thesis Work/ag_parallel/build",
|
||||||
"command": "/opt/apps/gcc/8.2.0/bin/gcc -DBOOST_ALL_NO_LIB -DBOOST_MPI_DYN_LINK -DBOOST_SERIALIZATION_DYN_LINK -I/usr/include/postgresql -I/home/nschrick/ag_parallel/src -isystem /home/nschrick/pkg/boost/1.77.0/include -isystem /storage/home/nschrick/pkg/openmpi/4.1.2/include -isystem /home/nschrick/pkg/openmpi/4.1.2/include -g -pthread -o CMakeFiles/ag_gen.dir/src/util/mem.c.o -c /home/nschrick/ag_parallel/src/util/mem.c",
|
"command": "/usr/bin/cc -DBOOST_MPI_DYN_LINK -DBOOST_MPI_NO_LIB -DBOOST_SERIALIZATION_DYN_LINK -DBOOST_SERIALIZATION_NO_LIB -I/usr/include/postgresql -I\"/home/noah/Documents/School/Thesis Work/ag_parallel/src\" -g -pthread -o CMakeFiles/ag_gen.dir/src/util/mem.c.o -c \"/home/noah/Documents/School/Thesis Work/ag_parallel/src/util/mem.c\"",
|
||||||
"file": "/home/nschrick/ag_parallel/src/util/mem.c"
|
"file": "/home/noah/Documents/School/Thesis Work/ag_parallel/src/util/mem.c"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"directory": "/home/nschrick/ag_parallel/build",
|
"directory": "/home/noah/Documents/School/Thesis Work/ag_parallel/build",
|
||||||
"command": "/opt/apps/gcc/8.2.0/bin/g++ -DBOOST_ALL_NO_LIB -DBOOST_MPI_DYN_LINK -DBOOST_SERIALIZATION_DYN_LINK -I/usr/include/postgresql -I/home/nschrick/ag_parallel/src -isystem /home/nschrick/pkg/boost/1.77.0/include -isystem /storage/home/nschrick/pkg/openmpi/4.1.2/include -isystem /home/nschrick/pkg/openmpi/4.1.2/include -std=c++14 -fopenmp -g -g -O0 -ggdb -Wall -fopenmp -pedantic -pthread -o CMakeFiles/ag_gen.dir/src/util/redis_manager.cpp.o -c /home/nschrick/ag_parallel/src/util/redis_manager.cpp",
|
"command": "/usr/bin/c++ -DBOOST_MPI_DYN_LINK -DBOOST_MPI_NO_LIB -DBOOST_SERIALIZATION_DYN_LINK -DBOOST_SERIALIZATION_NO_LIB -I/usr/include/postgresql -I\"/home/noah/Documents/School/Thesis Work/ag_parallel/src\" -std=c++14 -fopenmp -DREDIS -g -g -O0 -ggdb -Wall -fopenmp -pedantic -pthread -o CMakeFiles/ag_gen.dir/src/util/redis_manager.cpp.o -c \"/home/noah/Documents/School/Thesis Work/ag_parallel/src/util/redis_manager.cpp\"",
|
||||||
"file": "/home/nschrick/ag_parallel/src/util/redis_manager.cpp"
|
"file": "/home/noah/Documents/School/Thesis Work/ag_parallel/src/util/redis_manager.cpp"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"directory": "/home/nschrick/ag_parallel/build",
|
"directory": "/home/noah/Documents/School/Thesis Work/ag_parallel/build",
|
||||||
"command": "/opt/apps/gcc/8.2.0/bin/gcc -DBOOST_ALL_NO_LIB -DBOOST_MPI_DYN_LINK -DBOOST_SERIALIZATION_DYN_LINK -I/usr/include/postgresql -I/home/nschrick/ag_parallel/src -isystem /home/nschrick/pkg/boost/1.77.0/include -isystem /storage/home/nschrick/pkg/openmpi/4.1.2/include -isystem /home/nschrick/pkg/openmpi/4.1.2/include -g -pthread -o CMakeFiles/ag_gen.dir/src/util/str_array.c.o -c /home/nschrick/ag_parallel/src/util/str_array.c",
|
"command": "/usr/bin/cc -DBOOST_MPI_DYN_LINK -DBOOST_MPI_NO_LIB -DBOOST_SERIALIZATION_DYN_LINK -DBOOST_SERIALIZATION_NO_LIB -I/usr/include/postgresql -I\"/home/noah/Documents/School/Thesis Work/ag_parallel/src\" -g -pthread -o CMakeFiles/ag_gen.dir/src/util/str_array.c.o -c \"/home/noah/Documents/School/Thesis Work/ag_parallel/src/util/str_array.c\"",
|
||||||
"file": "/home/nschrick/ag_parallel/src/util/str_array.c"
|
"file": "/home/noah/Documents/School/Thesis Work/ag_parallel/src/util/str_array.c"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"directory": "/home/nschrick/ag_parallel/build",
|
"directory": "/home/noah/Documents/School/Thesis Work/ag_parallel/build",
|
||||||
"command": "/opt/apps/gcc/8.2.0/bin/gcc -DBOOST_ALL_NO_LIB -DBOOST_MPI_DYN_LINK -DBOOST_SERIALIZATION_DYN_LINK -I/usr/include/postgresql -I/home/nschrick/ag_parallel/src -isystem /home/nschrick/pkg/boost/1.77.0/include -isystem /storage/home/nschrick/pkg/openmpi/4.1.2/include -isystem /home/nschrick/pkg/openmpi/4.1.2/include -g -pthread -o CMakeFiles/ag_gen.dir/src/util/vector.c.o -c /home/nschrick/ag_parallel/src/util/vector.c",
|
"command": "/usr/bin/cc -DBOOST_MPI_DYN_LINK -DBOOST_MPI_NO_LIB -DBOOST_SERIALIZATION_DYN_LINK -DBOOST_SERIALIZATION_NO_LIB -I/usr/include/postgresql -I\"/home/noah/Documents/School/Thesis Work/ag_parallel/src\" -g -pthread -o CMakeFiles/ag_gen.dir/src/util/vector.c.o -c \"/home/noah/Documents/School/Thesis Work/ag_parallel/src/util/vector.c\"",
|
||||||
"file": "/home/nschrick/ag_parallel/src/util/vector.c"
|
"file": "/home/noah/Documents/School/Thesis Work/ag_parallel/src/util/vector.c"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"directory": "/home/nschrick/ag_parallel/build",
|
"directory": "/home/noah/Documents/School/Thesis Work/ag_parallel/build",
|
||||||
"command": "/opt/apps/gcc/8.2.0/bin/g++ -DBOOST_ALL_NO_LIB -DBOOST_MPI_DYN_LINK -DBOOST_SERIALIZATION_DYN_LINK -I/usr/include/postgresql -I/home/nschrick/ag_parallel/src -isystem /home/nschrick/pkg/boost/1.77.0/include -isystem /storage/home/nschrick/pkg/openmpi/4.1.2/include -isystem /home/nschrick/pkg/openmpi/4.1.2/include -std=c++14 -fopenmp -g -g -O0 -ggdb -Wall -fopenmp -pedantic -pthread -o CMakeFiles/ag_gen.dir/src/mpi/serialize.cpp.o -c /home/nschrick/ag_parallel/src/mpi/serialize.cpp",
|
"command": "/usr/bin/c++ -DBOOST_MPI_DYN_LINK -DBOOST_MPI_NO_LIB -DBOOST_SERIALIZATION_DYN_LINK -DBOOST_SERIALIZATION_NO_LIB -I/usr/include/postgresql -I\"/home/noah/Documents/School/Thesis Work/ag_parallel/src\" -std=c++14 -fopenmp -DREDIS -g -g -O0 -ggdb -Wall -fopenmp -pedantic -pthread -o CMakeFiles/ag_gen.dir/src/mpi/serialize.cpp.o -c \"/home/noah/Documents/School/Thesis Work/ag_parallel/src/mpi/serialize.cpp\"",
|
||||||
"file": "/home/nschrick/ag_parallel/src/mpi/serialize.cpp"
|
"file": "/home/noah/Documents/School/Thesis Work/ag_parallel/src/mpi/serialize.cpp"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"directory": "/home/nschrick/ag_parallel/build",
|
"directory": "/home/noah/Documents/School/Thesis Work/ag_parallel/build",
|
||||||
"command": "/opt/apps/gcc/8.2.0/bin/g++ -DBOOST_ALL_NO_LIB -DBOOST_MPI_DYN_LINK -DBOOST_SERIALIZATION_DYN_LINK -I/usr/include/postgresql -I/home/nschrick/ag_parallel/src -isystem /home/nschrick/pkg/boost/1.77.0/include -isystem /storage/home/nschrick/pkg/openmpi/4.1.2/include -isystem /home/nschrick/pkg/openmpi/4.1.2/include -std=c++14 -fopenmp -g -g -O0 -ggdb -Wall -fopenmp -pedantic -pthread -o CMakeFiles/ag_gen.dir/src/mpi/tasks.cpp.o -c /home/nschrick/ag_parallel/src/mpi/tasks.cpp",
|
"command": "/usr/bin/c++ -DBOOST_MPI_DYN_LINK -DBOOST_MPI_NO_LIB -DBOOST_SERIALIZATION_DYN_LINK -DBOOST_SERIALIZATION_NO_LIB -I/usr/include/postgresql -I\"/home/noah/Documents/School/Thesis Work/ag_parallel/src\" -std=c++14 -fopenmp -DREDIS -g -g -O0 -ggdb -Wall -fopenmp -pedantic -pthread -o CMakeFiles/ag_gen.dir/src/mpi/tasks.cpp.o -c \"/home/noah/Documents/School/Thesis Work/ag_parallel/src/mpi/tasks.cpp\"",
|
||||||
"file": "/home/nschrick/ag_parallel/src/mpi/tasks.cpp"
|
"file": "/home/noah/Documents/School/Thesis Work/ag_parallel/src/mpi/tasks.cpp"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"directory": "/home/noah/Documents/School/Thesis Work/ag_parallel/build",
|
||||||
|
"command": "/usr/bin/cc -I/usr/include/postgresql -I\"/home/noah/Documents/School/Thesis Work/ag_parallel/src\" -g -o CMakeFiles/dynstr_test.dir/src/util/mem.c.o -c \"/home/noah/Documents/School/Thesis Work/ag_parallel/src/util/mem.c\"",
|
||||||
|
"file": "/home/noah/Documents/School/Thesis Work/ag_parallel/src/util/mem.c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"directory": "/home/noah/Documents/School/Thesis Work/ag_parallel/build",
|
||||||
|
"command": "/usr/bin/cc -I/usr/include/postgresql -I\"/home/noah/Documents/School/Thesis Work/ag_parallel/src\" -g -o CMakeFiles/dynstr_test.dir/src/tests/mem_test.c.o -c \"/home/noah/Documents/School/Thesis Work/ag_parallel/src/tests/mem_test.c\"",
|
||||||
|
"file": "/home/noah/Documents/School/Thesis Work/ag_parallel/src/tests/mem_test.c"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
9412
build/states.txt
9412
build/states.txt
File diff suppressed because it is too large
Load Diff
@ -55,43 +55,43 @@ namespace mpi = boost::mpi;
|
|||||||
* @param _instance The initial information for generating the graph
|
* @param _instance The initial information for generating the graph
|
||||||
*/
|
*/
|
||||||
AGGen::AGGen(AGGenInstance &_instance, RedisManager &_rman) : instance(_instance), rman(&_rman) {
|
AGGen::AGGen(AGGenInstance &_instance, RedisManager &_rman) : instance(_instance), rman(&_rman) {
|
||||||
rman->clear();
|
rman->clear();
|
||||||
auto init_quals = instance.initial_qualities;
|
auto init_quals = instance.initial_qualities;
|
||||||
auto init_topos = instance.initial_topologies;
|
auto init_topos = instance.initial_topologies;
|
||||||
NetworkState init_state(init_quals, init_topos);
|
NetworkState init_state(init_quals, init_topos);
|
||||||
init_state.set_id();
|
init_state.set_id();
|
||||||
int init_id = init_state.get_id();
|
int init_id = init_state.get_id();
|
||||||
FactbaseItems init_items =
|
FactbaseItems init_items =
|
||||||
make_tuple(make_tuple(init_quals, init_topos), init_id);
|
make_tuple(make_tuple(init_quals, init_topos), init_id);
|
||||||
instance.factbases.push_back(init_state.get_factbase());
|
instance.factbases.push_back(init_state.get_factbase());
|
||||||
instance.factbase_items.push_back(init_items);
|
instance.factbase_items.push_back(init_items);
|
||||||
std::string hash = std::to_string(init_state.get_hash(instance.facts));
|
std::string hash = std::to_string(init_state.get_hash(instance.facts));
|
||||||
// std::cout << "before init insertion" << std::endl;
|
// std::cout << "before init insertion" << std::endl;
|
||||||
rman->insert_factbase(hash, init_id);
|
rman->insert_factbase(hash, init_id);
|
||||||
// rman->insert_facts(hash, init_quals, init_topos);
|
// rman->insert_facts(hash, init_quals, init_topos);
|
||||||
rman->commit();
|
rman->commit();
|
||||||
// std::cout << "after init insertion" << std::endl;
|
// std::cout << "after init insertion" << std::endl;
|
||||||
// hash_map.insert(std::make_pair(init_state.get_hash(instance.facts), init_id));
|
// hash_map.insert(std::make_pair(init_state.get_hash(instance.facts), init_id));
|
||||||
frontier.push_back(init_state);
|
frontier.push_back(init_state);
|
||||||
use_redis = true;
|
use_redis = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
AGGen::AGGen(AGGenInstance &_instance) : instance(_instance) {
|
AGGen::AGGen(AGGenInstance &_instance) : instance(_instance) {
|
||||||
auto init_quals = instance.initial_qualities;
|
auto init_quals = instance.initial_qualities;
|
||||||
auto init_topos = instance.initial_topologies;
|
auto init_topos = instance.initial_topologies;
|
||||||
NetworkState init_state(init_quals, init_topos);//instantiate an obj init_state with initial input
|
NetworkState init_state(init_quals, init_topos);//instantiate an obj init_state with initial input
|
||||||
init_state.set_id();
|
init_state.set_id();
|
||||||
int init_id = init_state.get_id();
|
int init_id = init_state.get_id();
|
||||||
FactbaseItems init_items =
|
FactbaseItems init_items =
|
||||||
make_tuple(make_tuple(init_quals, init_topos), init_id);
|
make_tuple(make_tuple(init_quals, init_topos), init_id);
|
||||||
instance.factbases.push_back(init_state.get_factbase());
|
instance.factbases.push_back(init_state.get_factbase());
|
||||||
instance.factbase_items.push_back(init_items);
|
instance.factbase_items.push_back(init_items);
|
||||||
std::string hash = std::to_string(init_state.get_hash(instance.facts));
|
std::string hash = std::to_string(init_state.get_hash(instance.facts));
|
||||||
hash_map.insert(std::make_pair(init_state.get_hash(instance.facts), init_id));
|
hash_map.insert(std::make_pair(init_state.get_hash(instance.facts), init_id));
|
||||||
frontier.push_back(init_state);
|
frontier.push_back(init_state);
|
||||||
use_redis = false;
|
use_redis = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -105,42 +105,42 @@ use_redis = false;
|
|||||||
* @return A tuple containing the "real" qualities and "real" topologies
|
* @return A tuple containing the "real" qualities and "real" topologies
|
||||||
*/
|
*/
|
||||||
std::tuple<std::vector<std::tuple<ACTION_T, Quality>>, std::vector<std::tuple<ACTION_T, Topology>>>
|
std::tuple<std::vector<std::tuple<ACTION_T, Quality>>, std::vector<std::tuple<ACTION_T, Topology>>>
|
||||||
createPostConditions(std::tuple<Exploit, AssetGroup> &group, Keyvalue &facts) {
|
createPostConditions(std::tuple<Exploit, AssetGroup> &group, Keyvalue &facts)
|
||||||
auto ex = std::get<0>(group);
|
{
|
||||||
auto ag = std::get<1>(group);
|
auto ex = std::get<0>(group);
|
||||||
|
auto ag = std::get<1>(group);
|
||||||
|
|
||||||
auto perm = ag.get_perm();
|
auto perm = ag.get_perm();
|
||||||
|
|
||||||
auto param_postconds_q = ex.postcond_list_q();
|
auto param_postconds_q = ex.postcond_list_q();
|
||||||
auto param_postconds_t = ex.postcond_list_t();
|
auto param_postconds_t = ex.postcond_list_t();
|
||||||
|
|
||||||
std::vector<std::tuple<ACTION_T, Quality>> postconds_q;
|
std::vector<std::tuple<ACTION_T, Quality>> postconds_q;
|
||||||
std::vector<std::tuple<ACTION_T, Topology>> postconds_t;
|
std::vector<std::tuple<ACTION_T, Topology>> postconds_t;
|
||||||
|
|
||||||
for (auto &postcond : param_postconds_q) {
|
for (auto &postcond : param_postconds_q) {
|
||||||
auto action = std::get<0>(postcond);
|
auto action = std::get<0>(postcond);
|
||||||
auto fact = std::get<1>(postcond);
|
auto fact = std::get<1>(postcond);
|
||||||
|
|
||||||
Quality q(perm[fact.get_param_num()], fact.name, fact.op,
|
Quality q(perm[fact.get_param_num()], fact.name, fact.op,
|
||||||
fact.value, facts);
|
fact.value, facts);
|
||||||
postconds_q.emplace_back(action, q);
|
postconds_q.emplace_back(action, q);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (auto &postcond : param_postconds_t) {
|
for (auto &postcond : param_postconds_t) {
|
||||||
auto action = std::get<0>(postcond);
|
auto action = std::get<0>(postcond);
|
||||||
auto fact = std::get<1>(postcond);
|
auto fact = std::get<1>(postcond);
|
||||||
|
|
||||||
auto dir = fact.get_dir();
|
auto dir = fact.get_dir();
|
||||||
auto prop = fact.get_property();
|
auto prop = fact.get_property();
|
||||||
auto op = fact.get_operation();
|
auto op = fact.get_operation();
|
||||||
auto val = fact.get_value();
|
auto val = fact.get_value();
|
||||||
|
|
||||||
Topology t(perm[fact.get_from_param()],
|
|
||||||
perm[fact.get_to_param()], dir, prop, op, val, facts);
|
|
||||||
postconds_t.emplace_back(action, t);
|
|
||||||
}
|
|
||||||
return make_tuple(postconds_q, postconds_t);
|
|
||||||
|
|
||||||
|
Topology t(perm[fact.get_from_param()],
|
||||||
|
perm[fact.get_to_param()], dir, prop, op, val, facts);
|
||||||
|
postconds_t.emplace_back(action, t);
|
||||||
|
}
|
||||||
|
return make_tuple(postconds_q, postconds_t);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -209,7 +209,6 @@ double mem_threshold, mpi::communicator &world)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int frt_size=frontier.size();
|
int frt_size=frontier.size();
|
||||||
if (world.rank() ==0){
|
if (world.rank() ==0){
|
||||||
printf("The actual QSize to start using multiple threads is %d\n",frt_size);
|
printf("The actual QSize to start using multiple threads is %d\n",frt_size);
|
||||||
@ -278,7 +277,6 @@ double mem_threshold, mpi::communicator &world)
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
//If we don't have the go-ahead, check for the Finalize message.
|
//If we don't have the go-ahead, check for the Finalize message.
|
||||||
//std::cout << "Node " << world.rank() << " is waiting for the go-ahead or finalize message." << std::endl;
|
|
||||||
while(!world.iprobe(0, 14)){
|
while(!world.iprobe(0, 14)){
|
||||||
if(world.iprobe(0, 15)){
|
if(world.iprobe(0, 15)){
|
||||||
mpi_exit = 1;
|
mpi_exit = 1;
|
||||||
@ -299,7 +297,6 @@ double mem_threshold, mpi::communicator &world)
|
|||||||
struct timeval t01,t02;
|
struct timeval t01,t02;
|
||||||
gettimeofday(&t01,NULL);
|
gettimeofday(&t01,NULL);
|
||||||
task_zero(instance, localFrontier, mem_threshold);
|
task_zero(instance, localFrontier, mem_threshold);
|
||||||
//std::cout << "Finished task 0." << std::endl;
|
|
||||||
gettimeofday(&t02,NULL);
|
gettimeofday(&t02,NULL);
|
||||||
total_task0+=(t02.tv_sec-t01.tv_sec)*1000.0+(t02.tv_usec-t01.tv_usec)/1000.0;
|
total_task0+=(t02.tv_sec-t01.tv_sec)*1000.0+(t02.tv_usec-t01.tv_usec)/1000.0;
|
||||||
}
|
}
|
||||||
@ -309,7 +306,6 @@ double mem_threshold, mpi::communicator &world)
|
|||||||
{
|
{
|
||||||
auto current_state = localFrontier.back();
|
auto current_state = localFrontier.back();
|
||||||
localFrontier.pop_back();
|
localFrontier.pop_back();
|
||||||
std::cout << "Sending state ID " << current_state.get_id() << std::endl;
|
|
||||||
for(int l=0; l < alloc; l++){
|
for(int l=0; l < alloc; l++){
|
||||||
mpi::request cs_req = world.isend(send_check(world, l), 20, current_state);
|
mpi::request cs_req = world.isend(send_check(world, l), 20, current_state);
|
||||||
cs_req.wait();
|
cs_req.wait();
|
||||||
@ -324,7 +320,6 @@ double mem_threshold, mpi::communicator &world)
|
|||||||
struct timeval t11,t12;
|
struct timeval t11,t12;
|
||||||
gettimeofday(&t11,NULL);
|
gettimeofday(&t11,NULL);
|
||||||
task_one(instance, current_state, exploit_list, od_map, alloc, two_alloc, reduc_factor, num_tasks, world, tcomm);
|
task_one(instance, current_state, exploit_list, od_map, alloc, two_alloc, reduc_factor, num_tasks, world, tcomm);
|
||||||
//std::cout << "Finished Task 1 as Node: " << world.rank() << std::endl;
|
|
||||||
gettimeofday(&t12,NULL);
|
gettimeofday(&t12,NULL);
|
||||||
total_task1+=(t12.tv_sec-t11.tv_sec)*1000.0+(t12.tv_usec-t11.tv_usec)/1000.0;
|
total_task1+=(t12.tv_sec-t11.tv_sec)*1000.0+(t12.tv_usec-t11.tv_usec)/1000.0;
|
||||||
}
|
}
|
||||||
@ -340,9 +335,8 @@ double mem_threshold, mpi::communicator &world)
|
|||||||
gettimeofday(&t21,NULL);
|
gettimeofday(&t21,NULL);
|
||||||
task_two(instance, alloc, two_alloc, world, localFrontier, mem_threshold,\
|
task_two(instance, alloc, two_alloc, world, localFrontier, mem_threshold,\
|
||||||
ttwo_comm, ex_groups, hash_map);
|
ttwo_comm, ex_groups, hash_map);
|
||||||
//std::cout << "Finished Task 2 as Node: " << world.rank() << std::endl;
|
|
||||||
//Wait for all Task 2 nodes to finish
|
|
||||||
|
|
||||||
|
//Wait for all Task 2 nodes to finish
|
||||||
while(ttwo_comm.iprobe(mpi::any_source, 3) || ttwo_comm.iprobe(mpi::any_source, 4)){
|
while(ttwo_comm.iprobe(mpi::any_source, 3) || ttwo_comm.iprobe(mpi::any_source, 4)){
|
||||||
NetworkState new_state;
|
NetworkState new_state;
|
||||||
Quality fact;
|
Quality fact;
|
||||||
@ -359,10 +353,8 @@ double mem_threshold, mpi::communicator &world)
|
|||||||
gettimeofday(&t22,NULL);
|
gettimeofday(&t22,NULL);
|
||||||
total_task2+=(t22.tv_sec-t21.tv_sec)*1000.0+(t22.tv_usec-t21.tv_usec)/1000.0;
|
total_task2+=(t22.tv_sec-t21.tv_sec)*1000.0+(t22.tv_usec-t21.tv_usec)/1000.0;
|
||||||
|
|
||||||
|
|
||||||
//Have the 0th Task 2 node tell the other world nodes that it's done
|
//Have the 0th Task 2 node tell the other world nodes that it's done
|
||||||
if(ttwo_comm.rank() == 0){
|
if(ttwo_comm.rank() == 0){
|
||||||
//std::cout << "" << std::endl;
|
|
||||||
for (int w = 0; w < world.size(); w++)
|
for (int w = 0; w < world.size(); w++)
|
||||||
{
|
{
|
||||||
//2 Node Edge case
|
//2 Node Edge case
|
||||||
@ -383,7 +375,6 @@ double mem_threshold, mpi::communicator &world)
|
|||||||
}
|
}
|
||||||
|
|
||||||
else{
|
else{
|
||||||
|
|
||||||
//If we haven't been told that task 2 is finished, and if we still more facts or states to update:
|
//If we haven't been told that task 2 is finished, and if we still more facts or states to update:
|
||||||
int finished_signal = 0;
|
int finished_signal = 0;
|
||||||
if(world.iprobe(mpi::any_source, 2)){
|
if(world.iprobe(mpi::any_source, 2)){
|
||||||
@ -423,19 +414,18 @@ double mem_threshold, mpi::communicator &world)
|
|||||||
world.recv(mpi::any_source, 6, current_state);
|
world.recv(mpi::any_source, 6, current_state);
|
||||||
world.recv(mpi::any_source, 10, exploit);
|
world.recv(mpi::any_source, 10, exploit);
|
||||||
world.recv(mpi::any_source, 11, assetGroup);
|
world.recv(mpi::any_source, 11, assetGroup);
|
||||||
std::cout << "Received new state" << std::endl;
|
|
||||||
if(instance.factbases.size() == 0){
|
if(instance.factbases.size() == 0){
|
||||||
last_known_id = 0;
|
last_known_id = 0;
|
||||||
}
|
}
|
||||||
else last_known_id = instance.factbases.size()-1;
|
else last_known_id = instance.factbases.size()-1;
|
||||||
if(get_num_states() > 1)
|
if(get_num_states() > 1)
|
||||||
last_known_id += get_num_states()-1;
|
last_known_id += get_num_states()-1;
|
||||||
|
|
||||||
struct timeval t31,t32;
|
struct timeval t31,t32;
|
||||||
gettimeofday(&t31,NULL);
|
gettimeofday(&t31,NULL);
|
||||||
task_three(instance, critical_state, localFrontier, mem_threshold, world,\
|
task_three(instance, critical_state, localFrontier, mem_threshold, world,\
|
||||||
alloc, two_alloc, current_state, exploit, assetGroup, hash_map, last_known_id);
|
alloc, two_alloc, current_state, exploit, assetGroup, hash_map, last_known_id);
|
||||||
//std::cout << "Task 3 finished." << std::endl;
|
|
||||||
gettimeofday(&t32,NULL);
|
gettimeofday(&t32,NULL);
|
||||||
total_task3+=(t32.tv_sec-t31.tv_sec)*1000.0+(t32.tv_usec-t31.tv_usec)/1000.0;
|
total_task3+=(t32.tv_sec-t31.tv_sec)*1000.0+(t32.tv_usec-t31.tv_usec)/1000.0;
|
||||||
}
|
}
|
||||||
@ -443,7 +433,6 @@ double mem_threshold, mpi::communicator &world)
|
|||||||
} //while probe/instance update ends
|
} //while probe/instance update ends
|
||||||
} //else wait ends
|
} //else wait ends
|
||||||
}
|
}
|
||||||
if(world.rank() == 0) std::cout << "" << std::endl;
|
|
||||||
//Task Four
|
//Task Four
|
||||||
if (world.rank() == send_check(world, alloc+two_alloc)){
|
if (world.rank() == send_check(world, alloc+two_alloc)){
|
||||||
if(world.iprobe(0, 7) || world.iprobe(0, 8)){
|
if(world.iprobe(0, 7) || world.iprobe(0, 8)){
|
||||||
@ -474,7 +463,6 @@ double mem_threshold, mpi::communicator &world)
|
|||||||
f_alpha = 0.0;
|
f_alpha = 0.0;
|
||||||
|
|
||||||
if (f_alpha >= (mem_threshold/2)) {
|
if (f_alpha >= (mem_threshold/2)) {
|
||||||
//std::cout << "Frontier Alpha prior to database storing: " << f_alpha << std::endl;
|
|
||||||
int q_eles = localFrontier.size();
|
int q_eles = localFrontier.size();
|
||||||
for (int q = 0; q < (q_eles/2); q++) {
|
for (int q = 0; q < (q_eles/2); q++) {
|
||||||
auto rem_state = localFrontier.front();
|
auto rem_state = localFrontier.front();
|
||||||
@ -536,10 +524,14 @@ double mem_threshold, mpi::communicator &world)
|
|||||||
//Don't really care about each node's time, we just want a time (node 1 time ~= node 2 time)
|
//Don't really care about each node's time, we just want a time (node 1 time ~= node 2 time)
|
||||||
//Just grab any value.
|
//Just grab any value.
|
||||||
if(world.rank() == 0){
|
if(world.rank() == 0){
|
||||||
world.irecv(mpi::any_source, 24, total_task1);
|
if(world.iprobe(mpi::any_source, 24))
|
||||||
world.irecv(mpi::any_source, 25, total_task2);
|
world.recv(mpi::any_source, 24, total_task1);
|
||||||
world.irecv(mpi::any_source, 26, total_task3);
|
if(world.iprobe(mpi::any_source, 25))
|
||||||
world.irecv(mpi::any_source, 27, total_task4);
|
world.recv(mpi::any_source, 25, total_task2);
|
||||||
|
if(world.iprobe(mpi::any_source, 26))
|
||||||
|
world.recv(mpi::any_source, 26, total_task3);
|
||||||
|
if(world.iprobe(mpi::any_source, 27))
|
||||||
|
world.recv(mpi::any_source, 27, total_task4);
|
||||||
|
|
||||||
std::cout << "Task 0 time: " << total_task0 << "ms" << std::endl;
|
std::cout << "Task 0 time: " << total_task0 << "ms" << std::endl;
|
||||||
std::cout << "Task 1 time: " << total_task1 << "ms" << std::endl;
|
std::cout << "Task 1 time: " << total_task1 << "ms" << std::endl;
|
||||||
@ -548,7 +540,6 @@ double mem_threshold, mpi::communicator &world)
|
|||||||
std::cout << "Task 4 time: " << total_task4 << "ms" << std::endl;
|
std::cout << "Task 4 time: " << total_task4 << "ms" << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
std::chrono::duration<double> elapsed_seconds = end - start;
|
std::chrono::duration<double> elapsed_seconds = end - start;
|
||||||
instance.elapsed_seconds = elapsed_seconds;
|
instance.elapsed_seconds = elapsed_seconds;
|
||||||
|
|
||||||
@ -558,7 +549,6 @@ double mem_threshold, mpi::communicator &world)
|
|||||||
AGGenInstance &AGGen::omp_generate(bool batch_process, int batch_num, int numThrd,\
|
AGGenInstance &AGGen::omp_generate(bool batch_process, int batch_num, int numThrd,\
|
||||||
int initQSize, double mem_threshold, mpi::communicator &world)
|
int initQSize, double mem_threshold, mpi::communicator &world)
|
||||||
{
|
{
|
||||||
|
|
||||||
std::vector<Exploit> exploit_list = instance.exploits;
|
std::vector<Exploit> exploit_list = instance.exploits;
|
||||||
|
|
||||||
//Create a vector that contains all the groups of exploits to be fired synchonously
|
//Create a vector that contains all the groups of exploits to be fired synchonously
|
||||||
@ -585,7 +575,8 @@ int initQSize, double mem_threshold, mpi::communicator &world)
|
|||||||
printf("esize: %lu\n", esize);
|
printf("esize: %lu\n", esize);
|
||||||
bool save_queued = false;
|
bool save_queued = false;
|
||||||
|
|
||||||
std::cout << "Generating Attack Graph" << std::endl;
|
if(world.rank() == 0)
|
||||||
|
std::cout << "Generating Attack Graph" << std::endl;
|
||||||
|
|
||||||
std::unordered_map<size_t, PermSet<size_t>> od_map;
|
std::unordered_map<size_t, PermSet<size_t>> od_map;
|
||||||
size_t assets_size = instance.assets.size();
|
size_t assets_size = instance.assets.size();
|
||||||
@ -720,11 +711,14 @@ int initQSize, double mem_threshold, mpi::communicator &world)
|
|||||||
} //while ends
|
} //while ends
|
||||||
|
|
||||||
//int numThrd=32;
|
//int numThrd=32;
|
||||||
printf("The number of threads used is %d\n",numThrd);
|
if(world.rank() == 0){
|
||||||
printf("The initial QSize is %d\n",initQSize);
|
printf("The number of threads used is %d\n",numThrd);
|
||||||
|
printf("The initial QSize is %d\n",initQSize);
|
||||||
|
}
|
||||||
|
|
||||||
int frt_size=frontier.size();
|
int frt_size=frontier.size();
|
||||||
printf("The actual QSize to start using multiple threads is %d\n",frt_size);
|
if(world.rank() ==0)
|
||||||
|
printf("The actual QSize to start using multiple threads is %d\n",frt_size);
|
||||||
|
|
||||||
|
|
||||||
double total_t=0.0;
|
double total_t=0.0;
|
||||||
@ -742,7 +736,6 @@ int initQSize, double mem_threshold, mpi::communicator &world)
|
|||||||
while (!localFrontier.empty() || !unex_empty()){//while starts
|
while (!localFrontier.empty() || !unex_empty()){//while starts
|
||||||
//We need to refill the localFrontier with states from the database if it's empty
|
//We need to refill the localFrontier with states from the database if it's empty
|
||||||
if(localFrontier.empty()) {
|
if(localFrontier.empty()) {
|
||||||
std::cout << "Frontier empty, retrieving from database" << std::endl;
|
|
||||||
double total_tt = 0.0;
|
double total_tt = 0.0;
|
||||||
struct timeval tt1,tt2;
|
struct timeval tt1,tt2;
|
||||||
gettimeofday(&tt1,NULL);
|
gettimeofday(&tt1,NULL);
|
||||||
@ -759,7 +752,6 @@ int initQSize, double mem_threshold, mpi::communicator &world)
|
|||||||
//Leave a 30% buffer in alpha
|
//Leave a 30% buffer in alpha
|
||||||
while((f_alpha <= (mem_threshold * 0.7)) && !unex_empty());
|
while((f_alpha <= (mem_threshold * 0.7)) && !unex_empty());
|
||||||
|
|
||||||
std::cout << "Retrieved " << retrv_counter << " factbases from the database." << std::endl;
|
|
||||||
gettimeofday(&tt2,NULL);
|
gettimeofday(&tt2,NULL);
|
||||||
total_tt+=(tt2.tv_sec-tt1.tv_sec)*1000.0+(tt2.tv_usec-tt1.tv_usec)/1000.0;
|
total_tt+=(tt2.tv_sec-tt1.tv_sec)*1000.0+(tt2.tv_usec-tt1.tv_usec)/1000.0;
|
||||||
//printf("Retrieving from db took %lf s.\n", total_tt);
|
//printf("Retrieving from db took %lf s.\n", total_tt);
|
||||||
@ -861,7 +853,7 @@ int initQSize, double mem_threshold, mpi::communicator &world)
|
|||||||
//TODO: Does not work if only some assets belong to a group. This only works if
|
//TODO: Does not work if only some assets belong to a group. This only works if
|
||||||
//all assets are in the group
|
//all assets are in the group
|
||||||
if(sync_exploits.size() < instance.assets.size()){
|
if(sync_exploits.size() < instance.assets.size()){
|
||||||
break;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -885,7 +877,7 @@ int initQSize, double mem_threshold, mpi::communicator &world)
|
|||||||
break;
|
break;
|
||||||
case UPDATE_T:
|
case UPDATE_T:
|
||||||
new_state.update_quality(fact);
|
new_state.update_quality(fact);
|
||||||
|
/*
|
||||||
//TODO: if fact!= "="" call new_state function, passing fact and instance.facts. Update the quality, and insert it into the hash_table instead of this convoluted mess
|
//TODO: if fact!= "="" call new_state function, passing fact and instance.facts. Update the quality, and insert it into the hash_table instead of this convoluted mess
|
||||||
if(fact.get_op()=="+="){
|
if(fact.get_op()=="+="){
|
||||||
std::unordered_map<std::string,int>::const_iterator got = instance.facts.hash_table.find(new_state.compound_assign(fact));
|
std::unordered_map<std::string,int>::const_iterator got = instance.facts.hash_table.find(new_state.compound_assign(fact));
|
||||||
@ -899,6 +891,7 @@ int initQSize, double mem_threshold, mpi::communicator &world)
|
|||||||
instance.facts.str_vector.push_back(new_state.compound_assign(fact));
|
instance.facts.str_vector.push_back(new_state.compound_assign(fact));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
break;
|
break;
|
||||||
case DELETE_T:
|
case DELETE_T:
|
||||||
new_state.delete_quality(fact);
|
new_state.delete_quality(fact);
|
||||||
@ -951,13 +944,11 @@ int initQSize, double mem_threshold, mpi::communicator &world)
|
|||||||
f_alpha = 0.0;
|
f_alpha = 0.0;
|
||||||
|
|
||||||
if (f_alpha >= (mem_threshold/2)) {
|
if (f_alpha >= (mem_threshold/2)) {
|
||||||
//std::cout << "Frontier Alpha prior to database storing: " << f_alpha << std::endl;
|
|
||||||
save_unexplored_to_db(new_state);
|
save_unexplored_to_db(new_state);
|
||||||
if (!localFrontier.empty())
|
if (!localFrontier.empty())
|
||||||
f_alpha = (static_cast<double>(localFrontier.size()) * (localFrontier.back().get_size()))/tot_sys_mem;
|
f_alpha = (static_cast<double>(localFrontier.size()) * (localFrontier.back().get_size()))/tot_sys_mem;
|
||||||
else
|
else
|
||||||
f_alpha = 0;
|
f_alpha = 0;
|
||||||
//std::cout << "Frontier Alpha after database storing: " << f_alpha << std::endl;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//Store new state in database to ensure proper ordering of the FIFO queue
|
//Store new state in database to ensure proper ordering of the FIFO queue
|
||||||
@ -971,7 +962,6 @@ int initQSize, double mem_threshold, mpi::communicator &world)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (i_alpha >= mem_threshold/2){
|
if (i_alpha >= mem_threshold/2){
|
||||||
//std::cout << "Instance Alpha prior to database storing: " << i_alpha << std::endl;
|
|
||||||
save_ag_to_db(instance, true);
|
save_ag_to_db(instance, true);
|
||||||
|
|
||||||
//Clear vectors and free memory
|
//Clear vectors and free memory
|
||||||
@ -983,7 +973,6 @@ int initQSize, double mem_threshold, mpi::communicator &world)
|
|||||||
sizeof(instance.factbase_items) + (sizeof(instance.factbase_items[0]) * instance.factbase_items.size()) +\
|
sizeof(instance.factbase_items) + (sizeof(instance.factbase_items[0]) * instance.factbase_items.size()) +\
|
||||||
sizeof(instance.edges) + (sizeof(instance.edges[0]) * instance.edges.size()));
|
sizeof(instance.edges) + (sizeof(instance.edges[0]) * instance.edges.size()));
|
||||||
i_alpha = i_usage/tot_sys_mem;
|
i_alpha = i_usage/tot_sys_mem;
|
||||||
//std::cout << "Instance Alpha after database storing: " << i_alpha << std::endl;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Edge ed(current_state.get_id(), new_state.get_id(), exploit, assetGroup);
|
Edge ed(current_state.get_id(), new_state.get_id(), exploit, assetGroup);
|
||||||
@ -999,14 +988,15 @@ int initQSize, double mem_threshold, mpi::communicator &world)
|
|||||||
}
|
}
|
||||||
} //sync fire if
|
} //sync fire if
|
||||||
else
|
else
|
||||||
break;
|
continue;
|
||||||
} //for loop for new states ends
|
} //for loop for new states ends
|
||||||
} //while frontier ends
|
} //while frontier ends
|
||||||
auto ag_end= std::chrono::system_clock::now();
|
auto ag_end= std::chrono::system_clock::now();
|
||||||
}//OpenMP block ends
|
}//OpenMP block ends
|
||||||
gettimeofday(&t2,NULL);
|
gettimeofday(&t2,NULL);
|
||||||
total_t+=(t2.tv_sec-t1.tv_sec)*1000.0+(t2.tv_usec-t1.tv_usec)/1000.0;
|
total_t+=(t2.tv_sec-t1.tv_sec)*1000.0+(t2.tv_usec-t1.tv_usec)/1000.0;
|
||||||
printf("AG TOOK %lf ms.\n", total_t);
|
if(world.rank() == 0)
|
||||||
|
printf("AG TOOK %lf ms.\n", total_t);
|
||||||
|
|
||||||
auto end = std::chrono::system_clock::now();
|
auto end = std::chrono::system_clock::now();
|
||||||
|
|
||||||
@ -1106,7 +1096,6 @@ int initQSize, double mem_threshold, mpi::communicator &world, int state_limit)
|
|||||||
if(world.rank() == 0){
|
if(world.rank() == 0){
|
||||||
//2 offset for root node and db node
|
//2 offset for root node and db node
|
||||||
for (int w = 0; w < std::min((int)world.size()-2, (int)localFrontier.size()); w++){
|
for (int w = 0; w < std::min((int)world.size()-2, (int)localFrontier.size()); w++){
|
||||||
//localFrontier.front().force_set_id(localFrontier.front().get_hash(instance.facts));
|
|
||||||
last_known_id = localFrontier.front().get_id();
|
last_known_id = localFrontier.front().get_id();
|
||||||
mpi::request state_req = world.isend(w+2, 1, localFrontier.front());
|
mpi::request state_req = world.isend(w+2, 1, localFrontier.front());
|
||||||
localFrontier.pop_front();
|
localFrontier.pop_front();
|
||||||
@ -1247,7 +1236,7 @@ int initQSize, double mem_threshold, mpi::communicator &world, int state_limit)
|
|||||||
//TODO: Does not work if only some assets belong to a group. This only works if
|
//TODO: Does not work if only some assets belong to a group. This only works if
|
||||||
//all assets are in the group
|
//all assets are in the group
|
||||||
if(sync_exploits.size() < instance.assets.size()){
|
if(sync_exploits.size() < instance.assets.size()){
|
||||||
break;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1271,11 +1260,10 @@ int initQSize, double mem_threshold, mpi::communicator &world, int state_limit)
|
|||||||
break;
|
break;
|
||||||
case UPDATE_T:
|
case UPDATE_T:
|
||||||
new_state.update_quality(fact);
|
new_state.update_quality(fact);
|
||||||
|
/*
|
||||||
//TODO: if fact!= "="" call new_state function, passing fact and instance.facts. Update the quality, and insert it into the hash_table instead of this convoluted mess
|
//TODO: if fact!= "="" call new_state function, passing fact and instance.facts. Update the quality, and insert it into the hash_table instead of this convoluted mess
|
||||||
if(fact.get_op()=="+="){
|
if(fact.get_op()=="+="){
|
||||||
|
|
||||||
//std::cout<<" AFTER UPDATE "<<new_state.compound_assign(fact)<<std::endl;
|
|
||||||
std::unordered_map<std::string,int>::const_iterator got = instance.facts.hash_table.find(new_state.compound_assign(fact));
|
std::unordered_map<std::string,int>::const_iterator got = instance.facts.hash_table.find(new_state.compound_assign(fact));
|
||||||
|
|
||||||
//If the value is not already in the hash_table, insert it.
|
//If the value is not already in the hash_table, insert it.
|
||||||
@ -1301,6 +1289,7 @@ int initQSize, double mem_threshold, mpi::communicator &world, int state_limit)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
break;
|
break;
|
||||||
case DELETE_T:
|
case DELETE_T:
|
||||||
new_state.delete_quality(fact);
|
new_state.delete_quality(fact);
|
||||||
@ -1352,13 +1341,11 @@ int initQSize, double mem_threshold, mpi::communicator &world, int state_limit)
|
|||||||
} //sync fire if
|
} //sync fire if
|
||||||
else
|
else
|
||||||
break;
|
break;
|
||||||
} //for loop for new states ends
|
} //for loop for new states ends
|
||||||
|
|
||||||
state_count++;
|
state_count++;
|
||||||
|
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
break;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1569,7 +1556,6 @@ int initQSize, double mem_threshold, mpi::communicator &world, int state_limit)
|
|||||||
|
|
||||||
msg_sends = 0;
|
msg_sends = 0;
|
||||||
//Send new Network State to all worker nodes, if we have enough unex states to do so
|
//Send new Network State to all worker nodes, if we have enough unex states to do so
|
||||||
//2 offset for root node and db node
|
|
||||||
for (int w = 0; w < world.size(); w++){
|
for (int w = 0; w < world.size(); w++){
|
||||||
if(world.size() >= 3){
|
if(world.size() >= 3){
|
||||||
if(w == 0 || w == 1){
|
if(w == 0 || w == 1){
|
||||||
|
|||||||
@ -59,7 +59,6 @@ void task_zero(AGGenInstance &instance, std::deque<NetworkState> &localFrontier,
|
|||||||
//Leave a 30% buffer in alpha
|
//Leave a 30% buffer in alpha
|
||||||
while((f_alpha <= (mem_threshold * 0.7)) && !unex_empty());
|
while((f_alpha <= (mem_threshold * 0.7)) && !unex_empty());
|
||||||
|
|
||||||
//std::cout << "Retrieved " << retrv_counter << " factbases from the database." << std::endl;
|
|
||||||
gettimeofday(&tt2,NULL);
|
gettimeofday(&tt2,NULL);
|
||||||
total_tt+=(tt2.tv_sec-tt1.tv_sec)*1000.0+(tt2.tv_usec-tt1.tv_usec)/1000.0;
|
total_tt+=(tt2.tv_sec-tt1.tv_sec)*1000.0+(tt2.tv_usec-tt1.tv_usec)/1000.0;
|
||||||
//printf("Retrieving from db took %lf s.\n", total_tt);
|
//printf("Retrieving from db took %lf s.\n", total_tt);
|
||||||
@ -70,7 +69,6 @@ void task_one(AGGenInstance &instance, NetworkState ¤t_state,\
|
|||||||
int alloc, int two_alloc, int reduc_factor, int num_tasks, mpi::communicator &world,\
|
int alloc, int two_alloc, int reduc_factor, int num_tasks, mpi::communicator &world,\
|
||||||
mpi::communicator &tcomm){
|
mpi::communicator &tcomm){
|
||||||
|
|
||||||
//std::cout << "Process rank " << world.rank() << " with " << alloc << " node(s) allocated has started Task 1 and has a local communicator rank of " << tcomm.rank() << std::endl;
|
|
||||||
std::vector<std::tuple<Exploit, AssetGroup>> appl_exploits;
|
std::vector<std::tuple<Exploit, AssetGroup>> appl_exploits;
|
||||||
unsigned long esize = exploit_list.size();
|
unsigned long esize = exploit_list.size();
|
||||||
|
|
||||||
@ -184,8 +182,6 @@ void task_one(AGGenInstance &instance, NetworkState ¤t_state,\
|
|||||||
if (alloc > two_alloc)
|
if (alloc > two_alloc)
|
||||||
skip_greatest = 1;
|
skip_greatest = 1;
|
||||||
if(world.rank() <= (alloc - skip_greatest)){
|
if(world.rank() <= (alloc - skip_greatest)){
|
||||||
//std::cout << "Process " << world.rank() << " sending Appl exploit list of size " << appl_exploits.size() <<\
|
|
||||||
" to Process " << send_check(world, world.rank() + alloc -1) << std::endl;
|
|
||||||
mpi::request appl_req = world.isend(send_check(world, world.rank() + alloc -1), 30, appl_exploits);
|
mpi::request appl_req = world.isend(send_check(world, world.rank() + alloc -1), 30, appl_exploits);
|
||||||
mpi::request cs_req = world.isend(send_check(world, world.rank() + alloc -1), 40, current_state);
|
mpi::request cs_req = world.isend(send_check(world, world.rank() + alloc -1), 40, current_state);
|
||||||
appl_req.wait();
|
appl_req.wait();
|
||||||
@ -197,17 +193,12 @@ void task_two(AGGenInstance &instance, int alloc, int two_alloc, boost::mpi::com
|
|||||||
std::deque<NetworkState> &localFrontier, double mem_threshold, boost::mpi::communicator &ttwo_comm,\
|
std::deque<NetworkState> &localFrontier, double mem_threshold, boost::mpi::communicator &ttwo_comm,\
|
||||||
std::vector<std::string> ex_groups, std::unordered_map<size_t, int> &hash_map){
|
std::vector<std::string> ex_groups, std::unordered_map<size_t, int> &hash_map){
|
||||||
|
|
||||||
//std::cout << "Process rank " << world.rank() << " with " << two_alloc <<\
|
|
||||||
" node(s) allocated has started Task 2 with local communicator rank of " << ttwo_comm.rank() << std::endl;
|
|
||||||
|
|
||||||
NetworkState current_state;
|
NetworkState current_state;
|
||||||
std::vector<std::tuple<Exploit, AssetGroup>> appl_exploits;
|
std::vector<std::tuple<Exploit, AssetGroup>> appl_exploits;
|
||||||
|
|
||||||
world.recv(mpi::any_source, 30, appl_exploits);
|
world.recv(mpi::any_source, 30, appl_exploits);
|
||||||
world.recv(mpi::any_source, 40, current_state);
|
world.recv(mpi::any_source, 40, current_state);
|
||||||
|
|
||||||
std::cout << "Process " << world.rank() << " with local communicator rank " << ttwo_comm.rank() << " received Task 1 data with Appl exploit size " << appl_exploits.size() << " for State ID " << current_state.get_id() << std::endl;
|
|
||||||
|
|
||||||
//Check for new fact and new state that caused an update in the hash table and facts
|
//Check for new fact and new state that caused an update in the hash table and facts
|
||||||
while(world.iprobe(mpi::any_source, 3) || world.iprobe(mpi::any_source, 4)){
|
while(world.iprobe(mpi::any_source, 3) || world.iprobe(mpi::any_source, 4)){
|
||||||
NetworkState update_state;
|
NetworkState update_state;
|
||||||
@ -237,8 +228,6 @@ void task_two(AGGenInstance &instance, int alloc, int two_alloc, boost::mpi::com
|
|||||||
|
|
||||||
//Build up the map of synchronous fire exploits and send to 0th node of task 2
|
//Build up the map of synchronous fire exploits and send to 0th node of task 2
|
||||||
for(auto itr=appl_exploits.begin(); itr!=appl_exploits.end();){
|
for(auto itr=appl_exploits.begin(); itr!=appl_exploits.end();){
|
||||||
//auto e = appl_exploits.at(itr);
|
|
||||||
|
|
||||||
auto e = *itr;
|
auto e = *itr;
|
||||||
egroup = std::get<0>(e).get_group();
|
egroup = std::get<0>(e).get_group();
|
||||||
int tflag = 0;
|
int tflag = 0;
|
||||||
@ -275,7 +264,6 @@ void task_two(AGGenInstance &instance, int alloc, int two_alloc, boost::mpi::com
|
|||||||
sync_vectors[std::get<0>(sync_recv)].insert(std::end(sync_vectors[std::get<0>(sync_recv)]), std::begin(partial_appl_exploits), std::end(partial_appl_exploits));
|
sync_vectors[std::get<0>(sync_recv)].insert(std::end(sync_vectors[std::get<0>(sync_recv)]), std::begin(partial_appl_exploits), std::end(partial_appl_exploits));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
std::cout << "Before the loop, Process " << world.rank() << " has Appl exploit size " << appl_exploits.size() << std::endl;
|
|
||||||
//loop through the vector
|
//loop through the vector
|
||||||
for(auto itr=appl_exploits.begin(); itr!=appl_exploits.end(); itr++){
|
for(auto itr=appl_exploits.begin(); itr!=appl_exploits.end(); itr++){
|
||||||
|
|
||||||
@ -297,7 +285,6 @@ void task_two(AGGenInstance &instance, int alloc, int two_alloc, boost::mpi::com
|
|||||||
auto assetGroup = std::get<1>(e);
|
auto assetGroup = std::get<1>(e);
|
||||||
|
|
||||||
egroup=exploit.get_group();
|
egroup=exploit.get_group();
|
||||||
std::cout << "Process " << world.rank() << " for state ID " << current_state.get_id() << " has exploit " << exploit.get_name() << " with group " << egroup << std::endl;
|
|
||||||
if ((egroup != "null" && group_fired[egroup] == 0) || egroup == "null"){
|
if ((egroup != "null" && group_fired[egroup] == 0) || egroup == "null"){
|
||||||
NetworkState new_state{current_state};
|
NetworkState new_state{current_state};
|
||||||
std::vector<std::tuple<Exploit, AssetGroup>> sync_exploits;
|
std::vector<std::tuple<Exploit, AssetGroup>> sync_exploits;
|
||||||
@ -314,7 +301,6 @@ void task_two(AGGenInstance &instance, int alloc, int two_alloc, boost::mpi::com
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
std::cout << "Sync exploit size " << sync_exploits.size() << " at Node " << world.rank() << " out of a total of " << appl_exploits.size() << std::endl;
|
|
||||||
for(auto sync_itr=sync_exploits.begin(); sync_itr!=sync_exploits.end(); sync_itr++){
|
for(auto sync_itr=sync_exploits.begin(); sync_itr!=sync_exploits.end(); sync_itr++){
|
||||||
e = *sync_itr;
|
e = *sync_itr;
|
||||||
exploit = std::get<0>(e);
|
exploit = std::get<0>(e);
|
||||||
@ -326,7 +312,6 @@ void task_two(AGGenInstance &instance, int alloc, int two_alloc, boost::mpi::com
|
|||||||
auto qualities = std::get<0>(postconditions);
|
auto qualities = std::get<0>(postconditions);
|
||||||
auto topologies = std::get<1>(postconditions);
|
auto topologies = std::get<1>(postconditions);
|
||||||
|
|
||||||
std::cout << "Exploit " << exploit.get_name() << " is applicable to ID " << current_state.get_id() << std::endl;
|
|
||||||
for(auto &qual : qualities) {
|
for(auto &qual : qualities) {
|
||||||
auto action = std::get<0>(qual);
|
auto action = std::get<0>(qual);
|
||||||
auto fact = std::get<1>(qual);
|
auto fact = std::get<1>(qual);
|
||||||
@ -337,10 +322,10 @@ void task_two(AGGenInstance &instance, int alloc, int two_alloc, boost::mpi::com
|
|||||||
case UPDATE_T:
|
case UPDATE_T:
|
||||||
new_state.update_quality(fact);
|
new_state.update_quality(fact);
|
||||||
|
|
||||||
|
/*
|
||||||
//TODO: if fact!= "="" call new_state function, passing fact and instance.facts. Update the quality, and insert it into the hash_table instead of this convoluted mess
|
//TODO: if fact!= "="" call new_state function, passing fact and instance.facts. Update the quality, and insert it into the hash_table instead of this convoluted mess
|
||||||
if(fact.get_op()=="+="){
|
if(fact.get_op()=="+="){
|
||||||
|
|
||||||
//std::cout<<" AFTER UPDATE "<<new_state.compound_assign(fact)<<std::endl;
|
|
||||||
std::unordered_map<std::string,int>::const_iterator got = instance.facts.hash_table.find(new_state.compound_assign(fact));
|
std::unordered_map<std::string,int>::const_iterator got = instance.facts.hash_table.find(new_state.compound_assign(fact));
|
||||||
|
|
||||||
//If the value is not already in the hash_table, insert it.
|
//If the value is not already in the hash_table, insert it.
|
||||||
@ -351,6 +336,7 @@ void task_two(AGGenInstance &instance, int alloc, int two_alloc, boost::mpi::com
|
|||||||
instance.facts.length++;
|
instance.facts.length++;
|
||||||
instance.facts.str_vector.push_back(new_state.compound_assign(fact));
|
instance.facts.str_vector.push_back(new_state.compound_assign(fact));
|
||||||
//Update ALL nodes (include ttwo_comm nodes) with new data
|
//Update ALL nodes (include ttwo_comm nodes) with new data
|
||||||
|
|
||||||
for (int w = 0; w < world.size(); w++)
|
for (int w = 0; w < world.size(); w++)
|
||||||
{
|
{
|
||||||
if(w != world.rank())
|
if(w != world.rank())
|
||||||
@ -363,6 +349,7 @@ void task_two(AGGenInstance &instance, int alloc, int two_alloc, boost::mpi::com
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
break;
|
break;
|
||||||
case DELETE_T:
|
case DELETE_T:
|
||||||
new_state.delete_quality(fact);
|
new_state.delete_quality(fact);
|
||||||
@ -390,13 +377,12 @@ void task_two(AGGenInstance &instance, int alloc, int two_alloc, boost::mpi::com
|
|||||||
auto hash_num = new_state.get_hash(instance.facts);
|
auto hash_num = new_state.get_hash(instance.facts);
|
||||||
|
|
||||||
if (hash_num == current_hash){
|
if (hash_num == current_hash){
|
||||||
//std::cout << "Same hash." << std::endl;
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
//<6 Node Edge Case Prevention: Node 0 unable to execute task 3
|
//<6 Node Edge Case Prevention: Node 0 unable to execute task 3
|
||||||
if(world.rank() != 0){
|
if(world.rank() != 0){
|
||||||
std::cout << "Node " << world.rank() << " sending new state data to Node 0" << std::endl;
|
//std::cout << "Node " << world.rank() << " sending new state data to Node 0" << std::endl;
|
||||||
mpi::request ns_req = world.isend(0, 5, new_state);
|
mpi::request ns_req = world.isend(0, 5, new_state);
|
||||||
mpi::request cs_req = world.isend(0, 6, current_state);
|
mpi::request cs_req = world.isend(0, 6, current_state);
|
||||||
mpi::request ex_req = world.isend(0, 10, exploit);
|
mpi::request ex_req = world.isend(0, 10, exploit);
|
||||||
@ -414,14 +400,11 @@ void task_two(AGGenInstance &instance, int alloc, int two_alloc, boost::mpi::com
|
|||||||
else last_known_id = instance.factbases.size()-1;
|
else last_known_id = instance.factbases.size()-1;
|
||||||
if(get_num_states() > 1)
|
if(get_num_states() > 1)
|
||||||
last_known_id += get_num_states()-1;
|
last_known_id += get_num_states()-1;
|
||||||
//int last_known_id = instance.factbases.size()-1
|
|
||||||
task_three(instance, new_state, localFrontier, mem_threshold, world,\
|
task_three(instance, new_state, localFrontier, mem_threshold, world,\
|
||||||
alloc, two_alloc, current_state, exploit, assetGroup, hash_map, last_known_id);
|
alloc, two_alloc, current_state, exploit, assetGroup, hash_map, last_known_id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
//std::cout << "Breaking." << std::endl;
|
|
||||||
//break;
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -431,7 +414,6 @@ void task_three(AGGenInstance &instance, NetworkState &new_state, std::deque<Net
|
|||||||
double mem_threshold, boost::mpi::communicator &world, int alloc, int two_alloc, NetworkState ¤t_state,\
|
double mem_threshold, boost::mpi::communicator &world, int alloc, int two_alloc, NetworkState ¤t_state,\
|
||||||
Exploit &exploit, AssetGroup &assetGroup, std::unordered_map<size_t, int> &hash_map, int last_known_id){
|
Exploit &exploit, AssetGroup &assetGroup, std::unordered_map<size_t, int> &hash_map, int last_known_id){
|
||||||
|
|
||||||
//std::cout << "Started Task 3." << std::endl;
|
|
||||||
auto hash_num = new_state.get_hash(instance.facts);
|
auto hash_num = new_state.get_hash(instance.facts);
|
||||||
|
|
||||||
//although local frontier is updated, the global hash is also updated to avoid testing on explored states.
|
//although local frontier is updated, the global hash is also updated to avoid testing on explored states.
|
||||||
@ -461,7 +443,6 @@ void task_three(AGGenInstance &instance, NetworkState &new_state, std::deque<Net
|
|||||||
f_alpha = 0.0;
|
f_alpha = 0.0;
|
||||||
|
|
||||||
if (f_alpha >= (mem_threshold/2)) {
|
if (f_alpha >= (mem_threshold/2)) {
|
||||||
//std::cout << "Frontier Alpha prior to database storing: " << f_alpha << std::endl;
|
|
||||||
mpi::request ns_req = world.isend(send_check(world, alloc+two_alloc+1), 50, new_state);
|
mpi::request ns_req = world.isend(send_check(world, alloc+two_alloc+1), 50, new_state);
|
||||||
ns_req.wait();
|
ns_req.wait();
|
||||||
//save_unexplored_to_db(new_state);
|
//save_unexplored_to_db(new_state);
|
||||||
@ -469,7 +450,6 @@ void task_three(AGGenInstance &instance, NetworkState &new_state, std::deque<Net
|
|||||||
f_alpha = (static_cast<double>(localFrontier.size()) * (localFrontier.back().get_size()))/tot_sys_mem;
|
f_alpha = (static_cast<double>(localFrontier.size()) * (localFrontier.back().get_size()))/tot_sys_mem;
|
||||||
else
|
else
|
||||||
f_alpha = 0;
|
f_alpha = 0;
|
||||||
//std::cout << "Frontier Alpha after database storing: " << f_alpha << std::endl;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//Store new state in database to ensure proper ordering of the FIFO queue
|
//Store new state in database to ensure proper ordering of the FIFO queue
|
||||||
@ -485,7 +465,6 @@ void task_three(AGGenInstance &instance, NetworkState &new_state, std::deque<Net
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (i_alpha >= mem_threshold/2){
|
if (i_alpha >= mem_threshold/2){
|
||||||
//std::cout << "Instance Alpha prior to database storing: " << i_alpha << std::endl;
|
|
||||||
mpi::request fb_req = world.isend(send_check(world, alloc+two_alloc), 7, instance.factbases);
|
mpi::request fb_req = world.isend(send_check(world, alloc+two_alloc), 7, instance.factbases);
|
||||||
mpi::request ed_req = world.isend(send_check(world, alloc+two_alloc), 8, instance.edges);
|
mpi::request ed_req = world.isend(send_check(world, alloc+two_alloc), 8, instance.edges);
|
||||||
//save_ag_to_db(instance, true);
|
//save_ag_to_db(instance, true);
|
||||||
@ -500,8 +479,6 @@ void task_three(AGGenInstance &instance, NetworkState &new_state, std::deque<Net
|
|||||||
sizeof(instance.factbase_items) + (sizeof(instance.factbase_items[0]) * instance.factbase_items.size()) +\
|
sizeof(instance.factbase_items) + (sizeof(instance.factbase_items[0]) * instance.factbase_items.size()) +\
|
||||||
sizeof(instance.edges) + (sizeof(instance.edges[0]) * instance.edges.size()));
|
sizeof(instance.edges) + (sizeof(instance.edges[0]) * instance.edges.size()));
|
||||||
i_alpha = i_usage/tot_sys_mem;
|
i_alpha = i_usage/tot_sys_mem;
|
||||||
//std::cout << "Instance Alpha after database storing: " << i_alpha << std::endl;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Edge ed(current_state.get_id(), new_state.get_id(), exploit, assetGroup);
|
Edge ed(current_state.get_id(), new_state.get_id(), exploit, assetGroup);
|
||||||
@ -517,7 +494,6 @@ void task_three(AGGenInstance &instance, NetworkState &new_state, std::deque<Net
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int send_check(boost::mpi::communicator &world, int curr_node){
|
int send_check(boost::mpi::communicator &world, int curr_node){
|
||||||
int send_to = curr_node + 1;
|
int send_to = curr_node + 1;
|
||||||
if (curr_node >= world.size()-1)
|
if (curr_node >= world.size()-1)
|
||||||
@ -527,33 +503,32 @@ int send_check(boost::mpi::communicator &world, int curr_node){
|
|||||||
}
|
}
|
||||||
|
|
||||||
void state_merge(std::vector<Factbase> node_factbases, std::vector<Edge> node_edges,\
|
void state_merge(std::vector<Factbase> node_factbases, std::vector<Edge> node_edges,\
|
||||||
std::unordered_map<size_t, int> &hash_map, AGGenInstance &instance, double mem_threshold,\
|
std::unordered_map<size_t, int> &hash_map, AGGenInstance &instance, double mem_threshold,\
|
||||||
mpi::communicator &world, int last_known_id){
|
mpi::communicator &world, int last_known_id){
|
||||||
|
|
||||||
auto tot_sys_mem = getTotalSystemMemory();
|
auto tot_sys_mem = getTotalSystemMemory();
|
||||||
|
|
||||||
for(auto fb : node_factbases){
|
for(auto fb : node_factbases){
|
||||||
|
|
||||||
//auto fb = ns.get_factbase();
|
|
||||||
|
|
||||||
//std::cout << "Started Task 3." << std::endl;
|
|
||||||
auto hash_num = fb.hash(instance.facts);
|
auto hash_num = fb.hash(instance.facts);
|
||||||
|
|
||||||
//although local frontier is updated, the global hash is also updated to avoid testing on explored states.
|
//although local frontier is updated, the global hash is also updated to avoid testing on explored states.
|
||||||
if (hash_map.find(hash_num) == hash_map.end()) {
|
if (hash_map.find(hash_num) == hash_map.end()) {
|
||||||
auto old_id = fb.get_id();
|
//Each MPI Node has its own copy of states and factbases: we need to correct it with the Root's IDs
|
||||||
fb.reset_curr_id(last_known_id+1);
|
auto old_id = fb.get_id();
|
||||||
fb.set_id();
|
fb.reset_curr_id(last_known_id+1);
|
||||||
auto new_id = fb.get_id();
|
fb.set_id();
|
||||||
last_known_id = new_id;
|
auto new_id = fb.get_id();
|
||||||
for(auto ed: node_edges){
|
last_known_id = new_id;
|
||||||
if (ed.get_from_id() == old_id){
|
for(auto ed: node_edges){
|
||||||
ed.force_from_id(new_id);
|
if (ed.get_from_id() == old_id){
|
||||||
}
|
ed.force_from_id(new_id);
|
||||||
if (ed.get_to_id() == old_id){
|
}
|
||||||
ed.force_to_id(new_id);
|
if (ed.get_to_id() == old_id){
|
||||||
}
|
ed.force_to_id(new_id);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
instance.factbases.push_back(fb);
|
instance.factbases.push_back(fb);
|
||||||
hash_map.insert(std::make_pair(fb.hash(instance.facts), fb.get_id()));
|
hash_map.insert(std::make_pair(fb.hash(instance.facts), fb.get_id()));
|
||||||
|
|
||||||
@ -563,7 +538,6 @@ void state_merge(std::vector<Factbase> node_factbases, std::vector<Edge> node_ed
|
|||||||
double i_usage = instance.factbases.back().get_size() * instance.factbases.size() * 2 + sizeof(instance.edges[0]) * instance.edges.size();
|
double i_usage = instance.factbases.back().get_size() * instance.factbases.size() * 2 + sizeof(instance.edges[0]) * instance.edges.size();
|
||||||
|
|
||||||
if (i_alpha >= mem_threshold/2){
|
if (i_alpha >= mem_threshold/2){
|
||||||
//std::cout << "Instance Alpha prior to database storing: " << i_alpha << std::endl;
|
|
||||||
mpi::request fb_req = world.isend(1, 7, instance.factbases);
|
mpi::request fb_req = world.isend(1, 7, instance.factbases);
|
||||||
mpi::request ed_req = world.isend(1, 8, instance.edges);
|
mpi::request ed_req = world.isend(1, 8, instance.edges);
|
||||||
//save_ag_to_db(instance, true);
|
//save_ag_to_db(instance, true);
|
||||||
@ -578,8 +552,6 @@ void state_merge(std::vector<Factbase> node_factbases, std::vector<Edge> node_ed
|
|||||||
sizeof(instance.factbase_items) + (sizeof(instance.factbase_items[0]) * instance.factbase_items.size()) +\
|
sizeof(instance.factbase_items) + (sizeof(instance.factbase_items[0]) * instance.factbase_items.size()) +\
|
||||||
sizeof(instance.edges) + (sizeof(instance.edges[0]) * instance.edges.size()));
|
sizeof(instance.edges) + (sizeof(instance.edges[0]) * instance.edges.size()));
|
||||||
i_alpha = i_usage/tot_sys_mem;
|
i_alpha = i_usage/tot_sys_mem;
|
||||||
//std::cout << "Instance Alpha after database storing: " << i_alpha << std::endl;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -587,6 +559,5 @@ void state_merge(std::vector<Factbase> node_factbases, std::vector<Edge> node_ed
|
|||||||
//This does add duplicate edges - taken care of through graphviz' "strict" graphing
|
//This does add duplicate edges - taken care of through graphviz' "strict" graphing
|
||||||
for (auto ed : node_edges){
|
for (auto ed : node_edges){
|
||||||
instance.edges.push_back(ed);
|
instance.edges.push_back(ed);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
|
||||||
Loading…
x
Reference in New Issue
Block a user