Improve detectTofAndAttMex performance.

This commit is contained in:
kradchen
2023-05-30 13:09:09 +08:00

View File

@@ -306,33 +306,35 @@ namespace Recon {
size_t N = _AscanBlock.getDimSize(1); size_t N = _AscanBlock.getDimSize(1);
size_t totalSize = N*M; size_t totalSize = N*M;
{ {
auto resDetect = new float[N]{0}; // auto resDetect = new float[N]{0};
auto resEnvelope = new float[totalSize]{0}; // auto resEnvelope = new float[totalSize]{0};
auto resEnvelopeRef = new float[totalSize]{0}; // auto resEnvelopeRef = new float[totalSize]{0};
auto aScans_r = new float[totalSize]{0}; // auto aScans_r = new float[totalSize]{0};
auto aScansRef_r = new float[totalSize]{0}; // auto aScansRef_r = new float[totalSize]{0};
{ // {
Matrix _AscanBlock_trim = _AscanBlock.getDimSize(0)!=M?_AscanBlock.block(0, 0, M-1):_AscanBlock; Matrix _AscanBlock_trim = _AscanBlock.getDimSize(0)!=M?_AscanBlock.block(0, 0, M-1):_AscanBlock;
Matrix _AscanRefBlock_trim = _AscanRefBlock.getDimSize(0)!=M?_AscanRefBlock.block(0, 0, M-1):_AscanRefBlock; Matrix _AscanRefBlock_trim = _AscanRefBlock.getDimSize(0)!=M?_AscanRefBlock.block(0, 0, M-1):_AscanRefBlock;
std::copy(_AscanBlock_trim.getData(), _AscanBlock_trim.getData() + totalSize, aScans_r); // std::copy(_AscanBlock_trim.getData(), _AscanBlock_trim.getData() + totalSize, aScans_r);
std::copy(_AscanRefBlock_trim.getData(), _AscanRefBlock_trim.getData() + totalSize, // std::copy(_AscanRefBlock_trim.getData(), _AscanRefBlock_trim.getData() + totalSize,
aScansRef_r); // aScansRef_r);
} // }
calculateBankDetectAndHilbertTransformation(
aScans_r, aScansRef_r, N, M, resampleFactor, nthreads,
resDetect, resEnvelope, resEnvelopeRef);
delete [] aScans_r;
delete [] aScansRef_r;
resDetectD = Aurora::malloc(N); resDetectD = Aurora::malloc(N);
std::copy(resDetect, resDetect+ N, resDetectD);
delete [] resDetect;
resEnvelopeD = Aurora::malloc(totalSize); resEnvelopeD = Aurora::malloc(totalSize);
std::copy(resEnvelope, resEnvelope+ totalSize, resEnvelopeD);
delete [] resEnvelope;
resEnvelopeRefD = Aurora::malloc(totalSize); resEnvelopeRefD = Aurora::malloc(totalSize);
std::copy(resEnvelopeRef, resEnvelopeRef+ totalSize, resEnvelopeRefD); calculateBankDetectAndHilbertTransformation(
delete [] resEnvelopeRef; _AscanBlock_trim.getData(), _AscanBlock_trim.getData(), N, M, resampleFactor, nthreads,
resDetectD, resEnvelopeD, resEnvelopeRefD);
// delete [] aScans_r;
// delete [] aScansRef_r;
// resDetectD = Aurora::malloc(N);
// std::copy(resDetect, resDetect+ N, resDetectD);
// delete [] resDetect;
// std::copy(resEnvelope, resEnvelope+ totalSize, resEnvelopeD);
// delete [] resEnvelope;
// resEnvelopeRefD = Aurora::malloc(totalSize);
// std::copy(resEnvelopeRef, resEnvelopeRef+ totalSize, resEnvelopeRefD);
// delete [] resEnvelopeRef;
} }
auto resDetect =Matrix::New(resDetectD,1,N); auto resDetect =Matrix::New(resDetectD,1,N);
auto resEnvelope =Matrix::New(resEnvelopeD,M,N); auto resEnvelope =Matrix::New(resEnvelopeD,M,N);