![](https://img-blog.csdnimg.cn/d71432a05ae9467b847db6e192b04216.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
GPU
文章平均质量分 79
主要为CUDA学习相关笔记
Charles Ray
现就职于某半导体公司。Software Programmer
展开
-
ROCm平台及HIP介绍
ROCmhttps://blog.csdn.net/JackyTintin/article/details/74637157ROCm是AMD的一个软件平台,用来加速GPU计算。对标Nvidia的CUDA平台。他是用在AMD显卡上的。框架如下图:A卡上编程模型使用的是HIP或者OpenCL,而运行环境是ROCmN卡上,编程模型是CUDA,运行环境也是CUDA。ROCm与CUDA对比HIPHIP是一种编程模型,对标CUDA编程模型。HIP 可以说是 CUDA API 的”山寨克隆“版。原创 2022-04-11 14:55:58 · 12104 阅读 · 0 评论 -
CUDA学习笔记 —— (十)常用工具 cuda-gdb 及 nvprof
https://blog.csdn.net/weixin_33509203/article/details/116841609https://blog.csdn.net/darren817/article/details/80894297nvcc -g -G XXX.cu -o XXX编译程序的时候我们使用nvcc编译器,将其编译成可调式版本;-g 表示将CPU代码(host)编译成可调式版本,-G表示将GPU代码(kernel)编译成可调式版本。cuda-gdbset cuda software原创 2022-04-11 17:32:10 · 3980 阅读 · 0 评论 -
CUDA 学习笔记 —— (九)Stream详解
异步并发执行异步调用:即使GPU没有计算完,也会直接返回给host线程。比如:kernel函数启动device中的memory copymemory copy从host 到 device,在memory小于64K时带Async后缀的函数内存设置函数的调用Streamshttps://zhuanlan.zhihu.com/p/51402722https://blog.csdn.net/dcrmg/article/details/55107518为何使用stream用到CUDA的程序原创 2022-04-08 14:49:45 · 4906 阅读 · 4 评论 -
CUDA 学习笔记 —— (八)内存模型
[[toc]内存模型内存种类一个SM中有一个shared memory,这个时一个block中所有线程都可访问的。每个线程有自己的local memory和一组寄存器。所有的block都可以访问一个叫做global memory和一个constant memory(只读),和一个纹理寄存器(只读)。速度从快到慢Register fileShared MemoryConstant MemoryTexture Memory(Tie) Local Memory and Global M原创 2022-03-31 09:47:26 · 1397 阅读 · 0 评论 -
CUDA学习笔记 —— (七)通信机制(同步函数)
文章目录host和device间的同步同步函数其他同步函数host和device间的同步host和device之间的数据拷贝可以使用cudaMemcpy()比如cudaMemcpy(d_x, x, N*sizeof(float), cudaMemcpyHostToDevice);cudaMemcpy(d_y, y, N*sizeof(float), cudaMemcpyHostToDevice);saxpy<<<(N+255)/256, 256>>>(N,原创 2022-04-05 20:12:51 · 3256 阅读 · 0 评论 -
CUDA学习笔记 —— (六)程序计时器Events
文章目录程序计时CPU计时器使用CUDA Events来计时Event来记录特定streamhttps://developer.nvidia.com/blog/how-implement-performance-metrics-cuda-cc/程序计时CPU计时器cudaMemcpy(d_x, x, N*sizeof(float), cudaMemcpyHostToDevice);cudaMemcpy(d_y, y, N*sizeof(float), cudaMemcpyHostToDevice)原创 2022-04-05 20:12:35 · 1337 阅读 · 0 评论 -
CUDA学习笔记 —— (五)GPU属性与错误处理
文章目录设备属性例子设备属性列表多GPUCUDA错误处理异步错误https://docs.nvidia.com/cuda/cuda-runtime-api/structcudaDeviceProp.html#structcudaDeviceProp设备属性例子我们通过得到设备属性来计算当前GPU设备的内存带宽#include <stdio.h> int main() { int nDevices; cudaGetDeviceCount(&nDevices);原创 2022-04-08 14:55:39 · 756 阅读 · 0 评论 -
CUDA 学习笔记 —— (四)block和thread
blocks和threads// Kernel definition// Run on GPU__global__ void add(int *a, int *b, int *c){// blockIdx.x is the index of the block.// Each block has blockDim.x threads.// threadIdx.x is the index of the thead.// Each thread can perform 1 addition.原创 2022-03-31 09:46:26 · 1516 阅读 · 0 评论 -
CUDA学习笔记 —— (三)GPU计算性能与线程关系
文章目录概述CPU运行GPU运行单线程GPU 1block 多线程运行多block多线程结果比对概述我们通过一个例子,相同的计算,我们分别在CPU,GPU单线程,GPU单block多线程,GPU多block多线程来运行对比。看GPU是如何大幅提升运算能力的。参考文章https://developer.nvidia.com/blog/even-easier-introduction-cuda/CPU运行一个最简单的例子:将两个数组中的元素相加放到第二个数组中。我们使用CPU来运行#include原创 2022-04-01 09:57:51 · 3083 阅读 · 0 评论 -
CUDA学习笔记 —— (二)CUDA模型及硬件对应关系
CUDA 模型与GPU硬件对应原创 2022-04-02 11:26:50 · 3661 阅读 · 0 评论 -
CUDA 学习笔记 —— (一)CUDA介绍及编程流程
文章目录一个示例编程过程:1. 定义kernel函数2. 分配和初始化host上的内存数据3. 在device上分配内存,并将host数据拷贝到device4. 激活kernel函数5. 将kernel执行输出的结果拷贝回host和清理6. 整合代码模型介绍CUDA 逻辑模型GPU物理模型运行模型SM层面内存模型内存种类shared Memory静态共享内存动态共享内存blocks和threads线程和共享内存一个示例编程过程:定义kernel函数分配和初始化host上的内存数据分配和初始化de原创 2022-03-31 09:45:24 · 1759 阅读 · 0 评论 -
WSL安装CUDA并成功运行
https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=18.04&target_type=deb_localwget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pi原创 2022-04-06 10:44:12 · 17567 阅读 · 16 评论 -
windows10搭建CUDA环境并运行示例
文章目录1. 配置检查2. 安装vs3. 安装CUDA4. 检测CUDA是否安装成功5. 配置VS开发环境运行CUDA1. 配置检查我的笔记本配置是windows 10 + nvida geforce MX350进入cmd输入nvidia-smi 就可以查看到当前显卡支持的最低CUDA版本号可以看到支持最低11.4那么我们需要下载CUDA 11.4以上版本安装CUDA之前一定更要先安装VS。我之前就是先安装的CUDA结果VS找不到CUDA依赖。2. 安装vs我下载的是社区版是免费的,原创 2022-03-25 13:58:47 · 3998 阅读 · 0 评论 -
HIP编程 —— 计算一维和二维矩阵相乘(GPU并行计算)
文章目录一维数组二维矩阵一维数组#include <stdio.h>#include <hip/hip_runtime.h>#define CHECK(cmd) \{\ hipError_t error = cmd;\ if (error != hipSuccess) { \ fprintf(stderr, "error: '%s'(%d) at %s:%d\n", hipGetErrorString(error), error,__FI原创 2022-03-28 19:58:49 · 2078 阅读 · 0 评论 -
GPU核心性能指标
内存科普CPU缓存分为三类,一级缓存(L1)、二级缓存(L2)和三级缓存(L3)。CPU在实际数据读取中重要的却是一级缓存,因为一级缓存速度最快,二级缓存其次,三级缓存最慢,只是三级缓存的容量最大。DDR1,DDR2,DDR3内存条(DDR是Double Data Rate双倍速率同步动态随机存储器的英文缩写)就是俗称的一二三代内存条。这三种内存条工艺不同,接口不同,性能不同,互不兼容。要区分它们,也不难。内存条可以用在CPU内存或者GPU显存中。比如 the NVIDIA Tesla M2050 GP原创 2022-04-08 15:19:34 · 18665 阅读 · 0 评论 -
CPU和GPU区别(GPU入门)
文章目录什么是超算:CPUGPUGPU和CPU的区别:硬件结构区别串行和并行CPU和GPU联系GPU 硬件结构线程格(Grid)线程块(Block)线程(Thread)核函数(Kernel)一些概念显存容量显存位宽什么是超算:把计算机连接在一起,获得更强大计算能力原来:串行计算现在:并行提交任务计算超算:就是一群计算机超算使用的技术:GPU技术。CPU在CPU基础上增加GPU来协助CPUCPU局限性:CPU由于物理限制,遇到了工艺上壁垒,主频无法突破。而GPU却仍在高速的增长。GP原创 2022-03-23 14:28:43 · 20496 阅读 · 4 评论