这是这个问题的后续,我试图在其中实现具有周期性边界条件的 3D 直接卷积。
在社区的帮助下,我能够将性能提高约 50%(非常感谢社区):
int mod(int a, int b)
{
if (a<0)
return a + b;
else if (a >= b)
return a - b;
else
return a;
}
void convolve(const double *image, const double *kernel, const int imageDimX, const int imageDimY,
const int imageDimZ, const int kernelDimX, const int kernelDimY, const int kernelDimZ, double *result)
{
int imageSize = imageDimX * imageDimY * imageDimZ;
int kernelSize = kernelDimX * kernelDimY * kernelDimZ;
int i, j, k, …
Run Code Online (Sandbox Code Playgroud)