Skip to content
Snippets Groups Projects
Commit be88c550 authored by Niclas Esser's avatar Niclas Esser
Browse files

Added test for spectrometer

parent 88a1018a
Branches
Tags
1 merge request!31Benchmark
Pipeline #192672 passed
...@@ -122,3 +122,11 @@ endif() ...@@ -122,3 +122,11 @@ endif()
if(BUILD_edd_merge) if(BUILD_edd_merge)
add_subdirectory(merger) add_subdirectory(merger)
endif() endif()
message(STATUS "commands ${BENCHMARK_COMMANDS}")
# Add benchmark binaries here to get executed with make benchmark
if(ENABLE_benchmark)
add_custom_target(benchmark
COMMAND gspectrometer_benchmark --benchmark_counters_tabular=true
COMMAND merger_benchmark --benchmark_counters_tabular=true
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
endif()
\ No newline at end of file
...@@ -39,5 +39,8 @@ install(TARGETS gated_spectrometer DESTINATION bin) ...@@ -39,5 +39,8 @@ install(TARGETS gated_spectrometer DESTINATION bin)
if (ENABLE_testing) if (ENABLE_testing)
add_subdirectory(test) add_subdirectory(test)
endif() endif()
if (ENABLE_benchmark)
add_subdirectory(benchmark)
endif()
endif(ENABLE_CUDA) endif(ENABLE_CUDA)
\ No newline at end of file
include_directories(${BENCHMARK_INCLUDE_DIR})
link_directories(${BENCHMARK_LIBRARY_DIR})
cuda_add_executable(gspectrometer_benchmark gspectrometer_benchmark.cu)
add_dependencies(gspectrometer_benchmark googlebenchmark)
target_link_libraries(gspectrometer_benchmark ${BENCHMARK_LIBRARIES} ${PSRDADA_CPP_GS_LIBRARIES} ${PSRDADA_CPP_LIBRARIES} ${GTEST_LIBRARIES})
\ No newline at end of file
#include <benchmark/benchmark.h>
#include "psrdada_cpp/raw_bytes.hpp"
#include "psrdada_cpp/gated_spectrometer/pipeline.cuh"
#include "psrdada_cpp/gated_spectrometer/test/pipeline_tester.cuh" // we need the test_config
#include "psrdada_cpp/testing_tools/streams.hpp"
using namespace psrdada_cpp::gated_spectrometer;
template <class ...Args>
static void BM_DualPol_Spectrometer(benchmark::State& state, Args&&... args) {
auto args_tuple = std::make_tuple(std::move(args)...);
// std::get<0>(args_tuple).fft_length = state.range(0);
psrdada_cpp::testing_tools::DummyStream<float> dummy;
Pipeline<decltype(dummy), SinglePolarizationInput, GatedPowerSpectrumOutput>
test_object(std::get<0>(args_tuple).config(), dummy);
std::size_t buffer_size = std::get<0>(args_tuple).config().dadaBufferLayout.getBufferSize();
char* idata = new char[buffer_size];
psrdada_cpp::RawBytes rawdata(idata, buffer_size, buffer_size);
for (auto _ : state){
test_object(rawdata);
}
state.counters["rate"] = benchmark::Counter(buffer_size, benchmark::Counter::kIsIterationInvariantRate, benchmark::Counter::OneK::kIs1024);
state.counters["byte-size"] = buffer_size;
state.counters["fft_length"] = std::get<0>(args_tuple).fft_length;
state.counters["naccumulate"] = std::get<0>(args_tuple).naccumulate;
state.counters["nbits"] = std::get<0>(args_tuple).nbits;
state.counters["nheaps_block"] = std::get<0>(args_tuple).nheaps_block;
}
BENCHMARK_CAPTURE(BM_DualPol_Spectrometer, dual_spectrometer,
// fft_length | nacc | nbits | nheaps_block | msg
test::test_config({1024*1024, 2, 8, 8192, ""}));
BENCHMARK_CAPTURE(BM_DualPol_Spectrometer, dual_spectrometer,
// fft_length | nacc | nbits | nheaps_block | msg
test::test_config({1024*1024*16, 2, 8, 8192, ""}));
BENCHMARK_CAPTURE(BM_DualPol_Spectrometer, dual_spectrometer,
// fft_length | nacc | nbits | nheaps_block | msg
test::test_config({1024*1024*32, 2, 8, 8192, ""}));
BENCHMARK_CAPTURE(BM_DualPol_Spectrometer, dual_spectrometer,
// fft_length | nacc | nbits | nheaps_block | msg
test::test_config({1024*1024, 2, 10, 8192, ""}));
BENCHMARK_CAPTURE(BM_DualPol_Spectrometer, dual_spectrometer,
// fft_length | nacc | nbits | nheaps_block | msg
test::test_config({1024*1024*16, 2, 10, 8192, ""}));
BENCHMARK_CAPTURE(BM_DualPol_Spectrometer, dual_spectrometer,
// fft_length | nacc | nbits | nheaps_block | msg
test::test_config({1024*1024*32, 2, 10, 8192, ""}));
BENCHMARK_CAPTURE(BM_DualPol_Spectrometer, dual_spectrometer,
// fft_length | nacc | nbits | nheaps_block | msg
test::test_config({1024*1024, 2, 12, 8192, ""}));
BENCHMARK_CAPTURE(BM_DualPol_Spectrometer, dual_spectrometer,
// fft_length | nacc | nbits | nheaps_block | msg
test::test_config({1024*1024*16, 2, 12, 8192, ""}));
BENCHMARK_CAPTURE(BM_DualPol_Spectrometer, dual_spectrometer,
// fft_length | nacc | nbits | nheaps_block | msg
test::test_config({1024*1024*32, 2, 12, 8192, ""}));
int main(int argc, char** argv) {
char arg0_default[] = "benchmark";
char* args_default = arg0_default;
psrdada_cpp::set_log_level("INFO");
if (!argv) {
argc = 1;
argv = &args_default;
}
::benchmark::Initialize(&argc, argv);
if (::benchmark::ReportUnrecognizedArguments(argc, argv)) return 1;
::benchmark::RunSpecifiedBenchmarks();
::benchmark::Shutdown();
return 0;
}
\ No newline at end of file
include_directories(${BENCHMARK_INCLUDE_DIR}) include_directories(${BENCHMARK_INCLUDE_DIR})
link_directories(${BENCHMARK_LIBRARY_DIR}) link_directories(${BENCHMARK_LIBRARY_DIR})
# Define your benchmark executabl
add_executable(merger_benchmark merger_benchmark.cpp) add_executable(merger_benchmark merger_benchmark.cpp)
add_dependencies(merger_benchmark googlebenchmark) add_dependencies(merger_benchmark googlebenchmark)
# Link necessary libraries to your benchmark executable target_link_libraries(merger_benchmark ${BENCHMARK_LIBRARIES} ${PSRDADA_CPP_MERGE_LIBRARIES})
target_link_libraries(merger_benchmark ${BENCHMARK_LIBRARIES} ${PSRDADA_CPP_MERGE_LIBRARIES}) \ No newline at end of file
# Add a custom target for running benchmarks
add_custom_target(benchmark
COMMAND ${CMAKE_CURRENT_BINARY_DIR}/merger_benchmark --benchmark_counters_tabular=true
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
DEPENDS googlebenchmark
)
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment