Add OpenMP parallelism
[ctsim.git] / libctsim / backprojectors.cpp
index 2b9eba45cdc4ec7ce4b300030c19a4fafaf5af1e..695582aa86d493c6c8ba85615f9c4989bf3acc7f 100644 (file)
@@ -330,6 +330,9 @@ Backproject::PostProcessing()
 void
 Backproject::ScaleImageByRotIncrement ()
 {
+#if HAVE_OPENMP
+  #pragma omp parallel for
+#endif
   for (int ix = 0; ix < nx; ix++)
     for (int iy = 0; iy < ny; iy++)
       v[ix][iy] *= rotScale;
@@ -548,6 +551,9 @@ BackprojectDiff::BackprojectView (const double* const filteredProj, const double
   if (interpType == Backprojector::INTERP_LINEAR) {
     // precalculate scaled difference for linear interpolation
     deltaFilteredProj = new double [nDet];
+#if HAVE_OPENMP
+  #pragma omp parallel for
+#endif
     for (int i = 0; i < nDet - 1; i++)
       deltaFilteredProj[i] = filteredProj[i+1] - filteredProj[i];
     deltaFilteredProj[nDet - 1] = 0;  // last detector
@@ -624,6 +630,9 @@ BackprojectIntDiff::BackprojectView (const double* const filteredProj, const dou
   if (interpType == Backprojector::INTERP_LINEAR) {
     // precalculate scaled difference for linear interpolation
     deltaFilteredProj = new double [nDet];
+#if HAVE_OPENMP
+    #pragma omp parallel for
+#endif
     for (int i = 0; i < nDet - 1; i++)
       deltaFilteredProj[i] = (filteredProj[i+1] - filteredProj[i]) * dInvScale;
     deltaFilteredProj[nDet - 1] = 0;  // last detector