摘要: 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... 阅读全文
posted @ 2017-08-24 15:06 Jason&Hymer 阅读(799) 评论(0) 推荐(0) 编辑
摘要: 可以在CUDA C核函数中直接访问这种类型的主机内存。由于这种内存不需要复制到GPU,因此也称为零拷贝内存。 阅读全文
posted @ 2017-08-12 10:52 Jason&Hymer 阅读(2591) 评论(0) 推荐(0) 编辑
摘要: 如果同时调度某个流的所有操作,那么很容易在无意中阻塞另一个流的复制操作或者核函数执行。要解决这个问题,在将操作放入流的队列时应采用宽度优先方式,而非深度优先方式。 阅读全文
posted @ 2017-08-11 22:10 Jason&Hymer 阅读(1581) 评论(0) 推荐(0) 编辑
摘要: malloc()分配的内存与cudaHostAlloc()分配的内存之间存在着一个重要差异。C库函数malloc()将分配标准的,可分页的(Pagable)主机内存,而cudaHostAlloc()将分配页锁定的主机内存。页锁定内存也称为固定内存(Pinned Memory)或者不可分页内存,它有一 阅读全文
posted @ 2017-08-11 17:32 Jason&Hymer 阅读(980) 评论(0) 推荐(0) 编辑
摘要: 直方图概念:给定一个包含一组元素的数据集,直方图表示每个元素的出现频率。 一、在CPU上计算直方图 二、在GPU上使用全局内存原子操作计算直方图 在GPU上运行时间比在CPU上运行时间长,性能不理想。 三、在GPU上使用共享内存原子操作计算直方图 运行时间缩短很多,性能提升明显。 阅读全文
posted @ 2017-08-11 15:09 Jason&Hymer 阅读(2281) 评论(0) 推荐(0) 编辑
摘要: 1 #include 2 int a[101], n; 3 4 void quickSort(int left, int right){ 5 int i, j, t, temp; 6 if (left > right) 7 return; 8 9 temp = a[left]; 10 i = left; 11 j =... 阅读全文
posted @ 2017-08-09 18:15 Jason&Hymer 阅读(255) 评论(0) 推荐(0) 编辑
摘要: 冒泡排序的复杂度为O(N^2)。 阅读全文
posted @ 2017-08-09 14:46 Jason&Hymer 阅读(354) 评论(0) 推荐(0) 编辑
摘要: 1 #include 2 3 int main(void){ 4 int book[1001], i, j, t,n; 5 for (i = 0; i = 0; i--) 13 for (j = 1; j <= book[i]; j++){ 14 printf("%d ", i); 15 } 16 ge... 阅读全文
posted @ 2017-08-08 23:09 Jason&Hymer 阅读(373) 评论(0) 推荐(0) 编辑
摘要: 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... 阅读全文
posted @ 2017-08-08 22:30 Jason&Hymer 阅读(859) 评论(0) 推荐(0) 编辑
摘要: 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... 阅读全文
posted @ 2017-08-08 11:30 Jason&Hymer 阅读(485) 评论(0) 推荐(0) 编辑