【发布时间】:2011-02-08 03:51:13
【问题描述】:
我试图将映射为零复制的主机内存绑定到纹理,但看起来不可能。
这是一个代码示例:
float* a;
float* d_a;
cudaSetDeviceFlags(cudaDeviceMapHost);
cudaHostAlloc( (void **)&a, bytes, cudaHostAllocMapped);
cudaHostGetDevicePointer((void **)&d_a, (void *)a, 0);
texture<float, 2, cudaReadModeElementType> tex;
cudaBindTexture2D( 0, &tex, d_a, &channelDesc, width, height, pitch);
是否建议您使用固定内存并将其复制到绑定到纹理的设备内存?
【问题讨论】:
-
纹理是全局定义的吗?如果您正在从主机内存中读取纹理,也可以使用 cudaHostAllocWriteCombined
-
是的,它是全局定义的。 cudaHostAllocWriteCombined 只是通过避免缓存来提高设备端的读取效率。