From dabc22751b8340085aef5110b99552ca5a7cf13c Mon Sep 17 00:00:00 2001 From: Wenqi Li Date: Thu, 3 Feb 2022 14:35:22 +0000 Subject: [PATCH 1/2] update based on comments Signed-off-by: Wenqi Li --- monai/csrc/resample/pushpull_cpu.cpp | 43 +++++++++++++++------------- monai/csrc/resample/pushpull_cuda.cu | 43 +++++++++++++++------------- 2 files changed, 46 insertions(+), 40 deletions(-) diff --git a/monai/csrc/resample/pushpull_cpu.cpp b/monai/csrc/resample/pushpull_cpu.cpp index 4c9f6b9f9c..803fc38271 100644 --- a/monai/csrc/resample/pushpull_cpu.cpp +++ b/monai/csrc/resample/pushpull_cpu.cpp @@ -1539,16 +1539,6 @@ MONAI_NAMESPACE_DEVICE { // cpu o011 = ix0 * src_sX + iy1 * src_sY + iz1 * src_sZ; o101 = ix1 * src_sX + iy0 * src_sY + iz1 * src_sZ; o111 = ix1 * src_sX + iy1 * src_sY + iz1 * src_sZ; - } else { - // Offsets into 'push' volume - o000 = ix0 * out_sX + iy0 * out_sY + iz0 * out_sZ; - o100 = ix1 * out_sX + iy0 * out_sY + iz0 * out_sZ; - o010 = ix0 * out_sX + iy1 * out_sY + iz0 * out_sZ; - o001 = ix0 * out_sX + iy0 * out_sY + iz1 * out_sZ; - o110 = ix1 * out_sX + iy1 * out_sY + iz0 * out_sZ; - o011 = ix0 * out_sX + iy1 * out_sY + iz1 * out_sZ; - o101 = ix1 * out_sX + iy0 * out_sY + iz1 * out_sZ; - o111 = ix1 * out_sX + iy1 * out_sY + iz1 * out_sZ; } // ~~~~~~~~~~~~~~~~~~~~~~~~~~ Grid gradient ~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -1659,6 +1649,17 @@ MONAI_NAMESPACE_DEVICE { // cpu grad_ptr_NXYZ[grad_sC] = gy; grad_ptr_NXYZ[grad_sC * 2] = gz; } + if (do_push || do_count) { + // Offsets into 'push' volume + o000 = ix0 * out_sX + iy0 * out_sY + iz0 * out_sZ; + o100 = ix1 * out_sX + iy0 * out_sY + iz0 * out_sZ; + o010 = ix0 * out_sX + iy1 * out_sY + iz0 * out_sZ; + o001 = ix0 * out_sX + iy0 * out_sY + iz1 * out_sZ; + o110 = ix1 * out_sX + iy1 * out_sY + iz0 * out_sZ; + o011 = ix0 * out_sX + iy1 * out_sY + iz1 * out_sZ; + o101 = ix1 * out_sX + iy0 * out_sY + iz1 * out_sZ; + o111 = ix1 * out_sX + iy1 * out_sY + iz1 * out_sZ; + } // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Pull ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ if (do_pull) { scalar_t* out_ptr_NCXYZ = out_ptr + n * out_sN + w * out_sX + h * out_sY + d * out_sZ; @@ -1805,12 +1806,6 @@ MONAI_NAMESPACE_DEVICE { // cpu o10 = ix1 * src_sX + iy0 * src_sY; o01 = ix0 * src_sX + iy1 * src_sY; o11 = ix1 * src_sX + iy1 * src_sY; - } else { - // Offsets into 'push' volume - o00 = ix0 * out_sX + iy0 * out_sY; - o10 = ix1 * out_sX + iy0 * out_sY; - o01 = ix0 * out_sX + iy1 * out_sY; - o11 = ix1 * out_sX + iy1 * out_sY; } // ~~~~~~~~~~~~~~~~~~~~~~~~~~ Grid gradient ~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -1871,6 +1866,13 @@ MONAI_NAMESPACE_DEVICE { // cpu (*grad_ptr_NXY) = gx; grad_ptr_NXY[grad_sC] = gy; } + if (do_push || do_count) { + // Offsets into 'push' volume + o00 = ix0 * out_sX + iy0 * out_sY; + o10 = ix1 * out_sX + iy0 * out_sY; + o01 = ix0 * out_sX + iy1 * out_sY; + o11 = ix1 * out_sX + iy1 * out_sY; + } // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Pull ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ if (do_pull) { scalar_t* out_ptr_NCXY = out_ptr + n * out_sN + w * out_sX + h * out_sY; @@ -1960,10 +1962,6 @@ MONAI_NAMESPACE_DEVICE { // cpu // Offsets into source volume o0 = ix0 * src_sX; o1 = ix1 * src_sX; - } else { - // Offsets into 'push' volume - o0 = ix0 * out_sX; - o1 = ix1 * out_sX; } // ~~~~~~~~~~~~~~~~~~~~~~~~~~ Grid gradient ~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -1995,6 +1993,11 @@ MONAI_NAMESPACE_DEVICE { // cpu // -> zero (make sure this is done at initialization) } } + if (do_push || do_count) { + // Offsets into 'push' volume + o0 = ix0 * out_sX; + o1 = ix1 * out_sX; + } // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Pull ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ if (do_pull) { scalar_t* out_ptr_NCX = out_ptr + n * out_sN + w * out_sX; diff --git a/monai/csrc/resample/pushpull_cuda.cu b/monai/csrc/resample/pushpull_cuda.cu index fe50154670..7dabb07873 100644 --- a/monai/csrc/resample/pushpull_cuda.cu +++ b/monai/csrc/resample/pushpull_cuda.cu @@ -1503,16 +1503,6 @@ MONAI_NAMESPACE_DEVICE { // cuda o011 = ix0 * src_sX + iy1 * src_sY + iz1 * src_sZ; o101 = ix1 * src_sX + iy0 * src_sY + iz1 * src_sZ; o111 = ix1 * src_sX + iy1 * src_sY + iz1 * src_sZ; - } else { - // Offsets into 'push' volume - o000 = ix0 * out_sX + iy0 * out_sY + iz0 * out_sZ; - o100 = ix1 * out_sX + iy0 * out_sY + iz0 * out_sZ; - o010 = ix0 * out_sX + iy1 * out_sY + iz0 * out_sZ; - o001 = ix0 * out_sX + iy0 * out_sY + iz1 * out_sZ; - o110 = ix1 * out_sX + iy1 * out_sY + iz0 * out_sZ; - o011 = ix0 * out_sX + iy1 * out_sY + iz1 * out_sZ; - o101 = ix1 * out_sX + iy0 * out_sY + iz1 * out_sZ; - o111 = ix1 * out_sX + iy1 * out_sY + iz1 * out_sZ; } // ~~~~~~~~~~~~~~~~~~~~~~~~~~ Grid gradient ~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -1623,6 +1613,17 @@ MONAI_NAMESPACE_DEVICE { // cuda grad_ptr_NXYZ[grad_sC] = gy; grad_ptr_NXYZ[grad_sC * 2] = gz; } + if (do_push || do_count) { + // Offsets into 'push' volume + o000 = ix0 * out_sX + iy0 * out_sY + iz0 * out_sZ; + o100 = ix1 * out_sX + iy0 * out_sY + iz0 * out_sZ; + o010 = ix0 * out_sX + iy1 * out_sY + iz0 * out_sZ; + o001 = ix0 * out_sX + iy0 * out_sY + iz1 * out_sZ; + o110 = ix1 * out_sX + iy1 * out_sY + iz0 * out_sZ; + o011 = ix0 * out_sX + iy1 * out_sY + iz1 * out_sZ; + o101 = ix1 * out_sX + iy0 * out_sY + iz1 * out_sZ; + o111 = ix1 * out_sX + iy1 * out_sY + iz1 * out_sZ; + } // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Pull ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ if (do_pull) { scalar_t* out_ptr_NCXYZ = out_ptr + n * out_sN + w * out_sX + h * out_sY + d * out_sZ; @@ -1760,12 +1761,6 @@ MONAI_NAMESPACE_DEVICE { // cuda o10 = ix1 * src_sX + iy0 * src_sY; o01 = ix0 * src_sX + iy1 * src_sY; o11 = ix1 * src_sX + iy1 * src_sY; - } else { - // Offsets into 'push' volume - o00 = ix0 * out_sX + iy0 * out_sY; - o10 = ix1 * out_sX + iy0 * out_sY; - o01 = ix0 * out_sX + iy1 * out_sY; - o11 = ix1 * out_sX + iy1 * out_sY; } // ~~~~~~~~~~~~~~~~~~~~~~~~~~ Grid gradient ~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -1826,6 +1821,13 @@ MONAI_NAMESPACE_DEVICE { // cuda (*grad_ptr_NXY) = gx; grad_ptr_NXY[grad_sC] = gy; } + if (do_push || do_count) { + // Offsets into 'push' volume + o00 = ix0 * out_sX + iy0 * out_sY; + o10 = ix1 * out_sX + iy0 * out_sY; + o01 = ix0 * out_sX + iy1 * out_sY; + o11 = ix1 * out_sX + iy1 * out_sY; + } // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Pull ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ if (do_pull) { scalar_t* out_ptr_NCXY = out_ptr + n * out_sN + w * out_sX + h * out_sY; @@ -1915,10 +1917,6 @@ MONAI_NAMESPACE_DEVICE { // cuda if (do_pull || do_grad || do_sgrad) { o0 = ix0 * src_sX; o1 = ix1 * src_sX; - } else { - // Offsets into 'push' volume - o0 = ix0 * out_sX; - o1 = ix1 * out_sX; } // ~~~~~~~~~~~~~~~~~~~~~~~~~~ Grid gradient ~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -1950,6 +1948,11 @@ MONAI_NAMESPACE_DEVICE { // cuda // -> zero (make sure this is done at initialization) } } + if (do_push || do_count) { + // Offsets into 'push' volume + o0 = ix0 * out_sX; + o1 = ix1 * out_sX; + } // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Pull ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ if (do_pull) { scalar_t* out_ptr_NCX = out_ptr + n * out_sN + w * out_sX; From 37e14283253762dd5e74abb4b72992b5dad49590 Mon Sep 17 00:00:00 2001 From: Wenqi Li Date: Thu, 3 Feb 2022 12:57:33 -0500 Subject: [PATCH 2/2] -Wmaybe-uninitialized Signed-off-by: Wenqi Li --- monai/csrc/resample/pushpull_cpu.cpp | 6 ++++++ monai/csrc/resample/pushpull_cuda.cu | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/monai/csrc/resample/pushpull_cpu.cpp b/monai/csrc/resample/pushpull_cpu.cpp index 803fc38271..c638958a47 100644 --- a/monai/csrc/resample/pushpull_cpu.cpp +++ b/monai/csrc/resample/pushpull_cpu.cpp @@ -1539,6 +1539,8 @@ MONAI_NAMESPACE_DEVICE { // cpu o011 = ix0 * src_sX + iy1 * src_sY + iz1 * src_sZ; o101 = ix1 * src_sX + iy0 * src_sY + iz1 * src_sZ; o111 = ix1 * src_sX + iy1 * src_sY + iz1 * src_sZ; + } else if (!(do_push || do_count)) { + o000 = o100 = o010 = o001 = o110 = o011 = o101 = o111 = 0; } // ~~~~~~~~~~~~~~~~~~~~~~~~~~ Grid gradient ~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -1806,6 +1808,8 @@ MONAI_NAMESPACE_DEVICE { // cpu o10 = ix1 * src_sX + iy0 * src_sY; o01 = ix0 * src_sX + iy1 * src_sY; o11 = ix1 * src_sX + iy1 * src_sY; + } else if (!(do_push || do_count)) { + o00 = o10 = o01 = o11 = 0; } // ~~~~~~~~~~~~~~~~~~~~~~~~~~ Grid gradient ~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -1962,6 +1966,8 @@ MONAI_NAMESPACE_DEVICE { // cpu // Offsets into source volume o0 = ix0 * src_sX; o1 = ix1 * src_sX; + } else if (!(do_push || do_count)) { + o0 = o1 = 0; } // ~~~~~~~~~~~~~~~~~~~~~~~~~~ Grid gradient ~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/monai/csrc/resample/pushpull_cuda.cu b/monai/csrc/resample/pushpull_cuda.cu index 7dabb07873..461962cb80 100644 --- a/monai/csrc/resample/pushpull_cuda.cu +++ b/monai/csrc/resample/pushpull_cuda.cu @@ -1503,6 +1503,8 @@ MONAI_NAMESPACE_DEVICE { // cuda o011 = ix0 * src_sX + iy1 * src_sY + iz1 * src_sZ; o101 = ix1 * src_sX + iy0 * src_sY + iz1 * src_sZ; o111 = ix1 * src_sX + iy1 * src_sY + iz1 * src_sZ; + } else if (!(do_push || do_count)) { + o000 = o100 = o010 = o001 = o110 = o011 = o101 = o111 = 0; } // ~~~~~~~~~~~~~~~~~~~~~~~~~~ Grid gradient ~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -1761,6 +1763,8 @@ MONAI_NAMESPACE_DEVICE { // cuda o10 = ix1 * src_sX + iy0 * src_sY; o01 = ix0 * src_sX + iy1 * src_sY; o11 = ix1 * src_sX + iy1 * src_sY; + } else if (!(do_push || do_count)) { + o00 = o10 = o01 = o11 = 0; } // ~~~~~~~~~~~~~~~~~~~~~~~~~~ Grid gradient ~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -1917,6 +1921,8 @@ MONAI_NAMESPACE_DEVICE { // cuda if (do_pull || do_grad || do_sgrad) { o0 = ix0 * src_sX; o1 = ix1 * src_sX; + } else if (!(do_push || do_count)) { + o0 = o1 = 0; } // ~~~~~~~~~~~~~~~~~~~~~~~~~~ Grid gradient ~~~~~~~~~~~~~~~~~~~~~~~~~~