随笔分类 - CUDA
摘要:1 #include 2 #include 3 #include 4 #include 5 #include 6 7 #define THREAD_NUM 256 8 #define MATRIX_SIZE 1000 9 const int blocks_num = MATRIX_SIZE * (MATRIX_SIZE + THREAD_NUM - 1) / THR...
阅读全文
摘要:可以在CUDA C核函数中直接访问这种类型的主机内存。由于这种内存不需要复制到GPU,因此也称为零拷贝内存。
阅读全文
摘要:如果同时调度某个流的所有操作,那么很容易在无意中阻塞另一个流的复制操作或者核函数执行。要解决这个问题,在将操作放入流的队列时应采用宽度优先方式,而非深度优先方式。
阅读全文
摘要:malloc()分配的内存与cudaHostAlloc()分配的内存之间存在着一个重要差异。C库函数malloc()将分配标准的,可分页的(Pagable)主机内存,而cudaHostAlloc()将分配页锁定的主机内存。页锁定内存也称为固定内存(Pinned Memory)或者不可分页内存,它有一
阅读全文
摘要:直方图概念:给定一个包含一组元素的数据集,直方图表示每个元素的出现频率。 一、在CPU上计算直方图 二、在GPU上使用全局内存原子操作计算直方图 在GPU上运行时间比在CPU上运行时间长,性能不理想。 三、在GPU上使用共享内存原子操作计算直方图 运行时间缩短很多,性能提升明显。
阅读全文
摘要:1 #include 2 #include 3 #include 4 #include 5 #define imin(a,b) (a> >(dev_a, dev_b, dev_partial_c); 75 76 //将数组'c'从GPU复制到CPU 77 HANDLE_ERROR(cudaMemcpy(partial_c, dev_partia...
阅读全文
摘要:1 #include 2 #include 3 #include 4 #include 5 #include 6 #define N (33 * 1024) 7 8 __global__ void add(int *a, int *b, int *c){ 9 int tid = threadIdx.x + blockIdx.x * blockDim.x; 1...
阅读全文
摘要:1 #include <stdio.h> 2 #include <cuda_runtime.h> 3 #include <device_launch_parameters.h> 4 #include "book.h" 5 #include "gputimer.h" 6 7 __global__ vo
阅读全文
摘要:1 #include 2 #include "gputimer.h" 3 #include "cuda_runtime.h" 4 #include "device_launch_parameters.h" 5 #include 6 7 const int N = 1024; 8 const int K = 32; 9 10 void fill_matrix(float ...
阅读全文
摘要:题目:在长方形布局的方式中,每个线程块的X轴方向上开启了32个线程,Y轴方向上开启了4个线程。在线程网格上,X轴方向上有1个线程块,Y轴方向有4个线程块。计算在X轴方向和Y轴方向上的线程块索引与线程索引等一些信息。
阅读全文
摘要:在学习用CUDA做并行计算,过程中遇到了一些坑,在此记录一下。 1. Visual Studio Community 2013试用到期后,页面一直提示试用到期,关闭后就直接退出Visual Studio。遇到这种问题的解决办法就是点击【Sign In】,用微软账号登陆(没有的话可以注册),之后就可以
阅读全文

浙公网安备 33010602011771号