1717#include < exception>
1818#include < iostream>
1919#include < vector>
20+ #include < cinttypes>
2021
21- #include < inttypes.h>
22-
22+ #include < graphblas.hpp>
2323#include < graphblas/algorithms/sssp.hpp>
2424#include < graphblas/utils/Timer.hpp>
2525#include < graphblas/utils/parser.hpp>
26-
27- #include < graphblas.hpp>
2826#include < utils/output_verification.hpp>
2927
3028using namespace grb ;
@@ -43,12 +41,18 @@ struct input_t {
4341 Matrix< T > A;
4442 size_t root;
4543 const Vector< T > & expected_distances;
44+
45+ // Empty constructor necessary for distributed backends
46+ input_t (
47+ const Matrix<T>& A = {0 ,0 },
48+ size_t root = 0 ,
49+ const Vector< T > & expected_distances = {0 }
50+ ) : A( A ), root( root ), expected_distances( expected_distances ) {}
4651};
4752
4853struct output_t {
4954 RC rc = SUCCESS;
5055 utils::TimerResults times;
51- size_t data_in_local;
5256};
5357
5458template < typename T >
@@ -83,17 +87,14 @@ void grbProgram( const struct input_t< T > & input, struct output_t & output ) {
8387int main ( int argc, char ** argv ) {
8488 (void )argc;
8589 (void )argv;
86- constexpr size_t niterations = 1 ;
8790
88- grb::Benchmarker< grb::EXEC_MODE:: AUTOMATIC > benchmarker ;
91+ Launcher< AUTOMATIC > launcher ;
8992 std::cout << " Test executable: " << argv[ 0 ] << std::endl;
9093
91- // Check if we are testing on a file
92- if ( argc != 1 && argc != 4 ) {
93- std::cerr << " Usage: \n\t " << argv[ 0 ] << " [ <graph_filepath> <root> <expected_distances_filepath> ]" << std::endl;
94+ if ( argc != 1 ) {
95+ std::cerr << " Usage: \n\t " << argv[ 0 ] << std::endl;
9496 return 1 ;
9597 }
96- bool test_on_file = ( argc == 4 );
9798
9899 /* * Matrix A0: Fully connected acyclic graph
99100 *
@@ -116,10 +117,10 @@ int main( int argc, char ** argv ) {
116117 grb::buildMatrixUnique ( A, A_rows.data (), A_cols.data (), A_values.data (), A_rows.size (), PARALLEL );
117118 input_t < weight_t > input { A, root, stdToGrbVector ( expected_distances ) };
118119 output_t output;
119- RC bench_rc = benchmarker .exec ( &grbProgram, input, output, niterations, 1 , true );
120- if ( bench_rc != SUCCESS ) {
121- std::cerr << " ERROR during execution: rc = " << bench_rc << std::endl;
122- return bench_rc ;
120+ RC rc = launcher .exec ( &grbProgram, input, output, true );
121+ if ( rc != SUCCESS ) {
122+ std::cerr << " ERROR during execution: rc = " << rc << std::endl;
123+ return rc ;
123124 } else if ( output.rc ) {
124125 std::cerr << " Test failed: rc = " << output.rc << std::endl;
125126 return output.rc ;
@@ -148,10 +149,10 @@ int main( int argc, char ** argv ) {
148149 grb::buildMatrixUnique ( A, A_rows.data (), A_cols.data (), A_values.data (), A_rows.size (), PARALLEL );
149150 input_t < weight_t > input { A, root, stdToGrbVector ( expected_distances ) };
150151 output_t output;
151- RC bench_rc = benchmarker .exec ( &grbProgram, input, output, niterations, 1 , true );
152- if ( bench_rc != SUCCESS ) {
153- std::cerr << " ERROR during execution: rc = " << bench_rc << std::endl;
154- return bench_rc ;
152+ RC rc = launcher .exec ( &grbProgram, input, output, true );
153+ if ( rc != SUCCESS ) {
154+ std::cerr << " ERROR during execution: rc = " << rc << std::endl;
155+ return rc ;
155156 } else if ( output.rc ) {
156157 std::cerr << " Test failed: rc = " << output.rc << std::endl;
157158 return output.rc ;
@@ -180,10 +181,10 @@ int main( int argc, char ** argv ) {
180181 grb::buildMatrixUnique ( A, A_rows.data (), A_cols.data (), A_values.data (), A_rows.size (), PARALLEL );
181182 input_t < weight_t > input { A, root, stdToGrbVector ( expected_distances ) };
182183 output_t output;
183- RC bench_rc = benchmarker .exec ( &grbProgram, input, output, niterations, 1 , true );
184- if ( bench_rc != SUCCESS ) {
185- std::cerr << " ERROR during execution: rc = " << bench_rc << std::endl;
186- return bench_rc ;
184+ RC rc = launcher .exec ( &grbProgram, input, output, true );
185+ if ( rc != SUCCESS ) {
186+ std::cerr << " ERROR during execution: rc = " << rc << std::endl;
187+ return rc ;
187188 } else if ( output.rc ) {
188189 std::cerr << " Test failed: rc = " << output.rc << std::endl;
189190 return output.rc ;
@@ -209,10 +210,10 @@ int main( int argc, char ** argv ) {
209210 grb::buildMatrixUnique ( A, A_rows.data (), A_cols.data (), A_values.data (), A_rows.size (), PARALLEL );
210211 input_t < weight_t > input { A, root, stdToGrbVector ( expected_distances ) };
211212 output_t output;
212- RC bench_rc = benchmarker .exec ( &grbProgram, input, output, niterations, 1 , true );
213- if ( bench_rc != SUCCESS ) {
214- std::cerr << " ERROR during execution: rc = " << bench_rc << std::endl;
215- return bench_rc ;
213+ RC rc = launcher .exec ( &grbProgram, input, output, true );
214+ if ( rc != SUCCESS ) {
215+ std::cerr << " ERROR during execution: rc = " << rc << std::endl;
216+ return rc ;
216217 } else if ( output.rc ) {
217218 std::cerr << " Test failed: rc = " << output.rc << std::endl;
218219 return output.rc ;
@@ -230,10 +231,10 @@ int main( int argc, char ** argv ) {
230231 grb::buildMatrixUnique ( A, A_rows.data (), A_cols.data (), A_values.data (), A_rows.size (), PARALLEL );
231232 input_t < weight_t > input { A, root, stdToGrbVector ( expected_distances ) };
232233 output_t output;
233- RC bench_rc = benchmarker .exec ( &grbProgram, input, output, niterations, 1 , true );
234- if ( bench_rc != SUCCESS ) {
235- std::cerr << " ERROR during execution: rc = " << bench_rc << std::endl;
236- return bench_rc ;
234+ RC rc = launcher .exec ( &grbProgram, input, output, true );
235+ if ( rc != SUCCESS ) {
236+ std::cerr << " ERROR during execution: rc = " << rc << std::endl;
237+ return rc ;
237238 } else if ( output.rc ) {
238239 std::cerr << " Test failed: rc = " << output.rc << std::endl;
239240 return output.rc ;
0 commit comments