I'm not an expert in parallel computing, but IMHO there may be an issue in "TDStretch::calcCrossCorr" if OpenMP is activated and the SAMPLETYPE is "short".
The method is called in a parallelized loop in TDStrech.cpp @ line 307 and following.
AND in "calcCrossCorr" (Line 880) there is:
if (lnorm > maxnorm)
{
maxnorm = lnorm;
}
This means that "calcCrossCorr" is called in parallel and all of them may set "maxnorm" without a critical section.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hmm, you are right, using Integer sample data with OpenMP indeed had this potential multi-access 'hole'. This is now fixed in soundtouch svn repository.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hello.
I'm not an expert in parallel computing, but IMHO there may be an issue in "TDStretch::calcCrossCorr" if OpenMP is activated and the SAMPLETYPE is "short".
The method is called in a parallelized loop in TDStrech.cpp @ line 307 and following.
AND in "calcCrossCorr" (Line 880) there is:
This means that "calcCrossCorr" is called in parallel and all of them may set "maxnorm" without a critical section.
Hmm, you are right, using Integer sample data with OpenMP indeed had this potential multi-access 'hole'. This is now fixed in soundtouch svn repository.
Thx!