下载此文档

CUDA纹理使用方法.doc


文档分类:IT计算机 | 页数:约6页 举报非法文档有奖
1/6
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/6 下载此文档
文档列表 文档介绍
一、例子1:fluidsGL中:
(一)host端
1)声明实际纹理数据
float2 *hvfield = NULL;
float2 *dvfield = NULL;
2) 对host数据和device数据进行初始化
hvfield = (cData*)malloc(sizeof(cData) * DS);
memset(hvfield, 0, sizeof(cData) * DS);
// Allocate and initialize device data
cudaMallocPitch((void**)&dvfield, &tPitch, sizeof(cData)*DIM, DIM);
cudaMemcpy(dvfield, hvfield, sizeof(cData) * DS,
cudaMemcpyHostToDevice);
调用device端函数,建立并绑定纹理数据
setupTexture(DIM, DIM);
bindTexture(); //注意,其中将array和纹理标识texref绑定
(二)device端
1)声明纹理对象标识,以及纹理实际数据数组
texture<float2, 2> texref;
static cudaArray *array = NULL;
2)实现纹理建立、绑定函数
void setupTexture(int x, int y) {
// Wrap mode appears to be the new default
= cudaFilterModeLinear;
cudaChannelFormatDesc desc = cudaCreateChannelDesc<float2>();
cudaMallocArray(&array, &desc, y, x);
CUT_CHECK_ERROR("cudaMalloc failed");
}
void bindTexture(void) {
cudaBindTextureToArray(texref, array);
CUT_CHECK_ERROR("cudaBindTexture failed");
}
void unbindTexture(void) {
cudaUnbindTexture(texref);
CUT_CHECK_ERROR("cudaUnbindTexture failed");
}
//传入数据
void updateTexture(cData *data, size_t wib, size_t h, size_t pitch) {
cudaMemcpy2DToArray(array, 0, 0, data, pitch, wib, h, cudaMemcpyDeviceToDevice);
CUT_CHECK_ERROR("cudaMemcpy failed");
}
void deleteTexture(void) {
cudaFreeArray(array);
CUT_CHECK_ERROR("cudaFreeArray failed");
}
3)访问纹理

CUDA纹理使用方法 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数6
  • 收藏数0 收藏
  • 顶次数0
  • 上传人mh900965
  • 文件大小81 KB
  • 时间2017-12-22