自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 资源 (2)
  • 收藏
  • 关注

原创 CUDA学习--矩阵乘法的并行运算

1. CUDA学习步骤CPU实现 a*b = c 的矩阵乘法(矩阵尺寸是n*m的,n和m大于1000)下载 https://developer.nvidia.com/cuda-downloads,安装好cuda将cpu代码移植到cuda。将CPU值传入GPU,使用cuda计算,与cpu结果对比。优化思路1:将矩阵分块进行计算优化思路2:使用share memory进行优化优化思路3:将数

2016-08-24 22:28:26 18643 6

原创 Actors 介绍

Actor 模型为编写实时分布式系统提供了一个更高级别的抽象。开发者不再需要处理锁和线程的管理,能够更轻松的实现正确的实时并发系统。它包装了状态和动作,相互之间通过将消息放在接收者的 mailbox 中进行信息交换处理。某种程度上,actor 可以说是要求严格的一种面向对象编程模式,但使用起来其实很方便:当用actors建模一种解决方案时,想象这是一群人被赋予了子任务,在组织架构中安排他们工作方法...

2018-12-23 14:25:54 1092

原创 CUDA学习--内存处理之全局内存(5)

1. 全局内存GPU的全局内存之所以是全局的,主要是因为GPU与CPU都可以对它进行写操作。CPU主机端处理器可以通过以下三种方式对GPU上的内存进行访问:显示地阻塞传输;显示地非阻塞传输;隐式地使用零内存复制。通常的执行模型是CPU将一个数据块传输到GPU,GPU内核对其进行处理,然后再由CPU将数据块传输回主机端内存中。比较高级的模型是使用流(参考CUDA学习–CUDA流)将数据传输和内

2016-10-03 22:27:13 7522

原创 CUDA学习--内存处理之常量内存(4)

1.常量内存常量内存,顾名思义,它是只读内存。这种类型的内存要么是在编译时声明为只读内存,要么是在运行时通过主机端定义为只读内存。常量只是从GPU内存的角度而言。在编译时声明一块常量内存,需要用到const关键字。 常量内存其实只是全局内存的一种虚拟地址形式,并没有特殊保留的常量内存块。常量内存有两个特性,一个是高速缓存,另一个是它支持将单个值广播到线程束中的每个线程。但要注意的是,对于那些数据不

2016-10-03 18:58:08 5148

原创 CUDA学习--内存处理之寄存器(2)

1. 寄存器GPU上一个SM可以看成一个多线程的CPU核。一般CPU拥有二、四、八个核。但一个GPU却有N个SM核。但这里需要注意的是,所有的工作都是有SM上的SP(流处理器)处理的。每个核上SP数目不同,因此每个核支持的线程数目也会有很大的不同。事实上,一个GPU设备上的所有SM中活跃的线程数目通常数以万计。与CPU不同,GPU的每个SM(流多处理器)有上千个寄存器。CPU与GPU架构的一个主要区

2016-09-24 11:16:04 4082

原创 CUDA学习--内存处理之概述(1)

1. 高速缓存高速缓存的最大速度与缓存的大小成反比关系。一级缓存是最快的,但他的大小一般限制在16k、32k或者64k。通常每个CPU核会分配一个单独的一级缓存。二级缓存相对而言慢一些,但他更大,通常有256k~512k。二级缓存或者三级缓存一般在处理器的核之间是共享的,或者作为连接于特定处理器核的独立缓存来维护。与CPU不同,GPU主要依赖基于程序员托管的缓存或者共享内存区。在费米架构的GPU实现

2016-09-23 21:18:46 1253

原创 CUDA学习--CUDA流

1. CUDA流介绍CUDA流在加速应用程序方面起着重要的作用。CUDA流表示一个GPU操作队列,并且该队列中的操作将以指定的顺序执行。我们可以在流中添加一些操作,如核函数启动,内存复制等。将这些操作添加到流的顺序也就是他们的执行顺序。你可以将每个流视为GPU上的一个任务,并且这些任务可以并行执行。2. CUDA流的使用我们先通过在应用程序中使用单个流来说明流的用法。1) 首先,选

2016-09-06 20:59:21 18705 13

原创 CUDA学习--页锁定主机内存

1. 页锁定主机内存除了通过cudaMalloc()在GPU上分配内存,以及通过标准的C函数malloc()在主机上分配内存,CUDA运行时还提供了自己独有的机制来分配主机内存:cudaHostAlloc()。C函数malloc()将分配标准的,可分页的主机内存。而cudaHostAlloc()将分配页锁定的主机内存。页锁定的主机内存也称为固定内存或不可分页内存,它的重要属性就是:操作系统

2016-09-06 19:04:26 3264

原创 CUDA学习--图形互操作(CUDA与OpenGL的交互)

1. 为了说明OpenGL与CUDA C之间的互操作机制,我们将编写一个包含两个步骤的应用程序。第一个步骤是使用CUDA C核函数来生成图像数据。在第二步骤中,应用程序将这个数据传递给OpenGL驱动程序进行渲染。2.首先,我们要包含OpenGL和CUDA的头文件从而确保定义了正确的函数和枚举类型。我们还定义了渲染窗口的大小。#include "cuda_runtime.h"#inc

2016-08-31 20:22:47 4927 1

原创 glut与glew的配置

1. glut配置:Windows环境下的GLUT下载地址:(大小约为150k) http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip解压得到五个文件, 将glut.h放置在VC目录include下,即 【Microsoft Visual Studio安装路径\VC\includ

2016-08-29 22:24:02 3965

原创 二叉搜索树

1. 什么是二叉搜索树一棵二叉搜索树是以一棵二叉树来组织的。每个结点包括关键字key及其卫星数据,左孩子left, 右孩子right, 父节点p。二叉搜索树中的关键字key总是以满足二叉搜索树性质的方式来存储: 设x是二叉搜索树的一个结点。如果y是x左子树中的一个结点,则y.key <= x.key。如果y是x右子树中的一个结点,则y.key >= x.key。 如图,根节点的关键字为12,在其左

2016-08-12 19:35:41 320

原创 选择算法

1.问题描述在一个由n个元素组成的集合中,第i个顺序统计量是该集合中第i小的元素。例如:在一个元素集合中,最小值是第1个顺序统计量,最大值是第n个顺序统计量。用非形式化的描述来说,一个中位数是它所属集合的“中点元素”。当n为奇数时,中位数是唯一的,位于i = (n + 1) / 2处。当n为偶数时,存在两个中位数,分别位于i=n/2和i = n/2+1处。输入:一个包含n个(互异的)数的集合A和一个

2016-08-07 21:48:14 428

原创 计数排序

1.计数排序思想假设n个输入元素中的每一个都是在0到k 区间内的一个整数。对每一个输入元素x 确定小于x 的元素个数。利用这一信息,就可以直接把x 放到它在输出数组中的正确的位置上。2.计数排序实现计数排序-伪代码:FUNCTION Counting_Sort(A, B, k)let C[0, .., k] be a new arrayfor i = 0 to k C[i] = 0fo

2016-08-07 16:18:33 273

原创 快速排序

1. 快排思想快排也使用了分治的思想,分为三个过程: 1) 分解:数组A[q, ... , r]被划分为两个子数组A[p, ... , q-1] 和 A[q+1, ..., r],使得A[p, ... , q-1] 中的每一个元素都小于等于A[q] ,而A[q] 也小于等于A[q+1, ..., r] 中的每一个元素。 2) 解决:通过递归调用快排,对子数组A[p, ... , q-1] 和 A

2016-08-06 12:16:36 218

原创 堆排序

1. 堆堆是一个数组,又近似于一个完全二叉树。 如图,树上的每一个结点对应数组中的一个元素。除了最底层外,该树是完全充满的,而且是从左向右填充的。 树的根节点是A[1],给定一个下标i,我们很容易得到它的父节点,左右孩子结点的下标。PARENT(i)return i / 2LEFT(i)return 2 * iRIGHT(i)return 2 * i + 1(在计算机中,通过将i 的值左移

2016-08-03 21:17:44 339

原创 最大子数组问题

分治策略中,我们递归的求解一个问题,在每个问题中应用如下三个步骤:1. **分解** 将问题划分为一些子问题,子问题的形式与原问题一样,只是问题规模更小。

2016-08-01 10:11:45 379

原创 欢迎使用CSDN-markdown编辑器

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

2016-08-01 09:59:25 198

CUDA矩阵乘法计算

CUDA实现的矩阵乘法,运用了共享内存,纹理内存。

2016-08-26

消费者与生产者

操作系统生产者和消费者课程设计模拟设计,使用mfc对话框

2014-07-30

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除