Skip to content

Commit 8ebd104

Browse files
fix some dependencies and includes; misc other stuff
1 parent 47dfc33 commit 8ebd104

7 files changed

+86
-91
lines changed

CMakeLists.txt

+13-11
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@ find_package(KokkosKernels REQUIRED)
1414
add_compile_options(-Wall -Wextra -Wshadow)
1515

1616
# libjet
17-
add_library(jet STATIC jet.cpp)
17+
add_library(jet STATIC src/jet.cpp)
1818
target_sources(jet PUBLIC
1919
FILE_SET HEADERS
20-
FILES jet.h jet_defs.h jet_config.h experiment_data.hpp
21-
)
20+
FILES header/jet.h header/jet_defs.h header/jet_config.h header/experiment_data.hpp)
21+
include_directories(header)
2222

2323
if(DEFINED METIS_DIR)
2424
# This is used by the build script
@@ -37,15 +37,17 @@ target_link_libraries(jet PRIVATE GKlib)
3737
endif()
3838

3939
# jet executables
40-
add_executable(jet_ex driver.cpp)
40+
add_executable(jet_ex app/driver.cpp)
4141
set_property(TARGET jet_ex PROPERTY OUTPUT_NAME jet)
42-
add_executable(jet4 driver.cpp)
43-
add_executable(jet2 driver.cpp)
44-
add_executable(jet_host driver.cpp)
45-
add_executable(jet_import import_coarse.cpp)
46-
add_executable(jet_export driver.cpp)
47-
add_executable(jet_serial driver.cpp)
48-
add_executable(pstat part_eval.cpp)
42+
add_executable(jet4 app/driver.cpp)
43+
add_executable(jet2 app/driver.cpp)
44+
add_executable(jet_host app/driver.cpp)
45+
add_executable(jet_import app/import_coarse.cpp)
46+
add_executable(jet_export app/driver.cpp)
47+
add_executable(jet_serial app/driver.cpp)
48+
add_executable(pstat app/part_eval.cpp)
49+
target_include_directories(jet_import PUBLIC src)
50+
target_include_directories(pstat PUBLIC src)
4951

5052
# compile definitions to set exe behavior
5153
target_compile_definitions(jet4 PUBLIC FOUR9)

app/import_coarse.cpp

+66
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,72 @@
4444

4545
using namespace jet_partitioner;
4646

47+
//loads a sequence of coarse graphs and mappings between each graph from binary file
48+
//used to control for coarsening when experimenting with refinement
49+
std::list<typename jet_partitioner::contracter<matrix_t>::coarse_level_triple> load_coarse(){
50+
using coarse_level_triple = typename jet_partitioner::contracter<matrix_t>::coarse_level_triple;
51+
std::list<coarse_level_triple> levels;
52+
std::list<coarse_level_triple> error_levels;
53+
FILE* cgfp = fopen("coarse_graphs.out", "r");
54+
int size = 0;
55+
if(fread(&size, sizeof(int), 1, cgfp) != 1) return error_levels;
56+
std::cout << "Importing " << size << " coarsened graphs" << std::endl;
57+
ordinal_t prev_n = 0;
58+
for(int i = 0; i < size; i++){
59+
coarse_level_triple level;
60+
level.level = i + 1;
61+
ordinal_t N = 0;
62+
if(fread(&N, sizeof(ordinal_t), 1, cgfp) != 1) return error_levels;
63+
edge_offset_t M = 0;
64+
if(fread(&M, sizeof(edge_offset_t), 1, cgfp) != 1) return error_levels;
65+
edge_vt rows("rows", N + 1);
66+
auto rows_m = Kokkos::create_mirror_view(rows);
67+
if(fread(rows_m.data(), sizeof(edge_offset_t), N + 1, cgfp) != static_cast<size_t>(N + 1)) return error_levels;
68+
Kokkos::deep_copy(rows, rows_m);
69+
vtx_vt entries("entries", M);
70+
auto entries_m = Kokkos::create_mirror_view(entries);
71+
if(fread(entries_m.data(), sizeof(ordinal_t), M, cgfp) != static_cast<size_t>(M)) return error_levels;
72+
Kokkos::deep_copy(entries, entries_m);
73+
wgt_vt values("values", M);
74+
auto values_m = Kokkos::create_mirror_view(values);
75+
if(fread(values_m.data(), sizeof(value_t), M, cgfp) != static_cast<size_t>(M)) return error_levels;
76+
Kokkos::deep_copy(values, values_m);
77+
graph_t graph(entries, rows);
78+
matrix_t g("g", N, values, graph);
79+
level.mtx = g;
80+
wgt_vt vtx_wgts("vtx wgts", N);
81+
auto vtx_wgts_m = Kokkos::create_mirror_view(vtx_wgts);
82+
if(fread(vtx_wgts_m.data(), sizeof(value_t), N, cgfp) != static_cast<size_t>(N)) return error_levels;
83+
Kokkos::deep_copy(vtx_wgts, vtx_wgts_m);
84+
level.vtx_w = vtx_wgts;
85+
if(level.level > 1){
86+
vtx_vt i_entries("entries", prev_n);
87+
auto i_entries_m = Kokkos::create_mirror_view(i_entries);
88+
if(fread(i_entries_m.data(), sizeof(ordinal_t), prev_n, cgfp) != static_cast<size_t>(prev_n)) return error_levels;
89+
Kokkos::deep_copy(i_entries, i_entries_m);
90+
typename jet_partitioner::contracter<matrix_t>::coarse_map i_g;
91+
i_g.coarse_vtx = N;
92+
i_g.map = i_entries;
93+
level.interp_mtx = i_g;
94+
}
95+
prev_n = N;
96+
levels.push_back(level);
97+
}
98+
fclose(cgfp);
99+
return levels;
100+
}
101+
102+
//reads part from binary file
103+
part_vt load_coarse_part(ordinal_t n){
104+
FILE* cgfp = fopen("coarse_part.out", "r");
105+
part_vt part("part", n);
106+
auto part_m = Kokkos::create_mirror_view(part);
107+
if(fread(part_m.data(), sizeof(part_t), n, cgfp) != static_cast<size_t>(n)) return part;
108+
Kokkos::deep_copy(part, part_m);
109+
fclose(cgfp);
110+
return part;
111+
}
112+
47113
part_vt partition(value_t& edge_cut,
48114
const config_t& config,
49115
experiment_data<value_t>& experiment) {

app/io.hpp

+6-70
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,11 @@
3939
#pragma once
4040
#include "jet_defs.h"
4141
#include "jet_config.h"
42-
#include "contract.hpp"
4342
#include <sstream>
4443
#include <string>
4544
#include <iostream>
45+
#include <fstream>
46+
#include <iomanip>
4647

4748
namespace jet_partitioner {
4849

@@ -53,7 +54,7 @@ bool load_config(jet_partitioner::config_t& c, const char* config_f) {
5354
std::cerr << "FATAL ERROR: Could not open config file " << config_f << std::endl;
5455
return false;
5556
}
56-
std::string lines[4];
57+
std::string lines[5];
5758
int reads = 0;
5859
// you might think that reading in four lines from a simple config file could be done like:
5960
// f >> c.coarsening_alg;
@@ -63,18 +64,19 @@ bool load_config(jet_partitioner::config_t& c, const char* config_f) {
6364
// but that doesn't work if there are exactly 3 lines instead of 4 in the config file
6465
// because if the last line is a float like 3.14, then c.num_iter will contain the 3
6566
// and the c.max_imb_ratio will contain the .14
66-
for(int i = 0; i < 4; i++){
67+
for(int i = 0; i < 5; i++){
6768
if(f >> lines[i]) reads++;
6869
}
6970
f.close();
70-
if(reads != 4){
71+
if(reads < 4){
7172
std::cerr << "FATAL ERROR: Config file has less than 4 lines" << std::endl;
7273
return false;
7374
}
7475
c.coarsening_alg = std::stoi(lines[0]);
7576
c.num_parts = std::stoi(lines[1]);
7677
c.num_iter = std::stoi(lines[2]);
7778
c.max_imb_ratio = std::stod(lines[3]);
79+
if(reads == 5) c.ultra_settings = std::stoi(lines[4]);
7880
return true;
7981
}
8082

@@ -241,70 +243,4 @@ part_vt load_part(ordinal_t n, const char *fname){
241243
return part_d;
242244
}
243245

244-
//loads a sequence of coarse graphs and mappings between each graph from binary file
245-
//used to control for coarsening when experimenting with refinement
246-
std::list<typename jet_partitioner::contracter<matrix_t>::coarse_level_triple> load_coarse(){
247-
using coarse_level_triple = typename jet_partitioner::contracter<matrix_t>::coarse_level_triple;
248-
std::list<coarse_level_triple> levels;
249-
std::list<coarse_level_triple> error_levels;
250-
FILE* cgfp = fopen("coarse_graphs.out", "r");
251-
int size = 0;
252-
if(fread(&size, sizeof(int), 1, cgfp) != 1) return error_levels;
253-
std::cout << "Importing " << size << " coarsened graphs" << std::endl;
254-
ordinal_t prev_n = 0;
255-
for(int i = 0; i < size; i++){
256-
coarse_level_triple level;
257-
level.level = i + 1;
258-
ordinal_t N = 0;
259-
if(fread(&N, sizeof(ordinal_t), 1, cgfp) != 1) return error_levels;
260-
edge_offset_t M = 0;
261-
if(fread(&M, sizeof(edge_offset_t), 1, cgfp) != 1) return error_levels;
262-
edge_vt rows("rows", N + 1);
263-
auto rows_m = Kokkos::create_mirror_view(rows);
264-
if(fread(rows_m.data(), sizeof(edge_offset_t), N + 1, cgfp) != static_cast<size_t>(N + 1)) return error_levels;
265-
Kokkos::deep_copy(rows, rows_m);
266-
vtx_vt entries("entries", M);
267-
auto entries_m = Kokkos::create_mirror_view(entries);
268-
if(fread(entries_m.data(), sizeof(ordinal_t), M, cgfp) != static_cast<size_t>(M)) return error_levels;
269-
Kokkos::deep_copy(entries, entries_m);
270-
wgt_vt values("values", M);
271-
auto values_m = Kokkos::create_mirror_view(values);
272-
if(fread(values_m.data(), sizeof(value_t), M, cgfp) != static_cast<size_t>(M)) return error_levels;
273-
Kokkos::deep_copy(values, values_m);
274-
graph_t graph(entries, rows);
275-
matrix_t g("g", N, values, graph);
276-
level.mtx = g;
277-
wgt_vt vtx_wgts("vtx wgts", N);
278-
auto vtx_wgts_m = Kokkos::create_mirror_view(vtx_wgts);
279-
if(fread(vtx_wgts_m.data(), sizeof(value_t), N, cgfp) != static_cast<size_t>(N)) return error_levels;
280-
Kokkos::deep_copy(vtx_wgts, vtx_wgts_m);
281-
level.vtx_w = vtx_wgts;
282-
if(level.level > 1){
283-
vtx_vt i_entries("entries", prev_n);
284-
auto i_entries_m = Kokkos::create_mirror_view(i_entries);
285-
if(fread(i_entries_m.data(), sizeof(ordinal_t), prev_n, cgfp) != static_cast<size_t>(prev_n)) return error_levels;
286-
Kokkos::deep_copy(i_entries, i_entries_m);
287-
typename jet_partitioner::contracter<matrix_t>::coarse_map i_g;
288-
i_g.coarse_vtx = N;
289-
i_g.map = i_entries;
290-
level.interp_mtx = i_g;
291-
}
292-
prev_n = N;
293-
levels.push_back(level);
294-
}
295-
fclose(cgfp);
296-
return levels;
297-
}
298-
299-
//reads part from binary file
300-
part_vt load_coarse_part(ordinal_t n){
301-
FILE* cgfp = fopen("coarse_part.out", "r");
302-
part_vt part("part", n);
303-
auto part_m = Kokkos::create_mirror_view(part);
304-
if(fread(part_m.data(), sizeof(part_t), n, cgfp) != static_cast<size_t>(n)) return part;
305-
Kokkos::deep_copy(part, part_m);
306-
fclose(cgfp);
307-
return part;
308-
}
309-
310246
};
File renamed without changes.

header/experiment_data.hpp

+1
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
#include <vector>
4141
#include <stdlib.h>
4242
#include <iostream>
43+
#include <iomanip>
4344
#include <fstream>
4445
#include <string>
4546
#include <map>

src/part_stat.hpp

-3
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,6 @@
3838
// ************************************************************************
3939
#pragma once
4040
#include <type_traits>
41-
#include <limits>
42-
#include <iostream>
43-
#include <iomanip>
4441
#include <Kokkos_Core.hpp>
4542
#include "KokkosSparse_CrsMatrix.hpp"
4643
#include "experiment_data.hpp"

src/uncoarsen.hpp

-7
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,6 @@
3939
#include "jet_refiner.hpp"
4040
#include "contract.hpp"
4141
#include "jet_config.h"
42-
#include <limits>
43-
#include <cstdlib>
44-
#include <cmath>
45-
#include <utility>
46-
#include <numeric>
47-
#include <iostream>
48-
#include <iomanip>
4942
#include <Kokkos_Core.hpp>
5043
#include "KokkosSparse_CrsMatrix.hpp"
5144
#include "part_stat.hpp"

0 commit comments

Comments
 (0)