Skip to content

Commit

Permalink
Add check for isnan input to getRbin and getZbin. Move __attribute__(…
Browse files Browse the repository at this point in the history
…(optimize("math-errno"))) to getRlVal and getXiVal where the segfaults occur.
  • Loading branch information
gartung committed May 31, 2022
1 parent 98dabea commit 19b46ed
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 15 deletions.
18 changes: 12 additions & 6 deletions RecoTracker/MkFitCore/src/MaterialEffects.h
Expand Up @@ -19,10 +19,16 @@ namespace mkfit {
public:
MaterialEffects();

int getZbin(const float z) const { return (std::abs(z) * Config::nBinsZME) / (Config::rangeZME); }
int getRbin(const float r) const { return (r * Config::nBinsRME) / (Config::rangeRME); }
float getRlVal(const int zb, const int rb) const { return mRlgridME[zb][rb]; }
float getXiVal(const int zb, const int rb) const { return mXigridME[zb][rb]; }
int getZbin(const float z) const {
return std::isnan(z) ? -1 : (std::abs(z) * Config::nBinsZME) / (Config::rangeZME);
}
int getRbin(const float r) const { return std::isnan(r) ? -1 : (r * Config::nBinsRME) / (Config::rangeRME); }
float __attribute__((optimize("math-errno"))) getRlVal(const int zb, const int rb) const {
return (zb > -1 && rb > -1) ? mRlgridME[zb][rb] : -1.f;
}
float __attribute__((optimize("math-errno"))) getXiVal(const int zb, const int rb) const {
return (zb > -1 && rb > -1) ? mXigridME[zb][rb] : -1.f;
}

/// (z,r) grid to material bin/det mapping for Rad length (Rl) and Xi arrays
// see https://indico.cern.ch/event/924564/contributions/3885164/attachments/2097314/
Expand Down Expand Up @@ -432,8 +438,8 @@ namespace mkfit {
}

private:
float mRlgridME[Config::nBinsZME][Config::nBinsRME];
float mXigridME[Config::nBinsZME][Config::nBinsRME];
float mRlgridME[Config::nBinsZME][Config::nBinsRME] = {{0.f}, {0.f}};
float mXigridME[Config::nBinsZME][Config::nBinsRME] = {{0.f}, {0.f}};
}; // class MaterialEffects

namespace Config {
Expand Down
18 changes: 9 additions & 9 deletions RecoTracker/MkFitCore/src/PropagationMPlex.cc
Expand Up @@ -592,15 +592,15 @@ namespace mkfit {

//==============================================================================

void __attribute__((optimize("math-errno"))) propagateHelixToZMPlex(const MPlexLS& inErr,
const MPlexLV& inPar,
const MPlexQI& inChg,
const MPlexQF& msZ,
MPlexLS& outErr,
MPlexLV& outPar,
const int N_proc,
const PropagationFlags pflags,
const MPlexQI* noMatEffPtr) {
void propagateHelixToZMPlex(const MPlexLS& inErr,
const MPlexLV& inPar,
const MPlexQI& inChg,
const MPlexQF& msZ,
MPlexLS& outErr,
MPlexLV& outPar,
const int N_proc,
const PropagationFlags pflags,
const MPlexQI* noMatEffPtr) {
// debug = true;

outErr = inErr;
Expand Down
3 changes: 3 additions & 0 deletions RecoTracker/MkFitCore/standalone/Makefile.config
Expand Up @@ -130,6 +130,9 @@ endif
ifeq ($(CXX), g++)
CXXFLAGS += -std=c++1z -ftree-vectorize -Werror=main -Werror=pointer-arith -Werror=overlength-strings -Wno-vla -Werror=overflow -Wstrict-overflow -Werror=array-bounds -Werror=format-contains-nul -Werror=type-limits -fvisibility-inlines-hidden -fno-math-errno --param vect-max-version-for-alias-checks=50 -Xassembler --compress-debug-sections -felide-constructors -fmessage-length=0 -Wall -Wno-non-template-friend -Wno-long-long -Wreturn-type -Wunused -Wparentheses -Wno-deprecated -Werror=return-type -Werror=missing-braces -Werror=unused-value -Werror=address -Werror=format -Werror=sign-compare -Werror=write-strings -Werror=delete-non-virtual-dtor -Wstrict-aliasing -Werror=narrowing -Werror=unused-but-set-variable -Werror=reorder -Werror=unused-variable -Werror=conversion-null -Werror=return-local-addr -Wnon-virtual-dtor -Werror=switch -fdiagnostics-show-option -Wno-unused-local-typedefs -Wno-attributes -Wno-psabi
CXXFLAGS += -fdiagnostics-color=auto -fdiagnostics-show-option -pthread -pipe -fopenmp-simd
# CXXFLAGS += -ffast-math
# CXXFLAGS += -lmvec
# CXXFLAGS += -mveclibabi=svml -lsvml -L/cvmfs/projects.cern.ch/intelsw/oneAPI/linux/x86_64/2022/compiler/latest/linux/compiler/lib/intel64 -Wl,-rpath=/cvmfs/projects.cern.ch/intelsw/oneAPI/linux/x86_64/2022/compiler/latest/linux/compiler/lib/intel64 -funsafe-math-optimizations
endif

# Try to find a new enough TBB
Expand Down

0 comments on commit 19b46ed

Please sign in to comment.