CUDA
Full_Speed_Turbo
从现在开始, 从零开始.
展开
-
CUDA编程 怎样给kernel函数传入函数指针
目录核心方法模板函数指针不用模板核心方法The key to passing function pointers to CUDA kernel is to use static pointers to device pointers followed by copying the pointers to the host side. Otherwise, I am sure you will...原创 2020-03-23 11:34:36 · 1257 阅读 · 0 评论 -
CUDA计算直方图(一)原子操作 atomicAdd
目录背景使用CPU计算使用CUDA 原子操作atomicAdd背景计算直方图是图像处理和机器学习等常用的操作.对于大数据集, 使用串行算法十分浪费时间.这里使用CUDA来加速直方图的计算.对于一个较大的整数数组, 值域0~255. 求取直方图.使用CPU计算void cpuHist(Cuda8u *pHist_data, Cuda32u* pBin_data, Cuda32u arr...原创 2019-01-31 14:44:15 · 2818 阅读 · 0 评论 -
CUDA计算直方图(二) 共享内存 __shared__
共享内存共享内存是一块特殊的内存, 因为它存在于芯片上并且存取速度比全局内存快.可以在共享内存上创建一个包含256个bin的局部统计直方图,最后将所有共享内存上计算得到的统计直方图通过原子操作汇总到全局内存.这样可以节省存储直方图结果的时间.下图是GTX1050 的内存容量.分治// 共享内存.__shared__ Cuda32u d_bin_data_shared[256];...原创 2019-01-31 15:23:16 · 1019 阅读 · 1 评论 -
CUDA内存(一) 寄存器
将变量设置为局部变量, 编译器会将其放入寄存器中, 可以省去大量的内存读写操作.原创 2019-02-01 13:59:28 · 1093 阅读 · 1 评论 -
CUDA内存(二) 共享内存 shared memory
其他:CUDA内存(一) 寄存器目录共享内存使用共享内存排序:测试结果共享内存共享内存实际上是可受用户控制的一级缓存. [^1]只有当数据重复利用, 全局内存合并, 或者线程之间有共享数据时, 使用共享内存才合适.使用共享内存排序:SortArray.h#pragma once#include "Global.h"#include "device_launch_paramet...原创 2019-02-02 11:42:42 · 1201 阅读 · 0 评论 -
CUDA内存(三) 常量内存 __constant__
文章目录常量内存测试代码测试结果常量内存测试代码ConstMem.h#pragma once#include "Global.h"#include <stdio.h>#include <stdlib.h>#include <conio.h>#include <assert.h&am原创 2019-02-15 08:27:54 · 1848 阅读 · 0 评论 -
CUDA内存(五) 纹理内存
文章目录纹理内存的特性API最简单的用法:例子分析:Simpletexture1. 声明CUDA数组之前,必须先用结构体channelDesc描述CUDA数组中的数据类型。2. 声明纹理参照系3.设置运行时纹理参照系属性4. 纹理绑定5 纹理拾取纹理内存的特性纹理内存缓存在芯片上,因此在某些情况中,它能够减少对内存的请求并提供更高效的内存带宽。纹理缓存是专门为那些在内存访问模式中存在大量空间局...转载 2019-02-18 14:54:53 · 853 阅读 · 0 评论 -
CUDA内存(四) 全局内存
文章目录全局内存合并访问测试结果全局内存合并访问struc_add.h#pragma once#include "Global.h"#include <stdio.h>#include <stdlib.h>#include <conio.h>#include <assert.h&a原创 2019-02-18 14:55:08 · 563 阅读 · 0 评论 -
VS2013 warning C4819解决方法
在使用第三方库时,经常出现warning C4819.解决方法以CUDA库为例,首先,修改文件权限。如下图。切换到有warning的头文件。菜单->文件->高级保存选项->Unicode - 代码页 1200 。最后ctrl+s保存。...原创 2019-03-03 08:55:06 · 642 阅读 · 0 评论 -
Ubuntu18.04安装TensorFlow和PyTorch全流程
目录一、准备材料二、安装Ubuntu 18.041、制作安装系统USB启动盘2、按照一般的安装双系统(单系统)的方法安装。三、安装CUDA和cuDNN1. 安装显卡驱动2. 安装CUDA3. 安装cuDNN4. 检验四、安装Python 3.6 / Anaconda1.安装python3.62. 使用Anaconda五、安装Pycharm CE/Pro1. 安装CE 社区版(免费)2. 安装Pro...原创 2019-06-26 11:54:46 · 3025 阅读 · 0 评论 -
Ubuntu 14.04 安装 CUDA8.0 cudnn 5.1 tensorflow1.2.1GPU
Ubuntu 14.04 安装 CUDA8.0 cudnn 5.1 tensorflow1.2.1GPU版本原创 2017-07-29 17:05:34 · 2530 阅读 · 0 评论 -
CUDA By Examples 7 - 测量GPU运行耗时
使用cudaEventCreate创建event;使用cudaEventRecord记录;使用cudaEventSynchronize同步, 等待GPU指令完成. 方便读time stamp.注意: a. 不能用于测量device和host的混合代码的用时; b. 只能用于测量GPU内部kernel执行指令和存储拷贝用时.原创 2017-06-28 14:37:34 · 1933 阅读 · 1 评论 -
CUDA By Examples 10 - Streams
CUDA Stream 学习总结.原创 2017-07-12 10:39:36 · 609 阅读 · 0 评论 -
CUDA By Examples 9 - 原子操作 Atomics
CUDA的原子操作原创 2017-07-04 14:53:39 · 744 阅读 · 0 评论 -
CUDA By Examples 0 - 准备工作
CUDA By Examples 一书给出的一些帮助代码. 可以直接include使用.原创 2017-05-03 09:53:41 · 1914 阅读 · 1 评论 -
CUDA By Examples 1 - 选择合适的Device
在多个GPU的情况下, 利用cudaChooseDevice函数选择符合条件的Device(GPU). 这个API很有用, 允许开发者选择合适的GPU执行程序.原创 2017-05-03 10:00:58 · 1024 阅读 · 0 评论 -
CUDA By Examples 2 - 并行计算向量相加
向量相加的并行计算编程示例原创 2017-05-03 11:10:40 · 1044 阅读 · 0 评论 -
CUDA By Examples 3 - 绘制Julia Set
使用CPU方法和CUDA方法绘制Julia Set图形.原创 2017-05-03 15:15:00 · 962 阅读 · 0 评论 -
CUDA By Examples 4 - 使用thread
使用block和thread原创 2017-06-26 10:26:04 · 572 阅读 · 0 评论 -
CUDA By Examples 5 - 共享内存 Shared Memory
a. 在变量前加上 __shared__, 此变量存储于共享内存中. 1-D或2-D都可以. b. CUDA在每一个block中都copy了一份此变量. c. 同一个block中的threads共享此内存, 但是无法读写其他block的拷贝. d. 共享内存的访问延迟远低于常见的buffer. e. 需要同步机制(synchronization)来协调threads的读写行为. 防原创 2017-06-26 15:28:44 · 3475 阅读 · 1 评论 -
CUDA By Examples 6 - 使用常量内存 Constant Memory
访问常量内存时, GPU会针对访问同一个地址的half-warp(16个threads)只读取一次此地址. 被访问的常量内存被cache, 之后的对此地址的访问可以更加快捷. 如果half-warp内的threads需要访问不同的地址, 那么这些访问就会串行进行, 速度会比使用global memory要慢. 因为访问global memory是可以并行的.原创 2017-06-28 13:44:01 · 2001 阅读 · 0 评论 -
CUDA By Examples 8 - 纹理内存Texture Memory
可以使用一维和二维纹理内存.纹理内存是只读的.原创 2017-06-28 18:56:50 · 1327 阅读 · 0 评论