Log
Kulakov, Igor
[please enable javascript to see the address]
Tue May 28 11:09:09 CEST 2013
Hi all, hi Matthias,
I'm using Vc 0.7.1 with a tracking package, which is based on interface from AliHLTTPCCATracker.
It looks ok in release mode, but in debug I get:
Assertion failed: ((*this >= 0.f).isFull()), function exponent, file /usr/local/include/Vc/sse/vector.tcc, line 1337.
It appears when log(-1) is taken.
Do you have an idea what can be the problem? log(-1) == NAN isn't it?
Do I use log incorectly?
Regards,
Igor
P.S. Here you can find a little bit more information:
(gdb) bt
#0 0x00007fff8789ad46 in __kill ()
#1 0x00007fff8ab0fdf0 in abort ()
#2 0x00007fff8ab10e2a in __assert_rtn ()
#3 0x0000000100125f0c in Vc::Common::LogImpl<(Vc::Common::LogarithmBase)0>::calc<Vc::sfloat> (_x={d = <incomplete type>}) at vector.tcc:1337
#4 0x0000000100089f18 in Log<Vc::SSE::Vector<Vc::sfloat> > (x=@0x7fff5fbf9c80) at logarithm.h:253
#5 0x00000001000bf754 in AliHLTTPCCATrackParamVector::ApproximateBetheBloch (beta2=<value temporarily unavailable, due to optimizations>) at /SSDb/Dropbox/Work/STT/work/code/AliHLTTPCCATrackParamVector.cxx:485
#6 0x00000001000c3381 in AliHLTTPCCATrackParamVector::CalculateFitParameters (this=0x7fff5fbfdf70, par=@0x7fff5fbfd650, mass=@0x7fff5fbfd950) at /SSDb/Dropbox/Work/STT/work/code/AliHLTTPCCATrackParamVector.cxx:507
#7 0x00000001000fb956 in AliHLTTPCCATrackParamVector::Transport (this=0x7fff5fbfdf70, hit=@0x103083400, param=@0x102af6550, mask=@0x7fff5fbfe280) at /SSDb/Dropbox/Work/STT/work/code/AliHLTTPCCATrackParamVector.cxx:814
#8 0x000000010003e6f0 in AliHLTTPCCAGBTracker::Combine (this=0x102af63b0, t=@0x102af63b8, h=@0x102af7e20) at /SSDb/Dropbox/Work/STT/work/code/AliHLTTPCCAGBTracker.cxx:1987
#9 0x000000010003a018 in AliHLTTPCCAGBTracker::CreateNPlets (this=0x102af63b0, target=@0x102af63b8, hits=@0x7fff5fbff0f0, singlets=@0x7fff5fbff0d0) at /SSDb/Dropbox/Work/STT/work/code/AliHLTTPCCAGBTracker.cxx:1527
#10 0x000000010003905c in AliHLTTPCCAGBTracker::CATrackFinder (this=0x102af63b0) at /SSDb/Dropbox/Work/STT/work/code/AliHLTTPCCAGBTracker.cxx:1395
#11 0x0000000100037c77 in AliHLTTPCCAGBTracker::FindTracks (this=0x102af63b0) at /SSDb/Dropbox/Work/STT/work/code/AliHLTTPCCAGBTracker.cxx:1017
#12 0x00000001000062d4 in main (argc=7, argv=0x7fff5fbff648) at /SSDb/Dropbox/Work/STT/work/CA.cpp:183
(gdb) up 3
#3 0x0000000100125f0c in Vc::Common::LogImpl<(Vc::Common::LogarithmBase)0>::calc<Vc::sfloat> (_x={d = <incomplete type>}) at vector.tcc:1337
1337 VC_ASSERT((*this >= 0.f).isFull());
(gdb) l
1332 tmp = _mm_sub_epi32(tmp, _mm_set1_epi32(0x7f));
1333 return _mm_cvtepi32_ps(tmp);
1334 }
1335 template<> Vc_INTRINSIC Vc_PURE Vector<float8> Vector<float8>::exponent() const
1336 {
1337 VC_ASSERT((*this >= 0.f).isFull());
1338 __m128i tmp0 = _mm_srli_epi32(_mm_castps_si128(d.v()[0]), 23);
1339 __m128i tmp1 = _mm_srli_epi32(_mm_castps_si128(d.v()[1]), 23);
1340 tmp0 = _mm_sub_epi32(tmp0, _mm_set1_epi32(0x7f));
1341 tmp1 = _mm_sub_epi32(tmp1, _mm_set1_epi32(0x7f));
(gdb) up
#4 0x0000000100089f18 in Log<Vc::SSE::Vector<Vc::sfloat> > (x=@0x7fff5fbf9c80) at logarithm.h:253
253 return LogImpl<BaseE>::calc(x);
(gdb) l
248 };
249
250 template<typename T> static Vc_ALWAYS_INLINE Vc_CONST Vector<T> log(VC_ALIGNED_PARAMETER(Vector<T>) x) {
251 typedef typename Vector<T>::Mask M;
252 typedef Const<T> C;
253 return LogImpl<BaseE>::calc(x);
254 }
255 template<typename T> static Vc_ALWAYS_INLINE Vc_CONST Vector<T> log10(VC_ALIGNED_PARAMETER(Vector<T>) x) {
256 typedef typename Vector<T>::Mask M;
257 typedef Const<T> C;
(gdb) up
#5 0x00000001000bf754 in AliHLTTPCCATrackParamVector::ApproximateBetheBloch (beta2=<value temporarily unavailable, due to optimizations>) at /SSDb/Dropbox/Work/STT/work/code/AliHLTTPCCATrackParamVector.cxx:485
485 const sfloat_v &log_beta2_1subBeta2 = CAMath::Log( beta2_1subBeta2 );
(gdb) l
480
481 const sfloat_v &beta2_1subBeta2 = beta2 / ( sfloat_v( Vc::One ) - beta2 ); // beta2 * CAMath::Reciprocal( sfloat_v( Vc::One ) - beta2 );
482 const sfloat_v &_0p000153_beta2 = 0.153e-3f / beta2;
483 const float log_3p5mul5940 = 9.942227380852058f; // log( 3.5 * 5940 )
484 const float log_5940 = 8.68946441235669f; // log( 5940 )
485 const sfloat_v &log_beta2_1subBeta2 = CAMath::Log( beta2_1subBeta2 );
486
487 sfloat_v ret = _0p000153_beta2 * ( log_5940 + log_beta2_1subBeta2 - beta2 );
488 ret( beta2_1subBeta2 > 3.5f*3.5f ) =
489 _0p000153_beta2 * ( log_3p5mul5940 + 0.5f * log_beta2_1subBeta2 - beta2 );
(gdb) p ((float*)(&beta2_1subBeta2))[1]
$6 = -1.00000191
(gdb) p ((float*)(&beta2_1subBeta2))[0]
$7 = -1.00000191
(gdb) p ((float*)(&beta2_1subBeta2))[2]
$8 = -1.00000191
(gdb) p ((float*)(&beta2_1subBeta2))[3]
$9 = -1.00000191
(gdb) p ((float*)(&beta2_1subBeta2))[4]
$10 = -1.00000191
(gdb) p ((float*)(&beta2_1subBeta2))[5]
$11 = -1.00000191
(gdb) p ((float*)(&beta2_1subBeta2))[6]
$12 = -1.00000191
(gdb) p ((float*)(&beta2_1subBeta2))[7]
$13 = -1.00000191
CAMath calls std::log
More information about the Vc-devel
mailing list