Edge Duplication Changes

This commit is contained in:
Noah L. Schrick 2022-02-20 22:02:02 -06:00
parent 83687f097c
commit 1b37359beb
12 changed files with 5478 additions and 5385 deletions

View File

@ -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"

Binary file not shown.

View File

@ -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"
} }
] ]

View File

@ -8,6 +8,7 @@ DBNAME=${4:-tmp}
NUM_THREADS=${5:-1} NUM_THREADS=${5:-1}
NODES=${6:-2} NODES=${6:-2}
MPI_TYPE=${7-subgraphing} MPI_TYPE=${7-subgraphing}
#MPI_TYPE=${7:-serial}
ITFC="eth0" ITFC="eth0"

File diff suppressed because it is too large Load Diff

View File

@ -335,7 +335,7 @@ double mem_threshold, mpi::communicator &world)
struct timeval t21,t22; struct timeval t21,t22;
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, edge_map);
//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)){
@ -426,7 +426,7 @@ double mem_threshold, mpi::communicator &world)
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, edge_map);
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;
} }
@ -568,7 +568,7 @@ double mem_threshold, mpi::communicator &world)
std::cout << "Average Task 4 time: " << total_task4/task4_count << "ms" << std::endl; std::cout << "Average Task 4 time: " << total_task4/task4_count << "ms" << std::endl;
std::cout << "Average Task 5 time: " << total_task5/task5_count << "ms" << std::endl; std::cout << "Average Task 5 time: " << total_task5/task5_count << "ms" << std::endl;
edge_adjustment(instance, hash_map); //edge_adjustment(instance, hash_map);
} }
std::chrono::duration<double> elapsed_seconds = end - start; std::chrono::duration<double> elapsed_seconds = end - start;
@ -607,7 +607,7 @@ int initQSize, double mem_threshold, mpi::communicator &world)
bool save_queued = false; bool save_queued = false;
if(world.rank() == 0) if(world.rank() == 0)
std::cout << "Generating Attack Graph" << std::endl; std::cout << "Generating Attack Graph through the OMP/Serial Approach" << 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();
@ -730,13 +730,13 @@ int initQSize, double mem_threshold, mpi::communicator &world)
frontier.emplace_front(new_state); frontier.emplace_front(new_state);
Edge ed(current_state.get_id(), new_state.get_id(), exploit, assetGroup); Edge ed(current_state.get_id(), new_state.get_id(), exploit, assetGroup);
ed.set_id(); ed.set_id();
instance.edges.push_back(ed); edge_adjustment(instance, hash_map, edge_map, ed);
} }
else { else {
int id = hash_map[hash_num]; int id = hash_map[hash_num];
Edge ed(current_state.get_id(), id, exploit, assetGroup); Edge ed(current_state.get_id(), id, exploit, assetGroup);
ed.set_id(); ed.set_id();
instance.edges.push_back(ed); edge_adjustment(instance, hash_map, edge_map, ed);
} }
} //for loop for new states ends } //for loop for new states ends
} //while ends } //while ends
@ -993,7 +993,7 @@ int initQSize, double mem_threshold, mpi::communicator &world)
} }
if (i_alpha >= mem_threshold/2){ if (i_alpha >= mem_threshold/2){
edge_adjustment(instance, hash_map); //edge_adjustment(instance, hash_map);
save_ag_to_db(instance, true); save_ag_to_db(instance, true);
//Clear vectors and free memory //Clear vectors and free memory
@ -1125,7 +1125,6 @@ int initQSize, double mem_threshold, mpi::communicator &world, int state_limit)
int last_known_id = 0; int last_known_id = 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
if(world.rank() == 0){ if(world.rank() == 0){
//2 offset for root node and db node
for (int w = 0; w < std::min((int)world.size(), (int)localFrontier.size()); w++){ for (int w = 0; w < std::min((int)world.size(), (int)localFrontier.size()); w++){
//last_known_id = localFrontier.front().get_id(); //last_known_id = localFrontier.front().get_id();
if(world.size() > 1 && w == 0){ if(world.size() > 1 && w == 0){
@ -1157,6 +1156,8 @@ int initQSize, double mem_threshold, mpi::communicator &world, int state_limit)
//Worker Nodes //Worker Nodes
if (world.rank() > 1 || world.size() == 1 || (world.size() == 2 && world.rank() == 1)){ if (world.rank() > 1 || world.size() == 1 || (world.size() == 2 && world.rank() == 1)){
world.probe(0, mpi::any_tag);
//Check for finished signal //Check for finished signal
if(world.iprobe(0, 99)){ if(world.iprobe(0, 99)){
break; break;
@ -1171,7 +1172,7 @@ int initQSize, double mem_threshold, mpi::communicator &world, int state_limit)
std::vector<FactbaseItems>().swap(instance.factbase_items); std::vector<FactbaseItems>().swap(instance.factbase_items);
NetworkState current_state; NetworkState current_state;
current_state.reset_curr_id(); //current_state.reset_curr_id();
world.recv(0, 1, current_state); world.recv(0, 1, current_state);
state_count = 0; state_count = 0;
send_msg = 1; send_msg = 1;
@ -1276,6 +1277,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()){
state_count++;
continue; continue;
} }
} }
@ -1326,8 +1328,10 @@ int initQSize, double mem_threshold, mpi::communicator &world, int state_limit)
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){
state_count++;
continue; continue;
}
#pragma omp critical #pragma omp critical
//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.
@ -1386,6 +1390,8 @@ int initQSize, double mem_threshold, mpi::communicator &world, int state_limit)
//Database Node //Database Node
if (world.rank() == 1 || world.size() == 1){ if (world.rank() == 1 || world.size() == 1){
world.probe(0, mpi::any_tag);
//Check for finished signal, assuming we have no more storage requests //Check for finished signal, assuming we have no more storage requests
if(world.iprobe(0, 99) && !world.iprobe(0,7) && !world.iprobe(0,8)){ if(world.iprobe(0, 99) && !world.iprobe(0,7) && !world.iprobe(0,8)){
break; break;
@ -1434,7 +1440,8 @@ int initQSize, double mem_threshold, mpi::communicator &world, int state_limit)
world.recv(w, 11, node_edges[w]); world.recv(w, 11, node_edges[w]);
} }
if(!node_factbases[w].empty() || !node_edges[w].empty()){ if(!node_factbases[w].empty() || !node_edges[w].empty()){
state_merge(node_factbases[w], node_edges[w], hash_map, instance, mem_threshold, world); state_merge(node_factbases[w], node_edges[w], hash_map, instance, mem_threshold,\
world, edge_map);
} }
} }
} }
@ -1448,19 +1455,6 @@ int initQSize, double mem_threshold, mpi::communicator &world, int state_limit)
} }
} }
} }
//Check for Hash Table updates
while(world.iprobe(mpi::any_source, 5) || world.iprobe(mpi::any_source, 6)){
NetworkState update_state;
Quality update_fact;
world.recv(mpi::any_source, 5, update_state);
world.recv(mpi::any_source, 6, update_fact);
//Update
instance.facts.hash_table[update_state.compound_assign(update_fact)]=instance.facts.size();
instance.facts.length++;
instance.facts.str_vector.push_back(update_state.compound_assign(update_fact));
}
//Check for factbases or nodes, and add them to our network //Check for factbases or nodes, and add them to our network
while(world.iprobe(mpi::any_source, 10) || world.iprobe(mpi::any_source, 11)){ while(world.iprobe(mpi::any_source, 10) || world.iprobe(mpi::any_source, 11)){
@ -1472,7 +1466,8 @@ int initQSize, double mem_threshold, mpi::communicator &world, int state_limit)
world.recv(w, 11, node_edges[w]); world.recv(w, 11, node_edges[w]);
} }
if(!node_factbases[w].empty() || !node_edges[w].empty()){ if(!node_factbases[w].empty() || !node_edges[w].empty()){
state_merge(node_factbases[w], node_edges[w], hash_map, instance, mem_threshold, world); state_merge(node_factbases[w], node_edges[w], hash_map, instance, mem_threshold,\
world, edge_map);
} }
} }
} }
@ -1546,7 +1541,7 @@ int initQSize, double mem_threshold, mpi::communicator &world, int state_limit)
while(proceed == 0 && !localFrontier.empty()){ while(proceed == 0 && !localFrontier.empty()){
if(deque_marker[w] >= localFrontier.size()){ if(deque_marker[w] >= localFrontier.size()){
if(localFrontier.empty()){ if(localFrontier.empty()){
deque_marker[w] = 0; //deque_marker[w] = 0;
break; break;
} }
deque_marker[w] = localFrontier.size()-1; deque_marker[w] = localFrontier.size()-1;
@ -1597,6 +1592,8 @@ int initQSize, double mem_threshold, mpi::communicator &world, int state_limit)
finished_signal = 1; finished_signal = 1;
} }
} //end world rank 0 } //end world rank 0
} // end main work loop } // end main work loop
//Tell all nodes to finish //Tell all nodes to finish
@ -1611,7 +1608,6 @@ int initQSize, double mem_threshold, mpi::communicator &world, int state_limit)
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); printf("AG TOOK %lf ms.\n", total_t);
edge_adjustment(instance, hash_map);
auto end = std::chrono::system_clock::now(); auto end = std::chrono::system_clock::now();
std::chrono::duration<double> elapsed_seconds = end - start; std::chrono::duration<double> elapsed_seconds = end - start;

View File

@ -76,6 +76,7 @@ class AGGen {
AGGenInstance instance; AGGenInstance instance;
std::deque<NetworkState> frontier; //!< Unexplored states std::deque<NetworkState> frontier; //!< Unexplored states
std::unordered_map<size_t, int> hash_map{}; //!< Map of hashes to Factbase ID std::unordered_map<size_t, int> hash_map{}; //!< Map of hashes to Factbase ID
std::unordered_map<size_t, int> edge_map{}; //!< Map of hashes to Edge ID
bool use_redis; bool use_redis;
#ifdef REDIS #ifdef REDIS

View File

@ -6,6 +6,7 @@
#include "edge.h" #include "edge.h"
#include "../util/db.h" #include "../util/db.h"
#include <boost/functional/hash.hpp>
/** /**
* @brief Constructor for Edge * @brief Constructor for Edge
@ -131,3 +132,15 @@ void Edge::force_set_id(int i)
{ {
id = i; id = i;
} }
size_t Edge::hash(){
// size_t hash = 0xf848b64e; // Random seed value
// size_t seed = 0x0c32a12fe19d2119;
size_t seed = 0;
boost::hash_combine(seed, get_exploit_id());
boost::hash_combine(seed, get_from_id());
boost::hash_combine(seed, get_to_id());
return seed;
}

View File

@ -64,6 +64,7 @@ class Edge {
bool comparator(Edge& ed2); bool comparator(Edge& ed2);
bool operator==(const Edge& ed2); bool operator==(const Edge& ed2);
void force_set_id(int i); void force_set_id(int i);
size_t hash();
}; };
#endif // AG_GEN_EDGE_H #endif // AG_GEN_EDGE_H

View File

@ -716,9 +716,8 @@ int main(int argc, char *argv[]) {
std::cout << "Total Edges: " << get_num_edges() << std::endl; std::cout << "Total Edges: " << get_num_edges() << std::endl;
std::cout << "Total Time: " << postinstance.elapsed_seconds.count() << " seconds\n"; std::cout << "Total Time: " << postinstance.elapsed_seconds.count() << " seconds\n";
//std::cout << "Total States: " << postinstance.factbases.size() << "\n";
std::cout << "Total States: " << get_num_states() << std::endl; std::cout << "Total States: " << get_num_states() << std::endl;
std::cout << "Duplicated States that had to be removed: " << postinstance.duplicates << std::endl; std::cout << "Duplicated States that had to be removed: " << postinstance.duplicates << std::endl;
std::cout << "Saving Attack Graph to Database: " << std::flush; std::cout << "Saving Attack Graph to Database: " << std::flush;
std::cout << "Done\n"; std::cout << "Done\n";

View File

@ -191,7 +191,7 @@ void task_one(AGGenInstance &instance, NetworkState &current_state,\
void task_two(AGGenInstance &instance, int alloc, int two_alloc, boost::mpi::communicator &world,\ void task_two(AGGenInstance &instance, int alloc, int two_alloc, boost::mpi::communicator &world,\
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::unordered_map<size_t, int> &edge_map){
NetworkState current_state; NetworkState current_state;
std::vector<std::tuple<Exploit, AssetGroup>> appl_exploits; std::vector<std::tuple<Exploit, AssetGroup>> appl_exploits;
@ -321,35 +321,6 @@ void task_two(AGGenInstance &instance, int alloc, int two_alloc, boost::mpi::com
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
if(fact.get_op()=="+="){
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.
//Since the compound operators include a value that is not in the original Keyvalue object, the unordered map does not include it
//As a result, you have to manually add it.
if(got==instance.facts.hash_table.end()){
instance.facts.hash_table[new_state.compound_assign(fact)]=instance.facts.size();
instance.facts.length++;
instance.facts.str_vector.push_back(new_state.compound_assign(fact));
//Update ALL nodes (include ttwo_comm nodes) with new data
for (int w = 0; w < world.size(); w++)
{
if(w != world.rank())
{
mpi::request ns_req = world.isend(w, 3, new_state);
mpi::request fact_req = world.isend(w, 4, fact);
ns_req.wait();
fact_req.wait();
}
}
}
}
*/
break; break;
case DELETE_T: case DELETE_T:
new_state.delete_quality(fact); new_state.delete_quality(fact);
@ -401,7 +372,7 @@ void task_two(AGGenInstance &instance, int alloc, int two_alloc, boost::mpi::com
if(get_num_states() > 1) if(get_num_states() > 1)
last_known_id += get_num_states()-1; last_known_id += get_num_states()-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, edge_map);
} }
} }
else{ else{
@ -412,7 +383,8 @@ void task_two(AGGenInstance &instance, int alloc, int two_alloc, boost::mpi::com
void task_three(AGGenInstance &instance, NetworkState &new_state, std::deque<NetworkState> &localFrontier,\ void task_three(AGGenInstance &instance, NetworkState &new_state, std::deque<NetworkState> &localFrontier,\
double mem_threshold, boost::mpi::communicator &world, int alloc, int two_alloc, NetworkState &current_state,\ double mem_threshold, boost::mpi::communicator &world, int alloc, int two_alloc, NetworkState &current_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::unordered_map<size_t, int> &edge_map){
auto hash_num = new_state.get_hash(instance.facts); auto hash_num = new_state.get_hash(instance.facts);
@ -466,7 +438,6 @@ void task_three(AGGenInstance &instance, NetworkState &new_state, std::deque<Net
if (i_alpha >= mem_threshold/2){ if (i_alpha >= mem_threshold/2){
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);
edge_adjustment(instance, hash_map);
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);
fb_req.wait(); fb_req.wait();
@ -485,7 +456,7 @@ void task_three(AGGenInstance &instance, NetworkState &new_state, std::deque<Net
//Edge ed(current_state.get_id(), new_state.get_id(), exploit, assetGroup); //Edge ed(current_state.get_id(), new_state.get_id(), exploit, assetGroup);
Edge ed(current_state.get_hash(instance.facts), new_state.get_hash(instance.facts), exploit, assetGroup); Edge ed(current_state.get_hash(instance.facts), new_state.get_hash(instance.facts), exploit, assetGroup);
ed.set_id(); ed.set_id();
instance.edges.push_back(ed); edge_adjustment(instance, hash_map, edge_map, ed);
} //END if (hash_map.find(hash_num) == hash_map.end()) } //END if (hash_map.find(hash_num) == hash_map.end())
else{ else{
@ -493,7 +464,7 @@ void task_three(AGGenInstance &instance, NetworkState &new_state, std::deque<Net
//Edge ed(current_state.get_id(), id, exploit, assetGroup); //Edge ed(current_state.get_id(), id, exploit, assetGroup);
Edge ed(current_state.get_hash(instance.facts), hash_num, exploit, assetGroup); Edge ed(current_state.get_hash(instance.facts), hash_num, exploit, assetGroup);
ed.set_id(); ed.set_id();
instance.edges.push_back(ed); edge_adjustment(instance, hash_map, edge_map, ed);
} }
} }
@ -507,10 +478,11 @@ 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){ mpi::communicator &world, std::unordered_map<size_t, int> &edge_hash){
auto tot_sys_mem = getTotalSystemMemory(); auto tot_sys_mem = getTotalSystemMemory();
//Factbase Merging
for(auto &fb : node_factbases){ for(auto &fb : node_factbases){
auto hash_num = fb.hash(instance.facts); auto hash_num = fb.hash(instance.facts);
@ -533,7 +505,7 @@ void state_merge(std::vector<Factbase> &node_factbases, std::vector<Edge> &node_
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){
edge_adjustment(instance, hash_map); //edge_adjustment(instance, hash_map);
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);
@ -550,22 +522,48 @@ void state_merge(std::vector<Factbase> &node_factbases, std::vector<Edge> &node_
i_alpha = i_usage/tot_sys_mem; i_alpha = i_usage/tot_sys_mem;
} }
} }
else{ else{
instance.duplicates++; instance.duplicates++;
} }
} }
//Note: This does add duplicates. Having one duplicate removal sweep at the end is preferable to duplicate checking //Edge Merging
//every time we want to push new edges back on the frontier - verified through timing for both small and large networks. int i = instance.edges.size() + get_num_edges();
instance.edges.insert(std::end(instance.edges), std::begin(node_edges), std::end(node_edges));
// Convert to and from node hashes to Factbase IDs
for (auto &ed : node_edges){
auto itr = hash_map.find(ed.get_to_id());
if(itr != hash_map.end()){
auto to_id = std::get<1>(*itr);
ed.force_to_id(to_id);
}
auto itr2 = hash_map.find(ed.get_from_id());
if(itr2 != hash_map.end()){
auto from_id = std::get<1>(*itr2);
ed.force_from_id(from_id);
}
auto ed_hash = ed.hash();
auto [eitr, inserted] = edge_hash.insert(std::make_pair(ed_hash, ed.get_id()));
if (inserted){
ed.force_set_id(i);
i++;
instance.edges.push_back(ed);
}
}
std::vector<Edge>().swap(node_edges);
} }
//Convert Edge to_hash and from_hash to to_id and from_id //Convert Edge to_hash and from_hash to to_id and from_id
void edge_adjustment(AGGenInstance &instance, std::unordered_map<size_t, int> &hash_map) void edge_adjustment(AGGenInstance &instance, std::unordered_map<size_t, int> &hash_map,\
std::unordered_map<size_t, int> &edge_hash)
{ {
// 2 Loops: Can't convert hash->ID while simultaneously checking for duplicates int i = instance.edges.size() + get_num_edges();
// Convert to and from node hashes to Factbase IDs
for (auto &ed : instance.edges){ for (auto &ed : instance.edges){
auto itr = hash_map.find(ed.get_to_id()); auto itr = hash_map.find(ed.get_to_id());
if(itr != hash_map.end()){ if(itr != hash_map.end()){
@ -578,31 +576,44 @@ void edge_adjustment(AGGenInstance &instance, std::unordered_map<size_t, int> &h
auto from_id = std::get<1>(*itr2); auto from_id = std::get<1>(*itr2);
ed.force_from_id(from_id); ed.force_from_id(from_id);
} }
}
auto ed_hash = ed.hash();
auto [eitr, inserted] = edge_hash.insert(std::make_pair(ed_hash, ed.get_id()));
if (inserted){
ed.force_set_id(i);
i++;
instance.edges.push_back(ed);
}
}
//Remove duplicates //Remove duplicates
//Poor Approach, but functional. Examine replacing instance.edges with a set instead of a vector //Poor Approach, but functional. Examine replacing instance.edges with a set instead of a vector
}
//Tmp Vector
std::vector<Edge> clean; //Convert Edge to_hash and from_hash to to_id and from_id
int i = instance.edges.size() + get_num_edges(); void edge_adjustment(AGGenInstance &instance, std::unordered_map<size_t, int> &hash_map,\
for(auto itr = instance.edges.begin(); itr != instance.edges.end();){ std::unordered_map<size_t, int> &edge_hash, Edge ed)
int seen = 0; {
for(auto eitr = clean.begin(); eitr != clean.end(); eitr++){
if((*eitr).operator==(*itr)){ int i = instance.edges.size() + get_num_edges();
seen = 1;
break; // Convert to and from node hashes to Factbase IDs
} auto itr = hash_map.find(ed.get_to_id());
} if(itr != hash_map.end()){
if(seen == 1){ auto to_id = std::get<1>(*itr);
//Remove duplicate ed.force_to_id(to_id);
itr = instance.edges.erase(itr); }
}
else{ auto itr2 = hash_map.find(ed.get_from_id());
clean.push_back(*itr); if(itr2 != hash_map.end()){
(*itr).force_set_id(i); auto from_id = std::get<1>(*itr2);
i++; ed.force_from_id(from_id);
itr++; }
}
} auto ed_hash = ed.hash();
auto [eitr, inserted] = edge_hash.insert(std::make_pair(ed_hash, ed.get_id()));
if (inserted){
ed.force_set_id(i);
i++;
instance.edges.push_back(ed);
}
} }

View File

@ -13,11 +13,13 @@ void task_one(AGGenInstance &instance, NetworkState &current_state,\
void task_two(AGGenInstance &instance, int alloc, int two_alloc, boost::mpi::communicator &world,\ void task_two(AGGenInstance &instance, int alloc, int two_alloc, boost::mpi::communicator &world,\
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::unordered_map<size_t, int> &edge_map);
void task_three(AGGenInstance &instance, NetworkState &new_state, std::deque<NetworkState> &localFrontier,\ void task_three(AGGenInstance &instance, NetworkState &new_state, std::deque<NetworkState> &localFrontier,\
double mem_threshold, boost::mpi::communicator &world, int alloc, int two_alloc, NetworkState &current_state,\ double mem_threshold, boost::mpi::communicator &world, int alloc, int two_alloc, NetworkState &current_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::unordered_map<size_t, int> &edge_map);
void task_four(NetworkState &new_state); void task_four(NetworkState &new_state);
@ -25,8 +27,9 @@ 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); mpi::communicator &world, std::unordered_map<size_t, int> &edge_hash);
void edge_adjustment(AGGenInstance &instance, std::unordered_map<size_t, int> &hash_map); void edge_adjustment(AGGenInstance &instance, std::unordered_map<size_t, int> &hash_map,\
std::unordered_map<size_t, int> &edge_hash, Edge ed);
#endif //TASKS_H #endif //TASKS_H