IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
Macros
CudaSrcMacros.h File Reference

Source part of macros used for cuda implementations. More...

Go to the source code of this file.

Macros

#define IPSDKCUDA_UNUSED_VAR(x)   (void)(x)
 
#define IPSDKCUDA_SPLIT_SIZES_FROM_STRUCT(imgSizeInfo)
 
#define IPSDKCUDA_SET_GRID()
 
#define IPSDKCUDA_SET_GRID2D()
 
#define IPSDKCUDA_SET_GRID3D()
 
#define IPSDKCUDA_CHECK_ERROR(err)
 
#define IPSDKCUDA_CHECK_KERNEL_EXEC(res)
 
#define IPSDKCUDA_START_FREE_MEMORY_IF_ERROR()   if(!res._bResult) {
 
#define IPSDKCUDA_END_FREE_MEMORY_IF_ERROR()
 
#define IPSDKCUDA_DECLARE_SHARED_BUFFER(T, pBuf)
 
#define IPSDKCUDA_TRANSFERT_KERNEL_INFO_2D(pKnlInfo_h, knlInfo_d, dataType)
 
#define IPSDKCUDA_FREE_KERNEL_INFO_2D(knlInfo_d)
 
#define IPSDKCUDA_TRANSFERT_KERNEL_INFO_3D(pKnlInfo_h, knlInfo_d, dataType)
 
#define IPSDKCUDA_FREE_KERNEL_INFO_3D(knlInfo_d)
 
#define IPSDKCUDA_TRANSFERT_SE_INFO_2D(pSEInfo_h, seInfo_d)
 
#define IPSDKCUDA_FREE_SE_INFO_2D(seInfo_d)
 
#define IPSDKCUDA_TRANSFERT_SE_INFO_3D(pSEInfo_h, seInfo_d)
 
#define IPSDKCUDA_FREE_SE_INFO_3D(seInfo_d)
 
#define IPSDKCUDA_CHECK_INSITU(pBuf1, pBuf2)   ((const char*)(*pBuf1)) == ((const char*)(*pBuf2))
 
#define IPSDKCUDA_COMPUTE_STRIP_SIZE_2D(neighbourInfo_d, T, FREE_NEIGHBOURBUFFER_MACRO)
 
#define IPSDKCUDA_COMPUTE_STRIP_SIZE_2D_WITH_PADDING(paddingX, paddingY, T)
 
#define IPSDKCUDA_COMPUTE_STRIP_SIZE_3D(neighbourInfo_d, T, FREE_NEIGHBOURBUFFER_MACRO)
 
#define IPSDKCUDA_COMPUTE_STRIP_SIZE_3D_WITH_PADDING(paddingX, paddingY, paddingZ, T)
 
#define IPSDKCUDA_START_INSITU_DATA_PARSING_2D(pNeighbourInfo_h, neighbourInfo_d, FREE_NEIGHBOURBUFFER_MACRO)
 
#define IPSDKCUDA_START_INSITU_DATA_PARSING_2D_WITH_PADDING(paddingX, paddingY)
 
#define IPSDKCUDA_START_INSITU_DATA_PARSING_3D(pNeighbourInfo_h, neighbourInfo_d, FREE_NEIGHBOURBUFFER_MACRO)
 
#define IPSDKCUDA_START_INSITU_DATA_PARSING_3D_WITH_PADDING(paddingX, paddingY, paddingZ)
 
#define IPSDKCUDA_END_INSITU_DATA_PARSING_2D(pNeighbourInfo_h, neighbourInfo_d, FREE_NEIGHBOURBUFFER_MACRO)
 
#define IPSDKCUDA_END_INSITU_DATA_PARSING_2D_WITH_PADDING(paddingX, paddingY)
 
#define IPSDKCUDA_END_INSITU_DATA_PARSING_3D(pNeighbourInfo_h, neighbourInfo_d, FREE_NEIGHBOURBUFFER_MACRO)
 
#define IPSDKCUDA_END_INSITU_DATA_PARSING_3D_WITH_PADDING(paddingX, paddingY, paddingZ)
 

Detailed Description

Source part of macros used for cuda implementations.

Author
R. Abbal
Date
2021/06/02

Macro Definition Documentation

◆ IPSDKCUDA_SPLIT_SIZES_FROM_STRUCT

#define IPSDKCUDA_SPLIT_SIZES_FROM_STRUCT (   imgSizeInfo)
Value:
const unsigned long sizeX = imgSizeInfo._sizeX; \
const unsigned long sizeY = imgSizeInfo._sizeY; \
const unsigned long sizeZ = imgSizeInfo._sizeZ; \
const unsigned long sizeC = imgSizeInfo._sizeC; \
const unsigned long sizeT = imgSizeInfo._sizeT;

◆ IPSDKCUDA_SET_GRID

#define IPSDKCUDA_SET_GRID ( )
Value:
const unsigned short nbThreadsPerBlockDim = pLauncherInfo->_blockSize; \
const unsigned long sizeX = pLauncherInfo->_imgSizeInfo._sizeX; \
const unsigned long sizeY = pLauncherInfo->_imgSizeInfo._sizeY; \
const unsigned long sizeZ = pLauncherInfo->_imgSizeInfo._sizeZ; \
const unsigned long sizeC = pLauncherInfo->_imgSizeInfo._sizeC; \
const unsigned long sizeT = pLauncherInfo->_imgSizeInfo._sizeT; \
const unsigned long nbPlans = sizeZ * sizeC * sizeT; \
const unsigned long nbBlocksX = sizeX / nbThreadsPerBlockDim + (sizeX%nbThreadsPerBlockDim == 0 ? 0 : 1); \
const unsigned long nbBlocksY = sizeY / nbThreadsPerBlockDim + (sizeY%nbThreadsPerBlockDim == 0 ? 0 : 1); \
const unsigned long nbBlocksZ = nbPlans / nbThreadsPerBlockDim + (nbPlans%nbThreadsPerBlockDim == 0 ? 0 : 1); \
dim3 gridSize(nbBlocksX, nbBlocksY, nbBlocksZ); \
const unsigned long blockSizeX = nbThreadsPerBlockDim; \
const unsigned long blockSizeY = nbThreadsPerBlockDim; \
const unsigned long blockSizeZ = (sizeZ < nbThreadsPerBlockDim ? sizeZ : nbThreadsPerBlockDim); \
dim3 blockSize(blockSizeX, blockSizeY, blockSizeZ);

◆ IPSDKCUDA_SET_GRID2D

#define IPSDKCUDA_SET_GRID2D ( )
Value:
const unsigned short nbThreadsPerBlockDim = pLauncherInfo->_blockSize; \
const unsigned long sizeX = pLauncherInfo->_imgSizeInfo._sizeX; \
const unsigned long sizeY = pLauncherInfo->_imgSizeInfo._sizeY; \
const unsigned long sizeZ = pLauncherInfo->_imgSizeInfo._sizeZ; \
const unsigned long sizeC = pLauncherInfo->_imgSizeInfo._sizeC; \
const unsigned long sizeT = pLauncherInfo->_imgSizeInfo._sizeT; \
const unsigned long nbPlans = sizeZ * sizeC * sizeT; \
const unsigned long nbBlocksX = sizeX / nbThreadsPerBlockDim + (sizeX % nbThreadsPerBlockDim == 0 ? 0 : 1); \
const unsigned long nbBlocksY = sizeY / nbThreadsPerBlockDim + (sizeY % nbThreadsPerBlockDim == 0 ? 0 : 1); \
const unsigned long nbBlocksZ = nbPlans; \
dim3 gridSize(nbBlocksX, nbBlocksY, nbBlocksZ); \
const unsigned long blockSizeX = nbThreadsPerBlockDim; \
const unsigned long blockSizeY = nbThreadsPerBlockDim; \
const unsigned long blockSizeZ = 1; \
dim3 blockSize(blockSizeX, blockSizeY, blockSizeZ);

◆ IPSDKCUDA_SET_GRID3D

#define IPSDKCUDA_SET_GRID3D ( )
Value:
const unsigned short nbThreadsPerBlockDim = pLauncherInfo->_blockSize; \
const unsigned long sizeX = pLauncherInfo->_imgSizeInfo._sizeX; \
const unsigned long sizeY = pLauncherInfo->_imgSizeInfo._sizeY; \
const unsigned long sizeZ = pLauncherInfo->_imgSizeInfo._sizeZ; \
const unsigned long sizeC = pLauncherInfo->_imgSizeInfo._sizeC; \
const unsigned long sizeT = pLauncherInfo->_imgSizeInfo._sizeT; \
const unsigned long nbVolumes = sizeC * sizeT; \
const unsigned long blockSizeX = nbThreadsPerBlockDim; \
const unsigned long blockSizeY = nbThreadsPerBlockDim; \
const unsigned long blockSizeZ = (nbThreadsPerBlockDim > sizeZ ? sizeZ : nbThreadsPerBlockDim); \
dim3 blockSize(blockSizeX, blockSizeY, blockSizeZ); \
const unsigned long nbBlocksX = sizeX / blockSizeX + (sizeX % blockSizeX == 0 ? 0 : 1); \
const unsigned long nbBlocksY = sizeY / blockSizeY + (sizeY % blockSizeY == 0 ? 0 : 1); \
const unsigned long nbBlocksZ = (sizeZ / blockSizeZ + (sizeZ % blockSizeZ == 0 ? 0 : 1)); \
dim3 gridSize(nbBlocksX, nbBlocksY, nbBlocksZ);

◆ IPSDKCUDA_CHECK_ERROR

#define IPSDKCUDA_CHECK_ERROR (   err)
Value:
if (err != cudaSuccess) { \
res._bResult = false; \
res._msg = cudaGetErrorString(err); \
}

◆ IPSDKCUDA_CHECK_KERNEL_EXEC

#define IPSDKCUDA_CHECK_KERNEL_EXEC (   res)
Value:
cudaDeviceSynchronize(); \
{ \
cudaError_t lastError = cudaGetLastError(); \
IPSDKCUDA_CHECK_ERROR(lastError) \
}

◆ IPSDKCUDA_END_FREE_MEMORY_IF_ERROR

#define IPSDKCUDA_END_FREE_MEMORY_IF_ERROR ( )
Value:
return res;\
}

◆ IPSDKCUDA_DECLARE_SHARED_BUFFER

#define IPSDKCUDA_DECLARE_SHARED_BUFFER (   T,
  pBuf 
)
Value:
extern __shared__ char pSharedMem[]; \
T* pBuf = reinterpret_cast<T*>(pSharedMem);

◆ IPSDKCUDA_FREE_KERNEL_INFO_2D

#define IPSDKCUDA_FREE_KERNEL_INFO_2D (   knlInfo_d)
Value:
cudaFree(knlInfo_d._pOffsetsX); \
cudaFree(knlInfo_d._pOffsetsY); \
cudaFree(knlInfo_d._pCoefs);

◆ IPSDKCUDA_FREE_KERNEL_INFO_3D

#define IPSDKCUDA_FREE_KERNEL_INFO_3D (   knlInfo_d)
Value:
cudaFree(knlInfo_d._pOffsetsX); \
cudaFree(knlInfo_d._pOffsetsY); \
cudaFree(knlInfo_d._pOffsetsZ); \
cudaFree(knlInfo_d._pCoefs);

◆ IPSDKCUDA_TRANSFERT_SE_INFO_2D

#define IPSDKCUDA_TRANSFERT_SE_INFO_2D (   pSEInfo_h,
  seInfo_d 
)
Value:
ipsdk::gpu::StructuringElementInfo seInfo_d; \
seInfo_d._nbData = pSEInfo_h->_nbData; \
seInfo_d._paddingX = pSEInfo_h->_paddingX; \
seInfo_d._paddingY = pSEInfo_h->_paddingY; \
IPSDKCUDA_CHECK_ERROR(cudaMalloc((void **)&seInfo_d._pOffsetsX, pSEInfo_h->_nbData * sizeof(int))); \
IPSDKCUDA_CHECK_ERROR(cudaMalloc((void **)&seInfo_d._pOffsetsY, pSEInfo_h->_nbData * sizeof(int))); \
IPSDKCUDA_START_FREE_MEMORY_IF_ERROR() \
cudaFree(&seInfo_d._pOffsetsX); \
IPSDKCUDA_END_FREE_MEMORY_IF_ERROR() \
IPSDKCUDA_CHECK_ERROR(cudaMemcpy(seInfo_d._pOffsetsX, pSEInfo_h->_pOffsetsX, pSEInfo_h->_nbData * sizeof(int), cudaMemcpyHostToDevice)); \
IPSDKCUDA_START_FREE_MEMORY_IF_ERROR() \
cudaFree(&seInfo_d._pOffsetsX); \
cudaFree(&seInfo_d._pOffsetsY); \
IPSDKCUDA_END_FREE_MEMORY_IF_ERROR() \
IPSDKCUDA_CHECK_ERROR(cudaMemcpy(seInfo_d._pOffsetsY, pSEInfo_h->_pOffsetsY, pSEInfo_h->_nbData * sizeof(int), cudaMemcpyHostToDevice)); \
IPSDKCUDA_START_FREE_MEMORY_IF_ERROR() \
cudaFree(&seInfo_d._pOffsetsX); \
cudaFree(&seInfo_d._pOffsetsY); \
IPSDKCUDA_END_FREE_MEMORY_IF_ERROR()

◆ IPSDKCUDA_FREE_SE_INFO_2D

#define IPSDKCUDA_FREE_SE_INFO_2D (   seInfo_d)
Value:
cudaFree(seInfo_d._pOffsetsX); \
cudaFree(seInfo_d._pOffsetsY);

◆ IPSDKCUDA_FREE_SE_INFO_3D

#define IPSDKCUDA_FREE_SE_INFO_3D (   seInfo_d)
Value:
cudaFree(seInfo_d._pOffsetsX); \
cudaFree(seInfo_d._pOffsetsY); \
cudaFree(seInfo_d._pOffsetsZ);

◆ IPSDKCUDA_COMPUTE_STRIP_SIZE_2D

#define IPSDKCUDA_COMPUTE_STRIP_SIZE_2D (   neighbourInfo_d,
  T,
  FREE_NEIGHBOURBUFFER_MACRO 
)
Value:
const unsigned long nbBlocksInGrid = pLauncherInfo->_nbMultiProcessors; \
unsigned long nbLineBlocksPerGrid = nbBlocksInGrid / nbBlocksX + (nbBlocksInGrid % nbBlocksX != 0); \
nbLineBlocksPerGrid = (nbLineBlocksPerGrid < sizeY / blockSizeY ? nbLineBlocksPerGrid : sizeY / blockSizeY); \
const unsigned long gridSizeY = blockSizeY * nbLineBlocksPerGrid; \
const unsigned long nbLineGridsInImg = sizeY / gridSizeY + (sizeY % gridSizeY != 0); \
const unsigned long stripSizeX = sizeX + 2 * neighbourInfo_d._paddingX; \
const unsigned long stripSizeY = blockSizeY * nbLineBlocksPerGrid + 2 * neighbourInfo_d._paddingY; \
const unsigned long nbTmpData = stripSizeX * stripSizeY; \
T* pBuffer_d; \
IPSDKCUDA_CHECK_ERROR(cudaMalloc((void**)&(pBuffer_d), nbTmpData * sizeof(T))); \
T** pTmpBufData_d; \
IPSDKCUDA_CHECK_ERROR(cudaMalloc((void**)&pTmpBufData_d, sizeof(T*))); \
IPSDKCUDA_START_FREE_MEMORY_IF_ERROR() \
IPSDKCUDA_FREE_SE_INFO_2D(neighbourInfo_d) \
cudaFree(pBuffer_d); \
IPSDKCUDA_END_FREE_MEMORY_IF_ERROR() \
IPSDKCUDA_CHECK_ERROR(cudaMemcpy(pTmpBufData_d, &pBuffer_d, sizeof(T*), cudaMemcpyHostToDevice)); \
IPSDKCUDA_START_FREE_MEMORY_IF_ERROR() \
IPSDKCUDA_FREE_SE_INFO_2D(neighbourInfo_d) \
cudaFree(pBuffer_d); \
cudaFree(pTmpBufData_d); \
IPSDKCUDA_END_FREE_MEMORY_IF_ERROR() \
const T** pTmpBuf_d = const_cast<const T**>(pTmpBufData_d); \
const unsigned long nbBlocksX_strip = stripSizeX / nbThreadsPerBlockDim + (stripSizeX % nbThreadsPerBlockDim == 0 ? 0 : 1); \
const unsigned long nbBlocksY_strip = stripSizeY / nbThreadsPerBlockDim + (stripSizeY % nbThreadsPerBlockDim == 0 ? 0 : 1); \
const unsigned long nbBlocksZ_strip = 1; \
dim3 stripGridSize(nbBlocksX_strip, nbBlocksY_strip, nbBlocksZ_strip);

◆ IPSDKCUDA_COMPUTE_STRIP_SIZE_2D_WITH_PADDING

#define IPSDKCUDA_COMPUTE_STRIP_SIZE_2D_WITH_PADDING (   paddingX,
  paddingY,
 
)
Value:
const unsigned long nbBlocksInGrid = pLauncherInfo->_nbMultiProcessors; \
unsigned long nbLineBlocksPerGrid = nbBlocksInGrid / nbBlocksX + (nbBlocksInGrid % nbBlocksX != 0); \
nbLineBlocksPerGrid = (nbLineBlocksPerGrid < sizeY / blockSizeY ? nbLineBlocksPerGrid : sizeY / blockSizeY); \
const unsigned long gridSizeY = blockSizeY * nbLineBlocksPerGrid; \
const unsigned long nbLineGridsInImg = sizeY / gridSizeY + (sizeY % gridSizeY != 0); \
const unsigned long stripSizeX = sizeX + 2 * paddingX; \
const unsigned long stripSizeY = blockSizeY * nbLineBlocksPerGrid + 2 * paddingY; \
const unsigned long nbTmpData = stripSizeX * stripSizeY; \
T* pBuffer_d; \
IPSDKCUDA_CHECK_ERROR(cudaMalloc((void**)&(pBuffer_d), nbTmpData * sizeof(T))); \
T** pTmpBufData_d; \
IPSDKCUDA_CHECK_ERROR(cudaMalloc((void**)&pTmpBufData_d, sizeof(T*))); \
IPSDKCUDA_START_FREE_MEMORY_IF_ERROR() \
cudaFree(pBuffer_d); \
IPSDKCUDA_END_FREE_MEMORY_IF_ERROR() \
IPSDKCUDA_CHECK_ERROR(cudaMemcpy(pTmpBufData_d, &pBuffer_d, sizeof(T*), cudaMemcpyHostToDevice)); \
IPSDKCUDA_START_FREE_MEMORY_IF_ERROR() \
cudaFree(pBuffer_d); \
cudaFree(pTmpBufData_d); \
IPSDKCUDA_END_FREE_MEMORY_IF_ERROR() \
const T** pTmpBuf_d = const_cast<const T**>(pTmpBufData_d); \
const unsigned long nbBlocksX_strip = stripSizeX / nbThreadsPerBlockDim + (stripSizeX % nbThreadsPerBlockDim == 0 ? 0 : 1); \
const unsigned long nbBlocksY_strip = stripSizeY / nbThreadsPerBlockDim + (stripSizeY % nbThreadsPerBlockDim == 0 ? 0 : 1); \
const unsigned long nbBlocksZ_strip = 1; \
dim3 stripGridSize(nbBlocksX_strip, nbBlocksY_strip, nbBlocksZ_strip);

◆ IPSDKCUDA_START_INSITU_DATA_PARSING_2D

#define IPSDKCUDA_START_INSITU_DATA_PARSING_2D (   pNeighbourInfo_h,
  neighbourInfo_d,
  FREE_NEIGHBOURBUFFER_MACRO 
)
Value:
for (unsigned long planIdx = 0; planIdx < nbPlans; ++planIdx) { \
res = ipsdk::util::gpu::copyInputToStrip2d_knlLauncher(pLauncherInfo, planIdx, \
stripSizeX, stripSizeY, \
pNeighbourInfo_h->_paddingX, pNeighbourInfo_h->_paddingY, \
0, 0, \
stripGridSize, blockSize, \
borderPolicyType, outOfImageValue, \
pBufIn, pTmpBufData_d); \
IPSDKCUDA_CHECK_KERNEL_EXEC(res) \
IPSDKCUDA_START_FREE_MEMORY_IF_ERROR() \
FREE_NEIGHBOURBUFFER_MACRO(neighbourInfo_d) \
cudaFree(pBuffer_d); \
cudaFree(pTmpBufData_d); \
IPSDKCUDA_END_FREE_MEMORY_IF_ERROR() \
for (unsigned long curLineGridIdx = 0; curLineGridIdx < nbLineGridsInImg; ++curLineGridIdx) { \
const unsigned long gridOffsetY = curLineGridIdx * gridSizeY;

◆ IPSDKCUDA_START_INSITU_DATA_PARSING_2D_WITH_PADDING

#define IPSDKCUDA_START_INSITU_DATA_PARSING_2D_WITH_PADDING (   paddingX,
  paddingY 
)
Value:
for (unsigned long planIdx = 0; planIdx < nbPlans; ++planIdx) { \
res = ipsdk::util::gpu::copyInputToStrip2d_knlLauncher(pLauncherInfo, planIdx, \
stripSizeX, stripSizeY, \
paddingX, paddingY, \
0, 0, \
stripGridSize, blockSize, \
borderPolicyType, outOfImageValue, \
pBufIn, pTmpBufData_d); \
IPSDKCUDA_CHECK_KERNEL_EXEC(res) \
IPSDKCUDA_START_FREE_MEMORY_IF_ERROR() \
cudaFree(pTmpBufData_d); \
cudaFree(pBuffer_d); \
IPSDKCUDA_END_FREE_MEMORY_IF_ERROR() \
for (unsigned long curLineGridIdx = 0; curLineGridIdx < nbLineGridsInImg; ++curLineGridIdx) { \
const unsigned long gridOffsetY = curLineGridIdx * gridSizeY;

◆ IPSDKCUDA_START_INSITU_DATA_PARSING_3D

#define IPSDKCUDA_START_INSITU_DATA_PARSING_3D (   pNeighbourInfo_h,
  neighbourInfo_d,
  FREE_NEIGHBOURBUFFER_MACRO 
)
Value:
for (unsigned long volumeIdx = 0; volumeIdx < nbVolumes; ++volumeIdx) { \
res = ipsdk::util::gpu::copyInputToStrip3d_knlLauncher(pLauncherInfo, volumeIdx, \
stripSizeX, stripSizeY, stripSizeZ, \
pNeighbourInfo_h->_paddingX, \
pNeighbourInfo_h->_paddingY, \
pNeighbourInfo_h->_paddingZ, \
0, 0, stripGridSize, blockSize, \
borderPolicyType, outOfImageValue, \
pBufIn, pTmpBufData_d); \
IPSDKCUDA_CHECK_KERNEL_EXEC(res) \
IPSDKCUDA_START_FREE_MEMORY_IF_ERROR() \
FREE_NEIGHBOURBUFFER_MACRO(neighbourInfo_d) \
for (unsigned long z = 0; z < stripSizeZ; ++z) \
cudaFree(vBuffers_h[z]); \
cudaFree(pTmpBufData_d); \
IPSDKCUDA_END_FREE_MEMORY_IF_ERROR() \
for (unsigned long curBlockPlanIdx = 0; curBlockPlanIdx < nbBlockPlansInVolume; ++curBlockPlanIdx) { \
const unsigned long planOffset = curBlockPlanIdx * blockSizeZ;

◆ IPSDKCUDA_START_INSITU_DATA_PARSING_3D_WITH_PADDING

#define IPSDKCUDA_START_INSITU_DATA_PARSING_3D_WITH_PADDING (   paddingX,
  paddingY,
  paddingZ 
)
Value:
for (unsigned long volumeIdx = 0; volumeIdx < nbVolumes; ++volumeIdx) { \
res = ipsdk::util::gpu::copyInputToStrip3d_knlLauncher(pLauncherInfo, volumeIdx, \
stripSizeX, stripSizeY, stripSizeZ, \
paddingX, paddingY, paddingZ, \
0, 0, stripGridSize, blockSize, \
borderPolicyType, outOfImageValue, \
pBufIn, pTmpBufData_d); \
IPSDKCUDA_CHECK_KERNEL_EXEC(res) \
IPSDKCUDA_START_FREE_MEMORY_IF_ERROR() \
for (unsigned long z = 0; z < stripSizeZ; ++z) \
cudaFree(vBuffers_h[z]); \
cudaFree(pTmpBufData_d); \
IPSDKCUDA_END_FREE_MEMORY_IF_ERROR() \
for (unsigned long curBlockPlanIdx = 0; curBlockPlanIdx < nbBlockPlansInVolume; ++curBlockPlanIdx) { \
const unsigned long planOffset = curBlockPlanIdx * blockSizeZ;

◆ IPSDKCUDA_END_INSITU_DATA_PARSING_2D

#define IPSDKCUDA_END_INSITU_DATA_PARSING_2D (   pNeighbourInfo_h,
  neighbourInfo_d,
  FREE_NEIGHBOURBUFFER_MACRO 
)
Value:
res = ipsdk::util::gpu::stripRollUp2d_knlLauncher(pLauncherInfo, \
pNeighbourInfo_h->_paddingX, pNeighbourInfo_h->_paddingY, \
stripSizeX, stripSizeY, \
stripGridSize, blockSize, \
planIdx, (curLineGridIdx + 1) * gridSizeY, \
borderPolicyType, outOfImageValue, \
pBufIn, pTmpBufData_d); \
IPSDKCUDA_CHECK_KERNEL_EXEC(res) \
IPSDKCUDA_START_FREE_MEMORY_IF_ERROR() \
FREE_NEIGHBOURBUFFER_MACRO(neighbourInfo_d) \
cudaFree(pTmpBuf_d); \
IPSDKCUDA_END_FREE_MEMORY_IF_ERROR() \
} \
} \
cudaFree(pTmpBuf_d);

◆ IPSDKCUDA_END_INSITU_DATA_PARSING_2D_WITH_PADDING

#define IPSDKCUDA_END_INSITU_DATA_PARSING_2D_WITH_PADDING (   paddingX,
  paddingY 
)
Value:
res = ipsdk::util::gpu::stripRollUp2d_knlLauncher(pLauncherInfo, \
paddingX, paddingY, \
stripSizeX, stripSizeY, \
stripGridSize, blockSize, \
planIdx, (curLineGridIdx + 1) * gridSizeY, \
borderPolicyType, outOfImageValue, \
pBufIn, pTmpBufData_d); \
IPSDKCUDA_CHECK_KERNEL_EXEC(res) \
IPSDKCUDA_START_FREE_MEMORY_IF_ERROR() \
cudaFree(pTmpBuf_d); \
IPSDKCUDA_END_FREE_MEMORY_IF_ERROR() \
} \
} \
cudaFree(pTmpBuf_d);

◆ IPSDKCUDA_END_INSITU_DATA_PARSING_3D

#define IPSDKCUDA_END_INSITU_DATA_PARSING_3D (   pNeighbourInfo_h,
  neighbourInfo_d,
  FREE_NEIGHBOURBUFFER_MACRO 
)
Value:
res = ipsdk::util::gpu::stripRollUp3d_knlLauncher(pLauncherInfo, \
pNeighbourInfo_h->_paddingX, \
pNeighbourInfo_h->_paddingY, \
pNeighbourInfo_h->_paddingZ, \
stripSizeX, stripSizeY, stripSizeZ, \
stripGridSize, blockSize, \
volumeIdx, planOffset + blockSizeZ, \
borderPolicyType, outOfImageValue, \
pBufIn, pTmpBufData_d); \
IPSDKCUDA_CHECK_KERNEL_EXEC(res) \
IPSDKCUDA_START_FREE_MEMORY_IF_ERROR() \
FREE_NEIGHBOURBUFFER_MACRO(neighbourInfo_d) \
for (unsigned long z = 0; z < stripSizeZ; ++z) \
cudaFree(vBuffers_h[z]); \
cudaFree(pTmpBufData_d); \
IPSDKCUDA_END_FREE_MEMORY_IF_ERROR() \
} \
} \
for (unsigned long z = 0; z < stripSizeZ; ++z) \
cudaFree(vBuffers_h[z]); \
cudaFree(pTmpBufData_d);

◆ IPSDKCUDA_END_INSITU_DATA_PARSING_3D_WITH_PADDING

#define IPSDKCUDA_END_INSITU_DATA_PARSING_3D_WITH_PADDING (   paddingX,
  paddingY,
  paddingZ 
)
Value:
res = ipsdk::util::gpu::stripRollUp3d_knlLauncher(pLauncherInfo, \
paddingX, paddingY, paddingZ, \
stripSizeX, stripSizeY, stripSizeZ, \
stripGridSize, blockSize, \
volumeIdx, planOffset + blockSizeZ, \
borderPolicyType, outOfImageValue, \
pBufIn, pTmpBufData_d); \
IPSDKCUDA_CHECK_KERNEL_EXEC(res) \
IPSDKCUDA_START_FREE_MEMORY_IF_ERROR() \
for (unsigned long z = 0; z < stripSizeZ; ++z) \
cudaFree(vBuffers_h[z]); \
cudaFree(pTmpBufData_d); \
IPSDKCUDA_END_FREE_MEMORY_IF_ERROR() \
} \
} \
for (unsigned long z = 0; z < stripSizeZ; ++z) \
cudaFree(vBuffers_h[z]); \
cudaFree(pTmpBufData_d);