CUDA 纹理的使用

2013-01-25 10:09 阅读(2782)评论(0)

纹理绑定有两种,一个是绑定到线性内存就是用cudaMalloc();cudaMemcpy();开辟的内存空间,另一种是绑定到cudaMallocArray, cudaMemcpyToArray开辟到的二维数组或者三维数组。

先说比较简单的就是绑定到cudamalloc开辟到的内存空间。

首先是纹理声明:关于纹理的声明和绑定都要在cu文件进行,在其他文件进行会比较麻烦。

首先是开辟显存和赋值给显存。

首先是纹理声明:

1、texture<float, 1, cudaReadModeElementType> texRef;

2、为显存开辟空间,并初始化

cudaMalloc((void **)&rain_table,256*4*3);

cudaMemcpy(rain_table ,table, 256*4*3,cudaMemcpyHostToDevice);

3、纹理绑定:

cudaBindTexture(0,texRef,rain_table );

4、_在global_ kernel函数使用纹理:

vterm = tex1Dfetch(texRef, 3*index);

5、解除纹理:

cudaUnbindTexture(texRef);

cudaFree(table)

以上是一维纹理的使用,接着介绍二维纹理数组的使用:

纹理声明为二维纹理:

注:在1.x和3.x的卡使用纹理回比全局变量的要好,但2.x刚好相反,因为2.X有更大的L1缓存,所以2.x的卡建议不使用纹理,除非测出的速度要比使用全局变量的要快。

1、texture<float, 2, cudaReadModeElementType> texRef;

2、开辟显存:

cudaChannelFormatDesc channelDesc = cudaCreateChannelDesc(32, 0, 0, 0,cudaChannelFormatKindFloat);
 cudaArray* cuArray;
 cudaMallocArray(&cuArray, &channelDesc, 3, 256); //为cuArray开辟空间
 cudaMemcpyToArray(cuArray, 0, 0, table,256*3*4,     cudaMemcpyHostToDevice);

3、纹理绑定

cudaBindTextureToArray(texRef, cuArray, channelDesc);

4、使用

vterm = tex2D(texRef,  0,index);

5、解除绑定

cudaBindTextureToArray(texRef,cuArray,channelDesc);

CUDA 纹理的使用相关推荐

  1. cuda 纹理内存texture使用时显示不是模板解决办法

    按教程使用纹理内存texture时显示 texture不是模板. 网上找了半天,只知道这个报错是VS没有识别的问题,运行起来并没有实质性影响. 但是一条红线在这画着总觉得很别扭,于是就想取消它,最终给 ...

  2. cuda学习笔记(4)

    目录 1. 纹理内存 2. 纹理内存的使用 引用 上篇文章介绍cuda常量内存的特点及使用方法.本篇记录cuda纹理内存( texture )的特点及使用方法. 1. 纹理内存 cuda编程经常要对二 ...

  3. 《GAMES104-现代游戏引擎:从入门到实践》-04 学习笔记

    目录 <GAMES104>渲染系统课程大纲 渲染概述 游戏渲染面临的挑战 渲染流水线 着色 纹理采样(Texture Sampling) GPU的概念 SIMD and SIMT GPU ...

  4. CUDA C 纹理提取Texture Fetching

    CUDA C 纹理提取Texture Fetching 一.参数曲面的纹理 使用纹理指定参数曲面属性. 二.CUDA C 纹理获取开发 用于计算纹理函数,根据纹理引用的各种属性返回的值的公式(请参见纹 ...

  5. CUDA学习日志:常量内存和纹理内存

    标签: cuda常量内存纹理内存LinJM 2014-11-29 21:53 2143人阅读 评论(0) 收藏 举报 分类: 图像处理与分析(24) 版权声明:本文为博主原创文章,未经博主允许不得转载 ...

  6. 《CUDA By Example》【Chapter 07】纹理内存 ?

    7.1 本章目标 纹理内存和常量内存一样,都是只读内存,用来减少带宽流量,提升性能. 1,了解纹理内存的特性 2,了解如何在CUDA C中使用一维纹理内存 3,了解如何在CUDA C中使用二维纹理内存 ...

  7. CUDA 8的混合精度编程

    CUDA 8的混合精度编程 Volta和Turing GPU包含 Tensor Cores,可加速某些类型的FP16矩阵数学运算.这样可以在流行的AI框架内更快,更轻松地进行混合精度计算.要使用Ten ...

  8. CUDA刷新器:CUDA编程模型

    CUDA刷新器:CUDA编程模型 CUDA Refresher: The CUDA Programming Model CUDA,CUDA刷新器,并行编程 这是CUDA更新系列的第四篇文章,它的目标是 ...

  9. CUDA 8混合精度编程

    CUDA 8混合精度编程 Mixed-Precision Programming with CUDA 8 论文地址:https://devblogs.nvidia.com/mixed-precisio ...

最新文章

  1. Qt5.7 + VS2015 环境搭建
  2. python websocket server_Python Websocket服务端
  3. ssis mysql to server_SSIS:将表从MySQL复制到SQL Server 2008
  4. Phone List POJ - 3630(字典树模板题)
  5. 一道非常棘手的 Java 面试题:i++ 是线程安全的吗
  6. windows开启ping功能
  7. 字符串处理 BestCoder Round #43 1001 pog loves szh I
  8. 汇编学习--7.17--键盘输入和磁盘读写
  9. App Store 付款方式被拒绝
  10. es6中 使用class里面的set和get 用法
  11. 创意无价,优化 百度、Bing、Duckduckgo 三大国际搜索引擎
  12. YYImage加载gif动态图原理
  13. python股票接口_股市python接口
  14. 【Charles】charles unknown问题解决,及手机代理设置【iOS手机】
  15. elasticsearch高级搜索功能多维度分享
  16. 视频目标检测与轨迹跟踪代码案例
  17. 关于meta: description HTML 标签的解释 ,SEO
  18. DCM4CHE实现DICOM的C-STORE --STORESCP
  19. 分享一个表情包gif动图制作的简单办法
  20. GitHub 全域数字年报:携手推动开源世界的超级协作

热门文章

  1. 说实话,电脑存储空间大了之后对于你的能力有很大的要求
  2. 深度学习表数据的工具
  3. 多线程中的队列不一定需要线程安全
  4. sortingOrder,sortingLayer
  5. 关于.net core http error 502.5 - process failure
  6. sql server的远程连接
  7. 18.6 负载均衡集群介绍 18.7 LVS介绍 18.8 LVS调度算法 18.9/18.10 LVS NAT模式搭建
  8. Struts09---验证框架
  9. 第五十二课、命令行参数的应用------------------狄泰软件学院
  10. [转]jQuery选择器总结