爨爨爨好

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

随笔分类 -  CUDA

摘要:● nvcc 编译流程图 ● sm 是向前兼容的,高的版本号是在低版本号的基础上添加了新功能得到的,同一 compute_XY 编译的 .cu 文件仅能向后 sm_ZW 的实 GPU 版本(Z > X) ● 虚拟 GPU 完全由它提供给应用程序的一组功能或特征来定义 ● PTX 可以视为虚拟 GPU 阅读全文
posted @ 2019-02-24 23:53 爨爨爨好 阅读(516) 评论(0) 推荐(0) 编辑

摘要:▶ 参考【https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html】 ▶ nvcc 预定义的宏 __NVCC__ // 编译 C/C++/CUDA 源文件时有定义 __CUDACC__ // 编译 CUDA 源文件时有定义 _ 阅读全文
posted @ 2019-02-15 23:38 爨爨爨好 阅读(1174) 评论(0) 推荐(0) 编辑

摘要:▶ Driver API 阅读全文
posted @ 2018-08-27 16:17 爨爨爨好 阅读(262) 评论(0) 推荐(0) 编辑

摘要:▶ 统一内存编址 阅读全文
posted @ 2018-08-27 16:17 爨爨爨好 阅读(285) 评论(0) 推荐(0) 编辑

摘要:▶ 动态并行。 ● 动态并行直接从 GPU 上创建工作,可以减少主机和设备间数据传输,在设备线程中调整配置。有数据依赖的并行工作可以在内核运行时生成,并利用 GPU 的硬件调度和负载均衡。动态并行要求算法和程序要提前改进,消除递归、不规则的循环、结构或其他不适合并行的情况。 ● 动态并行的经典图 ● 阅读全文
posted @ 2018-08-27 16:16 爨爨爨好 阅读(529) 评论(0) 推荐(0) 编辑

摘要:▶ C/C++ 扩展 阅读全文
posted @ 2018-08-27 16:16 爨爨爨好 阅读(253) 评论(0) 推荐(0) 编辑

摘要:▶ 纹理内存访问补充(见纹理内存博客 http://www.cnblogs.com/cuancuancuanhao/p/7809713.html) ▶ 计算能力 ● 不同计算能力的硬件对计算特性的支持。 ● 不同计算能力的硬件技术特性(重要)。 ● 浮点运算技术标准描述(原文) ■ All comp 阅读全文
posted @ 2018-05-08 16:49 爨爨爨好 阅读(411) 评论(0) 推荐(0) 编辑

摘要:▶ 升级到 Visual Studio 2017 和 CUDA 9.1 之后,直接编译以前的 CUDA C 程序出现了如下报错: ● 那两个“应输入表达式”是读不了 <<< 和 >>> 操作符; ● 最后那个错很直接,在 host_config.h 中有下列对 Visual Studio 的版本筛选 阅读全文
posted @ 2018-05-01 11:20 爨爨爨好 阅读(8119) 评论(1) 推荐(1) 编辑

摘要:▶ 数学函数 ● 舍入函数,考虑被舍入参数有双精度浮点和单精度浮点,舍入方式有区别,舍入结果有整形、长整形和长长整形,所以共有以下舍入函数。 ● 推荐单精度浮点使用函数 rint() 系列(单指令计算),而不用函数 round() 系列(8 指令计算)。其他几个用于单精度浮点的舍入函数也是单指令计算 阅读全文
posted @ 2017-12-11 00:32 爨爨爨好 阅读(439) 评论(0) 推荐(0) 编辑

摘要:▶ 协作组,要求 cuda ≥ 9.0,一个简单的例子见 http://www.cnblogs.com/cuancuancuanhao/p/7881093.html ● 灵活调节需要进行通讯的线程组合(不一定是线程块或是线程束)的尺寸,在更多粒度上进行线程协作。 ● 协作组功能支持 CUDA 的各种 阅读全文
posted @ 2017-12-11 00:24 爨爨爨好 阅读(923) 评论(0) 推荐(0) 编辑

摘要:▶ 线程束表决函数(Warp Vote Functions) ● 用于同一线程束内各线程通信和计算规约指标。 ● 在设备代码的一个线程中调用 _all(predicate),__any(mask, predicate),__ballot(mask, predicate) 时,该线程所在的线程束中所有 阅读全文
posted @ 2017-11-15 23:09 爨爨爨好 阅读(3853) 评论(0) 推荐(0) 编辑

摘要:▶ 可缓存只读操作(Read-Only Data Cache Load Function),定义在 sm_32_intrinsics.hpp 中。从地址 adress 读取类型为 T 的函数返回,T 可以是 char,short,int,long longunsigned char,unsigned 阅读全文
posted @ 2017-11-15 21:16 爨爨爨好 阅读(856) 评论(0) 推荐(0) 编辑

摘要:▶ 纹理内存读取函数 ▶ 表面内存读写函数 阅读全文
posted @ 2017-11-12 00:32 爨爨爨好 阅读(710) 评论(0) 推荐(0) 编辑

摘要:附录 A,CUDA计算设备 附录 B,C语言扩展 ▶ 函数的标识符 ● __device__,__global__ 和 __host__ ● 宏 __CUDA_ARCH__ 可用于区分代码的运行位置. ● __noinline__ 和 __forceinlie__ ■ __device__ 函数由便 阅读全文
posted @ 2017-11-11 17:49 爨爨爨好 阅读(1025) 评论(0) 推荐(0) 编辑

摘要:▶ 图形互操作性,OpenGL 与 Direct3D 相关。(没学过,等待填坑) ▶ 版本号与计算能力 ● 计算能力(Compute Capability)表征了硬件规格,CUDA版本号表征了驱动接口和运行时接口的(软件)规格。 ● Driver API 的版本号定义在在驱动头文件中的宏 CUDA_ 阅读全文
posted @ 2017-11-11 02:34 爨爨爨好 阅读(1285) 评论(0) 推荐(0) 编辑

摘要:▶ 表面内存使用 ● 创建 cuda 数组时使用标志 cudaArraySurfaceLoadStore 来创建表面内存,可以用表面对象(surface object)或表面引用(surface reference)来对其进行读写。 ● 使用 Surface Object API ■ 涉及的结构定义 阅读全文
posted @ 2017-11-10 23:20 爨爨爨好 阅读(1585) 评论(0) 推荐(0) 编辑

摘要:▶ 纹理内存使用 ● 纹理内存使用有两套 API,称为 Object API 和 Reference API 。纹理对象(texture object)在运行时被 Object API 创建,同时指定了纹理单元。纹理引用(Tezture Reference)在编译时被 Reference API 创 阅读全文
posted @ 2017-11-10 21:27 爨爨爨好 阅读(1849) 评论(0) 推荐(0) 编辑

摘要:▶ 编程接口。参考 http://chenrudan.github.io/ ▶ Runtime API 为高层级管理接口,提供申请和释放设备内存,数据迁移,多 GPU 管理等。Driver API 为较低层级的控制接口,提供 CUDA 上下文(模拟设备主机进程),CUDA 模块(模拟设备动态加载库) 阅读全文
posted @ 2017-11-09 15:42 爨爨爨好 阅读(2176) 评论(0) 推荐(0) 编辑

摘要:▶ 使用函数 cudaMallocPitch() 和配套的函数 cudaMemcpy2D() 来使用二维数组。C 中二维数组内存分配是转化为一维数组,连贯紧凑,每次访问数组中的元素都必须从数组首元素开始遍历;而 cuda 中这样分配的二维数组内存保证了数组每一行首元素的地址值都按照 256 或 51 阅读全文
posted @ 2017-11-08 20:05 爨爨爨好 阅读(8375) 评论(0) 推荐(2) 编辑

摘要:10. 执行配置优化 ● 一个 SM中,占用率 = 活动线程的数量 / 最大可能活动线程的数量。后者保存在设备属性的 maxThreadsPerMultiProcessor 分量中(GTX1070为例,该值为2048)。较高的占用率不代表计算效率很高,但是较低的占用率意味着内存延迟严重,还有改进的空 阅读全文
posted @ 2017-11-06 15:32 爨爨爨好 阅读(564) 评论(0) 推荐(0) 编辑