Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 29 additions & 20 deletions monai/csrc/resample/pushpull_cpu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1539,16 +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 {
// 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;
} else if (!(do_push || do_count)) {
o000 = o100 = o010 = o001 = o110 = o011 = o101 = o111 = 0;
}

// ~~~~~~~~~~~~~~~~~~~~~~~~~~ Grid gradient ~~~~~~~~~~~~~~~~~~~~~~~~~~
Expand Down Expand Up @@ -1659,6 +1651,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;
Expand Down Expand Up @@ -1805,12 +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 {
// 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;
} else if (!(do_push || do_count)) {
o00 = o10 = o01 = o11 = 0;
}

// ~~~~~~~~~~~~~~~~~~~~~~~~~~ Grid gradient ~~~~~~~~~~~~~~~~~~~~~~~~~~
Expand Down Expand Up @@ -1871,6 +1870,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;
Expand Down Expand Up @@ -1960,10 +1966,8 @@ 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;
} else if (!(do_push || do_count)) {
o0 = o1 = 0;
}

// ~~~~~~~~~~~~~~~~~~~~~~~~~~ Grid gradient ~~~~~~~~~~~~~~~~~~~~~~~~~~
Expand Down Expand Up @@ -1995,6 +1999,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;
Expand Down
49 changes: 29 additions & 20 deletions monai/csrc/resample/pushpull_cuda.cu
Original file line number Diff line number Diff line change
Expand Up @@ -1503,16 +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 {
// 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;
} else if (!(do_push || do_count)) {
o000 = o100 = o010 = o001 = o110 = o011 = o101 = o111 = 0;
}

// ~~~~~~~~~~~~~~~~~~~~~~~~~~ Grid gradient ~~~~~~~~~~~~~~~~~~~~~~~~~~
Expand Down Expand Up @@ -1623,6 +1615,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;
Expand Down Expand Up @@ -1760,12 +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 {
// 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;
} else if (!(do_push || do_count)) {
o00 = o10 = o01 = o11 = 0;
}

// ~~~~~~~~~~~~~~~~~~~~~~~~~~ Grid gradient ~~~~~~~~~~~~~~~~~~~~~~~~~~
Expand Down Expand Up @@ -1826,6 +1825,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;
Expand Down Expand Up @@ -1915,10 +1921,8 @@ 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;
} else if (!(do_push || do_count)) {
o0 = o1 = 0;
}

// ~~~~~~~~~~~~~~~~~~~~~~~~~~ Grid gradient ~~~~~~~~~~~~~~~~~~~~~~~~~~
Expand Down Expand Up @@ -1950,6 +1954,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;
Expand Down