随笔分类 -  cuda c

摘要:如下图,将多个执行相同核函数的进程通过cuda流来使他们并发执行,提升效率 这很像cpu的流水线 想让下面这个核函数执行两次,每次都是不同的参数 我们需要用到cuda的流来并发的执行提升效率 __global__ void kernel( int *a, int *b, int *c ) { int 阅读全文
posted @ 2024-03-31 11:11 拾墨、 阅读(24) 评论(0) 推荐(0)
摘要:如果不用原子操作,在进行计算直方图时会发生计算冲突 d_b[i]为h_a中数字i有几个 下面的代码将h_a全赋值为3,但d_b[3]却为1 #include<iostream> #include "cuda_runtime.h" #include "device_launch_parameters. 阅读全文
posted @ 2024-03-28 16:10 拾墨、 阅读(20) 评论(0) 推荐(0)
摘要:cuda内存模型其实概括来说就是下面三张图 双箭头代表可读可写,单箭头代表只读 1. local memory #include<iostream> #include "cuda_runtime.h" #include "device_launch_parameters.h" # define BL 阅读全文
posted @ 2024-03-21 20:26 拾墨、 阅读(87) 评论(0) 推荐(0)
摘要:归:递归 约:减小 对于一个矩阵做求和运算 若串行求和的话需要o(n)的复杂度 但若向下图这样,俩俩并行相加,只需要o(logn)的复杂度 __global__ void reduceNeighbored(int* g_idata, int* g_odata, unsigned int n) //g 阅读全文
posted @ 2024-03-20 15:25 拾墨、 阅读(72) 评论(0) 推荐(0)
摘要:不优化 对于一个m * n的矩阵a和一个n * k的矩阵b 因为最后得到一个m * k的矩阵c,那么我们可以分配m * k个线程。 在线程(i,j)里矩阵a的第i行和矩阵b的第j列进行点积运算得到c[i][j] #include<iostream> #include "cuda_runtime.h" 阅读全文
posted @ 2024-03-15 14:51 拾墨、 阅读(36) 评论(0) 推荐(0)
摘要:先看下为何需要cuda来实现gpu编程 如图所示,尽管现代cpu已经实现多核,但其和gpu相比还是要少得多。 所以一些重复的运算交给gpu,而一些逻辑运算交给cpu cpu控制逻辑,gpu来辅助运算 核函数 主机(host)通过核函数来操作gpu(device)辅助计算 需要注意的是只有核函数可以操 阅读全文
posted @ 2024-03-09 21:58 拾墨、 阅读(89) 评论(0) 推荐(0)
摘要:若线程够用 # include<iostream> #include "cuda_runtime.h" #include "device_launch_parameters.h" # define n 10 //定义成宏而不是定义成全局变量 //是因为随便定义全局变量可能会导致在调用核函数的时候发生 阅读全文
posted @ 2024-03-09 21:12 拾墨、 阅读(11) 评论(0) 推荐(0)