
GPU
文章平均质量分 89
卜居
爱好:玩游戏,发呆
技能:CUDA,C/C++,Caffe/TensorFlow/PyTorch
展开
-
CUDA从入门到精通(零):写在前面
在老板的要求下,本博主从2012年上高性能计算课程开始接触CUDA编程,随后将该技术应用到了实际项目中,使处理程序加速超过1K,可见基于图形显示器的并行计算对于追求速度的应用来说无疑是一个理想的选择。还有不到一年毕业,怕是毕业后这些技术也就随毕业而去,准备这个暑假开辟一个CUDA专栏,从入门到精通,步步为营,顺便分享设计的一些经验教训,希望能给学习CUDA的童鞋提供一定指导。个人能力所及,错误难免原创 2013-07-22 21:33:02 · 23215 阅读 · 9 评论 -
TensorFlow 从入门到精通(六):tensorflow.nn 详解
看过前面的例子,会发现实现深度神经网络需要使用 tensorflow.nn 这个核心模块。我们通过源码来一探究竟。# Copyright 2015 Google Inc. All Rights Reserved.## Licensed under the Apache License, Version 2.0 (the "License");# you may not use this fil原创 2016-05-23 14:30:06 · 72217 阅读 · 12 评论 -
Caffe + CUDNN V5
在今年 GTC 上,NVIDIA 推出的 NVIDIA Deep Learning SDK 中,cuDNN 赫然在列。与之比肩的还有 DIGITS, cuBLAS, cuSPARSE, NCCL 等。从 2014 年推出 第一个版本,到如今 cuDNN 已经连续发布 5 个版本。目前 cuDNN v5 的最新特性有:(1) 支持递归神经网络( LSTM / GRU / RNN );(2) cudn...原创 2016-04-15 18:05:57 · 17693 阅读 · 14 评论 -
TensorFlow 从入门到精通(四):CIFAR10 多 GPU 版本例程源码分析
# Copyright 2015 Google Inc. All Rights Reserved.## Licensed under the Apache License, Version 2.0 (the "License");# you may not use this file except in compliance with the License.# You may obtai原创 2016-05-22 23:18:13 · 17306 阅读 · 0 评论 -
TensorFlow 从入门到精通(三):ImageNet 例程源码分析
# Copyright 2015 Google Inc. All Rights Reserved.## Licensed under the Apache License, Version 2.0 (the "License");# you may not use this file except in compliance with the License.# You may obtai原创 2016-05-22 23:17:04 · 23613 阅读 · 3 评论 -
Nvidia Pascal GPU 架构详解
本文作于 2016/12/25,作者卜居。写在前面:本文假定读者有一定 CUDA 基础。如果你对 GPU, sm_60/sm_61,CUDA 这些名词感到陌生,可以看我之前写的博客《CUDA 从入门到精通》。 1. 前言Nvidia 在今年的 GTC( GPU Technology Conference ) 上高调宣布了 Pascal 架构——专门针对每瓦性能优化的新架构,采用 16n...原创 2016-12-25 17:44:49 · 42721 阅读 · 7 评论 -
【经典回顾】Nvidia GPU 上的 CNN 计算速度变迁
笔者从 2012 年初开始接触 GPU 编程,2014 年上半年开始接触 Caffe,可以毫不谦虚地说是“一天天看着 Nvidia GPU 和 Caffe 长大的”。Nvidia GPU 架构经历了 Fermi、Kepler、Maxwell、Pascal(都是著名物理学家:特斯拉、费米、开普勒、麦克斯韦、帕斯卡、还未发布的 Volta 伏打……),硬件版本号从 1.x 到现在的 6.x,CUDA ...原创 2017-03-11 23:16:17 · 10539 阅读 · 3 评论 -
【深度学习:21 天实战 Caffe】课后习题参考答案
百度网盘已弃用。随书资源已经放在码云和 github,方便国内外朋友下载。码云:https://gitee.com/yongkezhao/PracticeCaffeIn21Daysgithub:https://github.com/zhaoyongke/Caffe21Days-------------------------------------------------------自出版以来收到...原创 2016-10-16 21:31:27 · 11856 阅读 · 13 评论 -
【深度学习:21 天实战 Caffe】Docker 镜像更新
百度网盘已弃用。随书资源已经放在码云和 github,方便国内外朋友下载。码云:https://gitee.com/yongkezhao/PracticeCaffeIn21Daysgithub:https://github.com/zhaoyongke/Caffe21Days----------------------------------------------------------不少读者...原创 2016-11-15 20:30:17 · 8199 阅读 · 12 评论 -
TensorFlow 从入门到精通(二):MNIST 例程源码分析
MNIST 例程源码分析原创 2016-05-22 22:32:48 · 39139 阅读 · 12 评论 -
TensorFlow 从入门到精通(八):TensorFlow tf.nn.conv2d 一路追查
读者可能还记得本系列博客(二)和(六)中 tf.nn 模块,其中最关心的是 conv2d 这个函数。首先将博客(二) MNIST 例程中 convolutional.py 关键源码列出: def model(data, train=False): """The Model definition.""" # 2D convolution, with 'SAME' p原创 2016-06-08 13:13:55 · 37429 阅读 · 14 评论 -
CUDA从入门到精通(九):线程通信实例
接着上一节,我们利用刚学到的共享内存和线程同步技术,来做一个简单的例子。先看下效果吧: 很简单,就是分别求出1~5这5个数字的和,平方和,连乘积。相信学过C语言的童鞋都能用for循环做出同上面一样的效果,但为了学习CUDA共享内存和同步技术,我们还是要把简单的东西复杂化(^_^)。 简要分析一下,上面例子的输入都是一样的,1,2,3,4,5这5个数,但计算过程有些变化,而且每个原创 2013-07-25 21:12:30 · 7650 阅读 · 7 评论 -
CUDA从入门到精通(八):线程通信
我们前面几节主要介绍了三种利用GPU实现并行处理的方式:线程并行,块并行和流并行。在这些方法中,我们一再强调,各个线程所进行的处理是互不相关的,即两个线程不回产生交集,每个线程都只关注自己的一亩三分地,对其他线程毫无兴趣,就当不存在。。。。 当然,实际应用中,这样的例子太少了,也就是遇到向量相加、向量对应点乘这类才会有如此高的并行度,而其他一些应用,如一组数求和,求最大(小)值,各个线程不原创 2013-07-25 20:03:45 · 8695 阅读 · 11 评论 -
CUDA从入门到精通(七):流并行
前面我们没有讲程序的结构,我想有些童鞋可能迫不及待想知道CUDA程序到底是怎么一个执行过程。好的,这一节在介绍流之前,先把CUDA程序结构简要说一下。CUDA程序文件后缀为.cu,有些编译器可能不认识这个后缀的文件,我们可以在VS2008的Tools->Options->Text Editor->File Extension里添加cu后缀到VC++中,如下图: 一个.cu文件内既包原创 2013-07-24 14:05:31 · 15658 阅读 · 9 评论 -
CUDA从入门到精通(六):块并行
同一版本的代码用了这么多次,有点过意不去,于是这次我要做较大的改动,大家要擦亮眼睛,拭目以待。 块并行相当于操作系统中多进程的情况,上节说到,CUDA有线程组(线程块)的概念,将一组线程组织到一起,共同分配一部分资源,然后内部调度执行。线程块与线程块之间,毫无瓜葛。这有利于做更粗粒度的并行。我们将上一节的代码改为块并行版本如下: #include "cuda_runtime.h"原创 2013-07-23 22:08:37 · 9119 阅读 · 4 评论 -
CUDA从入门到精通(五):线程并行
多线程我们应该都不陌生,在操作系统中,进程是资源分配的基本单元,而线程是CPU时间调度的基本单元(这里假设只有1个CPU)。将线程的概念引申到CUDA程序设计中,我们可以认为线程就是执行CUDA程序的最小单元,前面我们建立的工程代码中,有个核函数概念不知各位童鞋还记得没有,在GPU上每个线程都会运行一次该核函数。但GPU上的线程调度方式与CPU有很大不同。CPU上会有优先级分配,从高到低,原创 2013-07-23 21:46:35 · 10398 阅读 · 4 评论 -
CUDA从入门到精通(三):必备资料
刚入门CUDA,跑过几个官方提供的例程,看了看人家的代码,觉得并不难,但自己动手写代码时,总是不知道要先干什么,后干什么,也不知道从哪个知识点学起。这时就需要有一本能提供指导的书籍或者教程,一步步跟着做下去,直到真正掌握。一般讲述CUDA的书,我认为不错的有下面这几本: 初学者可以先看美国人写的这本《GPU高性能编程CUDA实战》,可操作性很强,但不要期望能全看懂(Ps:里面原创 2013-07-23 09:20:15 · 11397 阅读 · 5 评论 -
CUDA从入门到精通(一):环境搭建
NVIDIA于2006年推出CUDA(Compute Unified Devices Architecture),可以利用其推出的GPU进行通用计算,将并行计算从大型集群扩展到了普通显卡,使得用户只需要一台带有Geforce显卡的笔记本就能跑较大规模的并行处理程序。 使用显卡的好处是,和大型集群相比功耗非常低,成本也不高,但性能很突出。以我的笔记本为例,Geforce 610M,用Devi原创 2013-07-22 21:54:13 · 30799 阅读 · 12 评论 -
CUDA从入门到精通(二):第一个CUDA程序
书接上回,我们既然直接运行例程成功了,接下来就是了解如何实现例程中的每个环节。当然,我们先从简单的做起,一般编程语言都会找个helloworld例子,而我们的显卡是不会说话的,只能做一些简单的加减乘除运算。所以,CUDA程序的helloworld,我想应该最合适不过的就是向量加了。打开VS2008,选择File->New->Project,弹出下面对话框,设置如下:之后点OK,直接进入原创 2013-07-22 22:50:43 · 20608 阅读 · 9 评论 -
CUDA从入门到精通(十):性能剖析和Visual Profiler
入门后的进一步学习的内容,就是如何优化自己的代码。我们前面的例子没有考虑任何性能方面优化,是为了更好地学习基本知识点,而不是其他细节问题。从本节开始,我们要从性能出发考虑问题,不断优化代码,使执行速度提高是并行处理的唯一目的。 测试代码运行速度有很多方法,C语言里提供了类似于SystemTime()这样的API获得系统时间,然后计算两个事件之间的时长从而完成计时功能。在CUDA中,我们有专原创 2013-07-26 09:00:51 · 28890 阅读 · 16 评论 -
CUDA从入门到精通(四):加深对设备的认识
前面三节已经对CUDA做了一个简单的介绍,这一节开始真正进入编程环节。首先,初学者应该对自己使用的设备有较为扎实的理解和掌握,这样对后面学习并行程序优化很有帮助,了解硬件详细参数可以通过上节介绍的几本书和官方资料获得,但如果仍然觉得不够直观,那么我们可以自己动手获得这些内容。 以第二节例程为模板,我们稍加改动的部分代码如下: // Add vectors in paralle原创 2013-07-23 13:17:50 · 12096 阅读 · 3 评论 -
ZED-Board从入门到精通系列——插曲
去年暑假期间写了一部分ZedBoard教程,由于开学,忙着找工作,一直搁置。寒假期间准备再跟进一部分系列教程。另外有几点需要说明的是,Zynq发展很快,一年之内工具可能会发生较大变化,所以不能指望我的博客内容总是与最新的工具同步,需要开发者自己协调权衡,是采用最新的工具,还是跟着博客内容进行学习。 后面的教程主要转向Vivado开发环境,因为这是未来趋势。如果还抱着ISE、EDK不放,很可原创 2014-01-26 09:49:47 · 5933 阅读 · 0 评论 -
【深度学习:21天实战 Caffe】云盘资源更新
百度网盘已弃用。随书资源已经放在码云和 github,方便国内外朋友下载。原创 2016-08-14 16:09:41 · 45854 阅读 · 76 评论