CUDA 纹理的使用
CUDA 纹理的使用
纹理绑定有两种,一个是绑定到线性内存就是用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 纹理的使用相关推荐
- cuda 纹理内存texture使用时显示不是模板解决办法
按教程使用纹理内存texture时显示 texture不是模板. 网上找了半天,只知道这个报错是VS没有识别的问题,运行起来并没有实质性影响. 但是一条红线在这画着总觉得很别扭,于是就想取消它,最终给 ...
- cuda学习笔记(4)
目录 1. 纹理内存 2. 纹理内存的使用 引用 上篇文章介绍cuda常量内存的特点及使用方法.本篇记录cuda纹理内存( texture )的特点及使用方法. 1. 纹理内存 cuda编程经常要对二 ...
- 《GAMES104-现代游戏引擎:从入门到实践》-04 学习笔记
目录 <GAMES104>渲染系统课程大纲 渲染概述 游戏渲染面临的挑战 渲染流水线 着色 纹理采样(Texture Sampling) GPU的概念 SIMD and SIMT GPU ...
- CUDA C 纹理提取Texture Fetching
CUDA C 纹理提取Texture Fetching 一.参数曲面的纹理 使用纹理指定参数曲面属性. 二.CUDA C 纹理获取开发 用于计算纹理函数,根据纹理引用的各种属性返回的值的公式(请参见纹 ...
- CUDA学习日志:常量内存和纹理内存
标签: cuda常量内存纹理内存LinJM 2014-11-29 21:53 2143人阅读 评论(0) 收藏 举报 分类: 图像处理与分析(24) 版权声明:本文为博主原创文章,未经博主允许不得转载 ...
- 《CUDA By Example》【Chapter 07】纹理内存 ?
7.1 本章目标 纹理内存和常量内存一样,都是只读内存,用来减少带宽流量,提升性能. 1,了解纹理内存的特性 2,了解如何在CUDA C中使用一维纹理内存 3,了解如何在CUDA C中使用二维纹理内存 ...
- CUDA 8的混合精度编程
CUDA 8的混合精度编程 Volta和Turing GPU包含 Tensor Cores,可加速某些类型的FP16矩阵数学运算.这样可以在流行的AI框架内更快,更轻松地进行混合精度计算.要使用Ten ...
- CUDA刷新器:CUDA编程模型
CUDA刷新器:CUDA编程模型 CUDA Refresher: The CUDA Programming Model CUDA,CUDA刷新器,并行编程 这是CUDA更新系列的第四篇文章,它的目标是 ...
- CUDA 8混合精度编程
CUDA 8混合精度编程 Mixed-Precision Programming with CUDA 8 论文地址:https://devblogs.nvidia.com/mixed-precisio ...
最新文章
- Qt5.7 + VS2015 环境搭建
- python websocket server_Python Websocket服务端
- ssis mysql to server_SSIS:将表从MySQL复制到SQL Server 2008
- Phone List POJ - 3630(字典树模板题)
- 一道非常棘手的 Java 面试题:i++ 是线程安全的吗
- windows开启ping功能
- 字符串处理 BestCoder Round #43 1001 pog loves szh I
- 汇编学习--7.17--键盘输入和磁盘读写
- App Store 付款方式被拒绝
- es6中 使用class里面的set和get 用法
- 创意无价,优化 百度、Bing、Duckduckgo 三大国际搜索引擎
- YYImage加载gif动态图原理
- python股票接口_股市python接口
- 【Charles】charles unknown问题解决,及手机代理设置【iOS手机】
- elasticsearch高级搜索功能多维度分享
- 视频目标检测与轨迹跟踪代码案例
- 关于meta: description HTML 标签的解释 ,SEO
- DCM4CHE实现DICOM的C-STORE --STORESCP
- 分享一个表情包gif动图制作的简单办法
- GitHub 全域数字年报:携手推动开源世界的超级协作
热门文章
- 说实话,电脑存储空间大了之后对于你的能力有很大的要求
- 深度学习表数据的工具
- 多线程中的队列不一定需要线程安全
- sortingOrder,sortingLayer
- 关于.net core http error 502.5 - process failure
- sql server的远程连接
- 18.6 负载均衡集群介绍 18.7 LVS介绍 18.8 LVS调度算法 18.9/18.10 LVS NAT模式搭建
- Struts09---验证框架
- 第五十二课、命令行参数的应用------------------狄泰软件学院
- [转]jQuery选择器总结