我可以将表面对象绑定到CUDA数组,但未能将其绑定到2D俯角阵列。如何将一个曲面对象绑定到二维数组?
下面是一个自包含例如:(请忽略其他资源管理问题)
#include "cuda_runtime.h"
#include <stdexcept>
#include <iostream>
void throw_on_error(cudaError_t ec)
{
if (ec)
throw std::runtime_error(cudaGetErrorString(ec));
}
int main()
{
try
{
char* p;
std::size_t stride;
throw_on_error(cudaMallocPitch(&p, &stride, 8, 8));
cudaSurfaceObject_t s;
cudaResourceDesc rd = {};
rd.resType = cudaResourceTypePitch2D;
auto& data = rd.res.pitch2D;
data.devPtr = p;
data.pitchInBytes = stride;
data.width = 8;
data.height = 8;
data.desc = cudaCreateChannelDesc<char>();
throw_on_error(cudaCreateSurfaceObject(&s, &rd));
}
catch (std::exception& e)
{
std::cout << e.what();
}
return 0;
}
它打印invalid argument
,有什么不对吗?
计算能力:3.0
您的'独立示例'无法编译 – pQB 2014-10-29 11:51:34
它需要您安装CUDA SDK。 – Jamboree 2014-10-29 13:37:55
它还需要C++ 11功能支持(例如'auto'),这可能是pQB发表评论的原因。 – 2014-10-29 14:39:55