Skip to content

Commit 856ea2f

Browse files
authored
Use floating-point literals in TrackUtils.h
This shows up during profiling ITS GPU kernels. The division on line 176 is forced to be calculated in double. This costed 23% of stalls in some kernels. I am not sure if the precision is required here? At least in local tests it did not affect the ITS tracking output (<0.1%).
1 parent 61350cd commit 856ea2f

1 file changed

Lines changed: 8 additions & 8 deletions

File tree

  • DataFormats/Reconstruction/include/ReconstructionDataFormats

DataFormats/Reconstruction/include/ReconstructionDataFormats/TrackUtils.h

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ GPUd() void g3helx3(value_T qfield, value_T step, std::array<value_T, 7>& vect)
8080
sintt = sint / tet;
8181
tsint = (tet - sint) / tet;
8282
value_T t = gpu::CAMath::Sin(0.5f * tet);
83-
cos1t = 2 * t * t / tet;
83+
cos1t = 2.f * t * t / tet;
8484
} else {
8585
tsint = tet * tet / 6.f;
8686
sintt = (1.f - tet * kOvSqSix) * (1.f + tet * kOvSqSix); // 1.- tsint;
@@ -128,7 +128,7 @@ GPUd() value_T BetheBlochSolid(value_T bg, value_T rho, value_T kp1, value_T kp2
128128
constexpr value_T me = 0.511e-3; // [GeV/c^2]
129129
kp1 *= 2.303f;
130130
kp2 *= 2.303f;
131-
value_T bg2 = bg * bg, beta2 = bg2 / (1 + bg2);
131+
value_T bg2 = bg * bg, beta2 = bg2 / (1.f + bg2);
132132
value_T maxT = 2.f * me * bg2; // neglecting the electron mass
133133

134134
//*** Density effect
@@ -141,8 +141,8 @@ GPUd() value_T BetheBlochSolid(value_T bg, value_T rho, value_T kp1, value_T kp2
141141
double r = (kp2 - x) / (kp2 - kp1);
142142
d2 = lhwI + x - 0.5f + (0.5f - lhwI - kp1) * r * r * r;
143143
}
144-
auto dedx = mK * meanZA / beta2 * (0.5f * gpu::CAMath::Log(2 * me * bg2 * maxT / (meanI * meanI)) - beta2 - d2);
145-
return dedx > 0. ? dedx : 0.;
144+
auto dedx = mK * meanZA / beta2 * (0.5f * gpu::CAMath::Log(2.f * me * bg2 * maxT / (meanI * meanI)) - beta2 - d2);
145+
return dedx > 0.f ? dedx : 0.f;
146146
}
147147

148148
//____________________________________________________
@@ -173,7 +173,7 @@ GPUd() value_T BetheBlochSolidOpt(value_T bg)
173173
constexpr value_T lhwI = -1.7175226; // gpu::CAMath::Log(28.816 * 1e-9 * gpu::CAMath::Sqrt(rho * meanZA) / meanI);
174174
constexpr value_T log2muTomeanI = 8.6839805; // gpu::CAMath::Log( 2. * me / meanI);
175175

176-
value_T bg2 = bg * bg, beta2 = bg2 / (1. + bg2);
176+
value_T bg2 = bg * bg, beta2 = bg2 / (1.f + bg2);
177177

178178
//*** Density effect
179179
value_T d2 = 0.;
@@ -185,7 +185,7 @@ GPUd() value_T BetheBlochSolidOpt(value_T bg)
185185
d2 = lhwI - 0.5 + x + (0.5 - lhwI - kp1) * r * r * r;
186186
}
187187
auto dedx = mK * meanZA / beta2 * (log2muTomeanI + x + x - beta2 - d2);
188-
return dedx > 0. ? dedx : 0.;
188+
return dedx > 0.f ? dedx : 0.f;
189189
}
190190

191191
//____________________________________________________
@@ -206,9 +206,9 @@ GPUdi() value_T BetheBlochSolidDerivative(value_T dedx, value_T bg)
206206
constexpr value_T mK = 0.307075e-3; // [GeV*cm^2/g]
207207
constexpr value_T meanZA = 0.49848;
208208
auto bg2 = bg * bg;
209-
auto t1 = 1 + bg2;
209+
auto t1 = 1.f + bg2;
210210
// auto derH = (mK * meanZA * (t1+bg2) - dedx*bg2)/(bg*t1);
211-
auto derH = (mK * meanZA * (t1 + 1. / bg2) - dedx) / (bg * t1);
211+
auto derH = (mK * meanZA * (t1 + 1.f / bg2) - dedx) / (bg * t1);
212212
return derH + derH;
213213
}
214214

0 commit comments

Comments
 (0)