- 博客(16)
- 资源 (25)
- 收藏
- 关注
原创 ZED-Board从入门到精通(零):写在前面
去年10月份有幸报名参加了OpenHW2012开源硬件与嵌入式设计大赛,今年2月底顺利得到一块ZED-Board,从此步入了ZYNQ All-Programmable的世界。晒晒板子如下:ZYNQ系列SoC在单颗芯片上集成了ARM Cortex A9双核与FPGA,不仅开发软件可裁剪,而且硬件设备也可定制、自主开发,具有更大的灵活性。FPGA部分采用Xilinx Artix-7架构,被称为
2013-07-28 18:33:06 6858 4
原创 CUDA从入门到精通(十):性能剖析和Visual Profiler
入门后的进一步学习的内容,就是如何优化自己的代码。我们前面的例子没有考虑任何性能方面优化,是为了更好地学习基本知识点,而不是其他细节问题。从本节开始,我们要从性能出发考虑问题,不断优化代码,使执行速度提高是并行处理的唯一目的。 测试代码运行速度有很多方法,C语言里提供了类似于SystemTime()这样的API获得系统时间,然后计算两个事件之间的时长从而完成计时功能。在CUDA中,我们有专
2013-07-26 09:00:51 27591 16
原创 CUDA从入门到精通(九):线程通信实例
接着上一节,我们利用刚学到的共享内存和线程同步技术,来做一个简单的例子。先看下效果吧: 很简单,就是分别求出1~5这5个数字的和,平方和,连乘积。相信学过C语言的童鞋都能用for循环做出同上面一样的效果,但为了学习CUDA共享内存和同步技术,我们还是要把简单的东西复杂化(^_^)。 简要分析一下,上面例子的输入都是一样的,1,2,3,4,5这5个数,但计算过程有些变化,而且每个
2013-07-25 21:12:30 7523 7
原创 CUDA从入门到精通(八):线程通信
我们前面几节主要介绍了三种利用GPU实现并行处理的方式:线程并行,块并行和流并行。在这些方法中,我们一再强调,各个线程所进行的处理是互不相关的,即两个线程不回产生交集,每个线程都只关注自己的一亩三分地,对其他线程毫无兴趣,就当不存在。。。。 当然,实际应用中,这样的例子太少了,也就是遇到向量相加、向量对应点乘这类才会有如此高的并行度,而其他一些应用,如一组数求和,求最大(小)值,各个线程不
2013-07-25 20:03:45 8423 11
原创 CUDA从入门到精通(七):流并行
前面我们没有讲程序的结构,我想有些童鞋可能迫不及待想知道CUDA程序到底是怎么一个执行过程。好的,这一节在介绍流之前,先把CUDA程序结构简要说一下。CUDA程序文件后缀为.cu,有些编译器可能不认识这个后缀的文件,我们可以在VS2008的Tools->Options->Text Editor->File Extension里添加cu后缀到VC++中,如下图: 一个.cu文件内既包
2013-07-24 14:05:31 15387 9
原创 CUDA从入门到精通(六):块并行
同一版本的代码用了这么多次,有点过意不去,于是这次我要做较大的改动,大家要擦亮眼睛,拭目以待。 块并行相当于操作系统中多进程的情况,上节说到,CUDA有线程组(线程块)的概念,将一组线程组织到一起,共同分配一部分资源,然后内部调度执行。线程块与线程块之间,毫无瓜葛。这有利于做更粗粒度的并行。我们将上一节的代码改为块并行版本如下: #include "cuda_runtime.h"
2013-07-23 22:08:37 8951 4
原创 CUDA从入门到精通(五):线程并行
多线程我们应该都不陌生,在操作系统中,进程是资源分配的基本单元,而线程是CPU时间调度的基本单元(这里假设只有1个CPU)。将线程的概念引申到CUDA程序设计中,我们可以认为线程就是执行CUDA程序的最小单元,前面我们建立的工程代码中,有个核函数概念不知各位童鞋还记得没有,在GPU上每个线程都会运行一次该核函数。但GPU上的线程调度方式与CPU有很大不同。CPU上会有优先级分配,从高到低,
2013-07-23 21:46:35 10236 4
原创 CUDA从入门到精通(四):加深对设备的认识
前面三节已经对CUDA做了一个简单的介绍,这一节开始真正进入编程环节。首先,初学者应该对自己使用的设备有较为扎实的理解和掌握,这样对后面学习并行程序优化很有帮助,了解硬件详细参数可以通过上节介绍的几本书和官方资料获得,但如果仍然觉得不够直观,那么我们可以自己动手获得这些内容。 以第二节例程为模板,我们稍加改动的部分代码如下: // Add vectors in paralle
2013-07-23 13:17:50 11922 3
原创 CUDA从入门到精通(三):必备资料
刚入门CUDA,跑过几个官方提供的例程,看了看人家的代码,觉得并不难,但自己动手写代码时,总是不知道要先干什么,后干什么,也不知道从哪个知识点学起。这时就需要有一本能提供指导的书籍或者教程,一步步跟着做下去,直到真正掌握。一般讲述CUDA的书,我认为不错的有下面这几本: 初学者可以先看美国人写的这本《GPU高性能编程CUDA实战》,可操作性很强,但不要期望能全看懂(Ps:里面
2013-07-23 09:20:15 11182 5
原创 CUDA从入门到精通(二):第一个CUDA程序
书接上回,我们既然直接运行例程成功了,接下来就是了解如何实现例程中的每个环节。当然,我们先从简单的做起,一般编程语言都会找个helloworld例子,而我们的显卡是不会说话的,只能做一些简单的加减乘除运算。所以,CUDA程序的helloworld,我想应该最合适不过的就是向量加了。打开VS2008,选择File->New->Project,弹出下面对话框,设置如下:之后点OK,直接进入
2013-07-22 22:50:43 20382 9
原创 CUDA从入门到精通(一):环境搭建
NVIDIA于2006年推出CUDA(Compute Unified Devices Architecture),可以利用其推出的GPU进行通用计算,将并行计算从大型集群扩展到了普通显卡,使得用户只需要一台带有Geforce显卡的笔记本就能跑较大规模的并行处理程序。 使用显卡的好处是,和大型集群相比功耗非常低,成本也不高,但性能很突出。以我的笔记本为例,Geforce 610M,用Devi
2013-07-22 21:54:13 30568 12
原创 CUDA从入门到精通(零):写在前面
在老板的要求下,本博主从2012年上高性能计算课程开始接触CUDA编程,随后将该技术应用到了实际项目中,使处理程序加速超过1K,可见基于图形显示器的并行计算对于追求速度的应用来说无疑是一个理想的选择。还有不到一年毕业,怕是毕业后这些技术也就随毕业而去,准备这个暑假开辟一个CUDA专栏,从入门到精通,步步为营,顺便分享设计的一些经验教训,希望能给学习CUDA的童鞋提供一定指导。个人能力所及,错误难免
2013-07-22 21:33:02 22702 9
原创 【OpenHW参赛手记】AXI-Stream接口开发详细流程
下面讲一个例子,来加深对上面介绍内容的理解。笔者使用的软件版本为ISE 14.2。1.建立PlanAhead工程,一直到进入XPS,具体流程见官方文档CTT[1]。2.在XPS中,添加一个AXI-DMA模块,配置界面如图1所示。图1 AXI-DMA模块配置其余参数默认。SG模块如果选上,那么后面软件控制会相对复杂一些。这里不选,采用Simple模式,实现较为简单的传输。3.
2013-07-10 13:41:25 16044 40
原创 【OpenHW参赛手记】AXI-Stream接口介绍
AXI4-Stream协议是一种用来连接需要交换数据的两个部件的标准接口,它可以用于连接一个产生数据的主机和一个接受数据的从机。当然它也可以用于连接多个主机和从机。该协议支持多种数据流使用相同共享总线集合,允许构建类似于路由、宽窄总线、窄宽总线等更为普遍的互联。AXI4-Stream接口的信号线定义如图1所示[1]。比较重要的信号线有:ACLK为时钟线,所有信号都在ACLK上升沿被采样;A
2013-07-10 13:34:52 13616
原创 【OpenHW参赛手记】System Generator 与XPS连接的方法
由于项目需要用到DSP算法实现,考虑用System Generator辅助设计算法,但在参赛赠送的书里没有相关知识,需要自己动手摸索。还好在Matlab Simulink 内包含库XilinxBlocksets里右键发现了帮助文档,进入之后了解了怎么用Xilinx器件来完成算法设计,并生成网表。最重要的器件应该是Gatewayin和gatewayout,将matlab内的模块与Xilinx模块
2013-07-10 13:30:58 2026
原创 【OpenHW参赛手记】AXI初体验
去年报名参加了OpenHW2012开源硬件大赛,入围后收到了Xilinx赞助的ZED-Board。自从今年3月拿到ZED板卡,就开始体验ARM+FPGA这个神奇的架构。AXI,是PS与PL之间最佳的通信手段。Xilinx XPS中用户自定义IP核可以拥有AXI-Lite,AXI4,AXI-Stream,PLB和FSL这些接口实现和PS通信。其中AXI-Lite具有轻量级,结构简单的
2013-07-10 13:27:53 3206
SDSoC第一个工程
2015-08-08
ZED Board实现AXI-ACP通信例子
2015-08-08
ZED Board AXI-HP通信例子
2015-08-08
ZED Board上编译好的OpenCV依赖库
2014-12-04
ZED-Board从入门到精通系列(六)——Vivado+OpenRISC建立工程时修改过的源码
2014-01-26
实验例程:ZED-Board从入门到精通(三):从传统ARM开发到PS开发的转变
2013-08-16
资源:ZED-Board从入门到精通(一):ZYNQ结构简介
2013-08-10
毕业设计:代码
2011-10-13
毕业设计TMS320VC5509板子原理图
2011-10-13
正式发布:TMS320VC5509A上的无需CSL库的USB底层程序!
2011-05-13
数字通信原理仿真——2PSK调制仿真
2010-07-16
PCB设计终极目标---封装,布局,走线,覆铜
2010-05-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人