我最近将我的算法的表面参考更改为表面对象。然后,我注意到程序运行速度较慢。
这是一个简单示例的比较,其中我用常量值填充 3D 浮动数组 [400*400*400]。
表面参考 API
时间:9.068928 毫秒
surface<void, cudaSurfaceType3D> s_volumeSurf;
...
surf3Dwrite(value, s_volumeSurf, px*sizeof(float), py, pz, cudaBoundaryModeTrap);
表面对象 API
时间:14.960256 毫秒
cudaSurfaceObject_t l_volSurfObj;
...
surf3Dwrite(value, l_volSurfObj, px*sizeof(float), py, pz, cudaBoundaryModeTrap);
这是在具有 Compute Capability 3.0 和 CUDA 5.0 的 GTX 680 上进行测试的。
有人对这种差异有解释吗?