From 356691ee6f3a01e6ac508d044779c8943f9e32f4 Mon Sep 17 00:00:00 2001 From: kradchen Date: Tue, 21 Nov 2023 13:32:24 +0800 Subject: [PATCH] Make TVAL parrall --- .../reconstruction/reconstruction.cpp | 28 +++++++++++-------- .../solvingEquationSystem/solve.cpp | 5 ++-- .../solvingEquationSystem/solve.h | 2 +- 3 files changed, 20 insertions(+), 15 deletions(-) diff --git a/src/transmissionReconstruction/reconstruction/reconstruction.cpp b/src/transmissionReconstruction/reconstruction/reconstruction.cpp index 41207a7..cb464d7 100644 --- a/src/transmissionReconstruction/reconstruction/reconstruction.cpp +++ b/src/transmissionReconstruction/reconstruction/reconstruction.cpp @@ -222,19 +222,23 @@ namespace Recon { { allHitMaps.push_back(buildMatrixR.hitmap); } - - if(!data.isNull()) - { - Matrix sosValue = solveParameterIterator(buildMatrixR.M, b, dims, false, transParams::nonNeg)[0][0]; - result.outSOS = slownessToSOS(sosValue, SOS_IN_WATER) ; + #pragma omp parallel for num_threads(2) + for (int i =0; i<2; i++){ + if (i ==0){ + if(!data.isNull()) + { + Matrix sosValue = solveParameterIterator(buildMatrixR.M, b, dims, false, transParams::nonNeg)[0][0]; + result.outSOS = slownessToSOS(sosValue, SOS_IN_WATER) ; + } + } + else{ + if(!dataAtt.isNull()) + { + Matrix attValue = solveParameterIterator(buildMatrixR.M, bAtt, dims, false, transParams::nonNeg,1)[0][0]; + result.outATT = attValue/100 ; + } + } } - - if(!dataAtt.isNull()) - { - Matrix attValue = solveParameterIterator(buildMatrixR.M, bAtt, dims, false, transParams::nonNeg)[0][0]; - result.outATT = attValue/100 ; - } - Recon::notifyProgress(10 + 10 * (iter/numIter)); } return result; diff --git a/src/transmissionReconstruction/reconstruction/solvingEquationSystem/solve.cpp b/src/transmissionReconstruction/reconstruction/solvingEquationSystem/solve.cpp index 291acdb..9e84e6e 100644 --- a/src/transmissionReconstruction/reconstruction/solvingEquationSystem/solve.cpp +++ b/src/transmissionReconstruction/reconstruction/solvingEquationSystem/solve.cpp @@ -19,6 +19,7 @@ namespace Recon float TVAL3Beta; float TVAL3Beta0; bool nonNeg = false; + int deviceIndex ; }; Aurora::Matrix solve( Aurora::Sparse& M, Aurora::Matrix& b, const Aurora::Matrix& dims, int niter, TVAL3SolverOptions solverOptions){ @@ -39,7 +40,7 @@ namespace Recon opt.mu = solverOptions.TVAL3MU; opt.beta = solverOptions.TVAL3Beta; opt.beta0 = solverOptions.TVAL3Beta0; - int device = (int)solverOptions.gpuSelectionList[0]; + int device = (int)solverOptions.gpuSelectionList[solverOptions.deviceIndex]; return callTval3(M, b, dims, device, opt); } //SART @@ -50,7 +51,7 @@ namespace Recon } std::vector> solveParameterIterator(Aurora::Sparse M, Aurora::Matrix &b, - const Aurora::Matrix &dims, bool oneIter, bool nonNeg) + const Aurora::Matrix &dims, bool oneIter, bool nonNeg, int index) { if (Recon::transParams::name == "TVAL3"){ std::vector> result(Recon::transParams::muValues.getDataSize()); diff --git a/src/transmissionReconstruction/reconstruction/solvingEquationSystem/solve.h b/src/transmissionReconstruction/reconstruction/solvingEquationSystem/solve.h index 06b0df8..a5d50d6 100644 --- a/src/transmissionReconstruction/reconstruction/solvingEquationSystem/solve.h +++ b/src/transmissionReconstruction/reconstruction/solvingEquationSystem/solve.h @@ -6,7 +6,7 @@ namespace Recon { std::vector> solveParameterIterator(Aurora::Sparse M, Aurora::Matrix &b, - const Aurora::Matrix &dims, bool oneIter = true, bool nonNeg = false); + const Aurora::Matrix &dims, bool oneIter = true, bool nonNeg = false,int index=0); } // namespace Recon #endif // __SOLVE_H__ \ No newline at end of file