Skip to content

Commit

Permalink
Remove step size constraints from performance measurement
Browse files Browse the repository at this point in the history
  • Loading branch information
niermann999 committed Oct 8, 2024
1 parent ae18766 commit 9364b4f
Show file tree
Hide file tree
Showing 7 changed files with 73 additions and 34 deletions.
30 changes: 18 additions & 12 deletions benchmarks/common/benchmarks/toy_detector_benchmark.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -55,12 +55,12 @@ class ToyDetectorBenchmark : public benchmark::Fixture {
traccc::seedfinder_config seeding_cfg;
traccc::seedfilter_config filter_cfg;
traccc::spacepoint_grid_config grid_cfg{seeding_cfg};
traccc::finding_config finding_cfg = get_trk_finding_config();
traccc::finding_config finding_cfg;
traccc::fitting_config fitting_cfg;

static constexpr std::array<float, 2> phi_range{
-traccc::constant<float>::pi, traccc::constant<float>::pi};
static constexpr std::array<float, 2> eta_range{-3, 3};
static constexpr std::array<float, 2> eta_range{-4, 4};
static constexpr std::array<float, 2> mom_range{
10.f * traccc::unit<float>::GeV, 100.f * traccc::unit<float>::GeV};

Expand All @@ -82,6 +82,10 @@ class ToyDetectorBenchmark : public benchmark::Fixture {
"the simulation data."
<< std::endl;

// Apply correct propagation config
apply_propagation_config(finding_cfg);
apply_propagation_config(fitting_cfg);

// Use deterministic random number generator for testing
using uniform_gen_t = detray::detail::random_numbers<
traccc::scalar, std::uniform_real_distribution<traccc::scalar>>;
Expand Down Expand Up @@ -126,11 +130,11 @@ class ToyDetectorBenchmark : public benchmark::Fixture {
detray::muon<traccc::scalar>(), n_events, det, field,
std::move(generator), std::move(smearer_writer_cfg), full_path);

// Same propagation configuration for sim and reco
apply_propagation_config(sim.get_config());
// Set constrained step size to 1 mm
sim.get_config().propagation.stepping.step_constraint =
1.f * detray::unit<traccc::scalar>::mm;
// Otherwise same propagation configuration for sim and reco
sim.get_config().propagation = finding_cfg.propagation;

sim.run();

Expand All @@ -156,16 +160,18 @@ class ToyDetectorBenchmark : public benchmark::Fixture {
return toy_cfg;
}

traccc::finding_config get_trk_finding_config() const {

traccc::finding_config finding_cfg{};
template <typename config_t>
void apply_propagation_config(config_t& cfg) const {

// Configure the propagation for the toy detector
finding_cfg.propagation.navigation.search_window = {3, 3};
finding_cfg.propagation.navigation.overstep_tolerance =
-300.f * detray::unit<traccc::scalar>::um;

return finding_cfg;
cfg.propagation.navigation.search_window = {3, 3};
cfg.propagation.navigation.overstep_tolerance =
-300.f * detray::unit<float>::um;
cfg.propagation.navigation.min_mask_tolerance =
1e-5f * detray::unit<float>::mm;
cfg.propagation.navigation.max_mask_tolerance =
3.f * detray::unit<float>::mm;
cfg.propagation.navigation.mask_tolerance_scalor = 0.05f;
}

void SetUp(::benchmark::State& /*state*/) {
Expand Down
5 changes: 2 additions & 3 deletions benchmarks/cpu/toy_detector_cpu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,8 @@ BENCHMARK_F(ToyDetectorBenchmark, CPU)(benchmark::State& state) {
// Type declarations
using rk_stepper_type =
detray::rk_stepper<b_field_t::view_t,
typename detector_type::algebra_type,
detray::constrained_step<>>;
using host_detector_type = traccc::default_detector::host;
typename detector_type::algebra_type>;
using host_detector_type = traccc::toy_detector::host;
using host_navigator_type = detray::navigator<const host_detector_type>;
using host_fitter_type =
traccc::kalman_fitter<rk_stepper_type, host_navigator_type>;
Expand Down
11 changes: 6 additions & 5 deletions benchmarks/cuda/toy_detector_cuda.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,10 +45,9 @@ BENCHMARK_F(ToyDetectorBenchmark, CUDA)(benchmark::State& state) {
// Type declarations
using rk_stepper_type =
detray::rk_stepper<b_field_t::view_t,
typename detector_type::algebra_type,
detray::constrained_step<>>;
using host_detector_type = traccc::default_detector::host;
using device_detector_type = traccc::default_detector::device;
typename detector_type::algebra_type>;
using host_detector_type = traccc::toy_detector::host;
using device_detector_type = traccc::toy_detector::device;
using device_navigator_type = detray::navigator<const device_detector_type>;
using device_fitter_type =
traccc::kalman_fitter<rk_stepper_type, device_navigator_type>;
Expand Down Expand Up @@ -84,8 +83,10 @@ BENCHMARK_F(ToyDetectorBenchmark, CUDA)(benchmark::State& state) {
traccc::cuda::fitting_algorithm<device_fitter_type> device_fitting(
fitting_cfg, mr, async_copy, stream);

// Copy detector to device
auto det_fixed_buff = detray::get_buffer(det, device_mr, copy);
// Detector view object
auto det_view = detray::get_data(det);
auto det_view = detray::get_data(det_fixed_buff);

// D2H copy object
traccc::device::container_d2h_copy_alg<traccc::track_state_container_types>
Expand Down
19 changes: 13 additions & 6 deletions device/cuda/src/finding/finding_algorithm.cu
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,10 @@
#include "traccc/finding/device/make_barcode_sequence.hpp"
#include "traccc/finding/device/propagate_to_next_surface.hpp"
#include "traccc/finding/device/prune_tracks.hpp"
#include "traccc/geometry/detector.hpp"
#include "traccc/utils/projections.hpp"

// detray include(s).
#include "detray/core/detector.hpp"
#include "detray/core/detector_metadata.hpp"
#include "detray/detectors/bfield.hpp"
#include "detray/navigation/navigator.hpp"
#include "detray/propagator/rk_stepper.hpp"
Expand Down Expand Up @@ -603,12 +602,20 @@ finding_algorithm<stepper_t, navigator_t>::operator()(
}

// Explicit template instantiation
using default_detector_type =
detray::detector<detray::default_metadata, detray::device_container_types>;
using default_stepper_type =
using debug_stepper_type =
detray::rk_stepper<covfie::field<detray::bfield::const_bknd_t>::view_t,
traccc::default_algebra, detray::constrained_step<>>;
using default_navigator_type = detray::navigator<const default_detector_type>;
using default_stepper_type =
detray::rk_stepper<covfie::field<detray::bfield::const_bknd_t>::view_t,
traccc::default_algebra>;

using default_navigator_type =
detray::navigator<const traccc::default_detector::device>;
using toy_navigator_type =
detray::navigator<const traccc::toy_detector::device>;

template class finding_algorithm<debug_stepper_type, default_navigator_type>;
template class finding_algorithm<default_stepper_type, default_navigator_type>;
template class finding_algorithm<default_stepper_type, toy_navigator_type>;

} // namespace traccc::cuda
22 changes: 17 additions & 5 deletions device/cuda/src/fitting/fitting_algorithm.cu
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@
#include "traccc/fitting/device/fill_sort_keys.hpp"
#include "traccc/fitting/device/fit.hpp"
#include "traccc/fitting/kalman_filter/kalman_fitter.hpp"
#include "traccc/geometry/detector.hpp"

// detray include(s).
#include "detray/core/detector_metadata.hpp"
#include "detray/detectors/bfield.hpp"
#include "detray/propagator/rk_stepper.hpp"

Expand Down Expand Up @@ -126,14 +126,26 @@ track_state_container_types::buffer fitting_algorithm<fitter_t>::operator()(
}

// Explicit template instantiation
using default_detector_type =
detray::detector<detray::default_metadata, detray::device_container_types>;
using default_stepper_type =
using debug_stepper_type =
detray::rk_stepper<covfie::field<detray::bfield::const_bknd_t>::view_t,
default_algebra, detray::constrained_step<>>;
using default_navigator_type = detray::navigator<const default_detector_type>;
using default_stepper_type =
detray::rk_stepper<covfie::field<detray::bfield::const_bknd_t>::view_t,
traccc::default_algebra>;
using default_navigator_type =
detray::navigator<const traccc::default_detector::device>;
using toy_navigator_type =
detray::navigator<const traccc::toy_detector::device>;

using debug_fitter_type =
kalman_fitter<debug_stepper_type, default_navigator_type>;
using default_fitter_type =
kalman_fitter<default_stepper_type, default_navigator_type>;
using toy_det_fitter_type =
kalman_fitter<default_stepper_type, toy_navigator_type>;

template class fitting_algorithm<debug_fitter_type>;
template class fitting_algorithm<default_fitter_type>;
template class fitting_algorithm<toy_det_fitter_type>;

} // namespace traccc::cuda
5 changes: 5 additions & 0 deletions io/include/traccc/io/read_detector.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,4 +35,9 @@ void read_detector(default_detector::host& detector,
const std::string_view& material_file = "",
const std::string_view& grid_file = "");

void read_detector(toy_detector::host& detector, vecmem::memory_resource& mr,
const std::string_view& geometry_file,
const std::string_view& material_file = "",
const std::string_view& grid_file = "");

} // namespace traccc::io
15 changes: 12 additions & 3 deletions io/src/read_detector.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@
namespace {

/// Common implementation for constructing a detector from a set of input files
template <typename detector_t>
/// @tparam CAP Grid bin capacity 0: dynamic bin capacity
template <typename detector_t, unsigned int CAP = 0u>
void read_detector(detector_t& detector, vecmem::memory_resource& mr,
const std::string_view& geometry_file,
const std::string_view& material_file,
Expand All @@ -37,7 +38,7 @@ void read_detector(detector_t& detector, vecmem::memory_resource& mr,
}

// Read the detector.
auto det = detray::io::read_detector<detector_t>(mr, cfg);
auto det = detray::io::read_detector<detector_t, CAP>(mr, cfg);
detector = std::move(det.first);
}

Expand All @@ -50,8 +51,16 @@ void read_detector(default_detector::host& detector,
const std::string_view& geometry_file,
const std::string_view& material_file,
const std::string_view& grid_file) {

::read_detector(detector, mr, geometry_file, material_file, grid_file);
}

void read_detector(toy_detector::host& detector, vecmem::memory_resource& mr,
const std::string_view& geometry_file,
const std::string_view& material_file,
const std::string_view& grid_file) {

::read_detector<toy_detector::host, 1u>(detector, mr, geometry_file,
material_file, grid_file);
}

} // namespace traccc::io

0 comments on commit 9364b4f

Please sign in to comment.