Skip to content

Commit 3fdd782

Browse files
committed
Workaround for "illegal memory access" errors
Add debug functions to prevent the compiler from optimising out a conditional check or access to an object.
1 parent dc931b8 commit 3fdd782

File tree

4 files changed

+37
-0
lines changed

4 files changed

+37
-0
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#ifndef HeterogeneousCore_AlpakaInterface_interface_debug_h
2+
#define HeterogeneousCore_AlpakaInterface_interface_debug_h
3+
4+
#include "HeterogeneousCore/AlpakaInterface/interface/config.h"
5+
6+
namespace ALPAKA_ACCELERATOR_NAMESPACE::debug {
7+
8+
[[nodiscard]] ALPAKA_FN_ACC inline bool always_true() {
9+
volatile const bool flag = true;
10+
return flag;
11+
}
12+
13+
[[nodiscard]] ALPAKA_FN_ACC inline bool always_false() {
14+
volatile const bool flag = false;
15+
return flag;
16+
}
17+
18+
ALPAKA_FN_ACC inline void do_not_optimise(const auto& arg) {
19+
volatile const auto* ptr = &arg;
20+
(void)*ptr;
21+
}
22+
23+
} // namespace ALPAKA_ACCELERATOR_NAMESPACE::debug
24+
25+
#endif // HeterogeneousCore_AlpakaInterface_interface_debug_h

RecoTracker/PixelSeeding/plugins/alpaka/BrokenLineFit.dev.cc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
#include "DataFormats/TrackingRecHitSoA/interface/TrackingRecHitsSoA.h"
99
#include "HeterogeneousCore/AlpakaInterface/interface/config.h"
10+
#include "HeterogeneousCore/AlpakaInterface/interface/debug.h"
1011
#include "RecoLocalTracker/SiPixelRecHits/interface/pixelCPEforDevice.h"
1112
#include "RecoTracker/PixelTrackFitting/interface/alpaka/BrokenLine.h"
1213

@@ -182,6 +183,9 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE {
182183
double *__restrict__ phits,
183184
float *__restrict__ phits_ge,
184185
double *__restrict__ pfast_fit) const {
186+
// workaround for #47808
187+
debug::do_not_optimise(results_view);
188+
185189
ALPAKA_ASSERT_ACC(results_view.pt());
186190
ALPAKA_ASSERT_ACC(results_view.eta());
187191
ALPAKA_ASSERT_ACC(results_view.chi2());

RecoVertex/PixelVertexFinding/plugins/alpaka/clusterTracksByDensity.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#include "DataFormats/VertexSoA/interface/ZVertexSoA.h"
1111
#include "HeterogeneousCore/AlpakaInterface/interface/HistoContainer.h"
1212
#include "HeterogeneousCore/AlpakaInterface/interface/config.h"
13+
#include "HeterogeneousCore/AlpakaInterface/interface/debug.h"
1314
#include "HeterogeneousCore/AlpakaInterface/interface/warpsize.h"
1415
#include "HeterogeneousCore/AlpakaInterface/interface/workdivision.h"
1516
#include "RecoVertex/PixelVertexFinding/interface/PixelVertexWorkSpaceLayout.h"
@@ -31,6 +32,9 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::vertexFinder {
3132
float errmax, // max error to be "seed"
3233
float chi2max // max normalized distance to cluster
3334
) {
35+
// workaround for #47808
36+
debug::do_not_optimise(ws);
37+
3438
constexpr bool verbose = false;
3539

3640
if constexpr (verbose) {

RecoVertex/PixelVertexFinding/plugins/alpaka/clusterTracksDBSCAN.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#include "DataFormats/VertexSoA/interface/ZVertexSoA.h"
1111
#include "HeterogeneousCore/AlpakaInterface/interface/HistoContainer.h"
1212
#include "HeterogeneousCore/AlpakaInterface/interface/config.h"
13+
#include "HeterogeneousCore/AlpakaInterface/interface/debug.h"
1314
#include "HeterogeneousCore/AlpakaInterface/interface/workdivision.h"
1415
#include "RecoVertex/PixelVertexFinding/interface/PixelVertexWorkSpaceLayout.h"
1516

@@ -30,6 +31,9 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::vertexFinder {
3031
float errmax, // max error to be "seed"
3132
float chi2max // max normalized distance to cluster
3233
) const {
34+
// workaround for #47808
35+
debug::do_not_optimise(ws);
36+
3337
constexpr bool verbose = false;
3438

3539
if constexpr (verbose) {

0 commit comments

Comments
 (0)