- 博客(14)
- 资源 (4)
- 收藏
- 关注
原创 CUDA Kepler(一) Read-Only Cache特性解析及其性能对比测试
Kepler 计算设备Kepler是NVIDIA发布的第三代CUDA计算设备的代号,这一系列产品主要有两大类:GK104和GK110,没有记错的话,GK104的运算能力是3.0,而GK110则具备了完整的Kepler架构组件,计算能力为3.5。两种计算能力的硬件在体系结构上面有一些差异,这些差异可能会在这一系列文章的后续版本中进行详细地讲解。今天我们讨论的是计算能力3.5的GK110架构新引入
2014-04-02 17:52:44
4373
7
原创 CUDA代码笔记(二) cudaOpenMP
cudaOpenMP项目展示了如何在cuda项目中运用openmp技术。该项目位于cuda samples文件夹下的0_Simple/cudaOpenMP文件夹下。在正式开始剖析代码之前,让我们先来了解一下openmp的背景知识。OpenMP根据百度百科,OpenMP是用于共享内存并行系统的多线程程序设计的一套指导性的编译处理方案。简单来讲,我们可以把OpenMP理
2013-09-23 20:34:33
6747
1
原创 CUDA代码笔记(一)SimpleMultiGPU
这一系列的文章是CUDA5.5样例代码的阅读笔记,每篇文章针对某一特定的样例代码。本篇文章所涉及的项目是simpleMultiGPU。项目所在的位置:0_Simple/simpleMultiGPU源程序的分析首先我们查看该程序的内核函数(kernel function),以了解程序中GPU所完成的核心功能:__global__ static void reduceK
2013-09-11 21:49:52
4785
原创 CUDA编程指南阅读笔记(七)
为方便起见后面的内容将按照话题来分类~异步并行执行主机和设备间并行执行 为了支持主机和设备的并行执行,CUDA提供了一些异步函数。异步是指设备在完成功能执行之前就将控制权交还给主机线程,以便主机线程继续执行。这些函数有: 1、内涵启动(Kernel Launches); 2、同一设备内存中两个地址块之间的数据传输;
2013-09-03 17:28:09
3924
原创 CUDA快速傅里叶变换(cuFFT)阅读笔记(一)
CUDA为开发人员提供了多种库,每一类库针对某一特定领域的应用,CUFFT库则是CUDA中专门用于进行傅里叶变换的函数库,这一系列的文章是博主近一段时间对cuFFT库的学习总结,主要内容是文档的译文,其间夹杂一些博主自己的理解。初学CUDA,理解有误之处在所难免,阅读本篇文章的读者如若发现请不吝指正。1. 简介 cuFFT是的全称是CUDA Fast Fourier Trans
2013-08-29 23:03:06
15507
1
翻译 数字音频重采样
1. 什么是有限带宽插值(Bandlimited Interpolation) 在数字信号处理中,作用于离散时间信号的有限带宽插值是一个得到广泛应用的基本工具。一般而言,我们所面临的问题是,给定一系列离散时间信号幅度样本,如何利用它们正确地计算出任意连续时间的样本幅度值。换句话说,我们必须能够在这些离散信号之间进行插值。由于原始信号总是被假定为有限带宽的——采样率的二
2013-08-25 17:07:09
3786
原创 CUDA编程指南阅读笔记(六)
4. CUDA C语言编程接口 接上文。4.3 CUDA C Runtime4.3.3 共享内存(Shared Memory) 共享内存是CUDA设备中非常重要的一个存储区域,有效地使用共享内存可以充分利用CUDA设备的潜能,极大提升程序性能。那么,共享内存有哪些特点呢? 1、共享内存(shared Memory)是集成在GPU处理器芯
2013-08-17 12:58:53
2462
原创 CUDA编程指南阅读笔记(五)
4. CUDA C语言编程接口 接上篇文章继续写。4.3 CUDA C Runtime CUDA C Runtime使用cudart动态链接库实现(cudart.dll或者cudart.so),运行时中所有的入口函数都以cuda为前缀。4.3.1 初始化 CUDA C Runtime函数库没有明确的初始化函数,在程序第一次调用Runt
2013-08-16 10:00:58
2443
原创 CUDA编程指南阅读笔记(四)
4. CUDA C语言编程接口 接上篇文章继续写。4.2 兼容性 1、二进制兼容性 二进制代码是设备相关的,使用NVCC编译器编译时,若指定-code选项,则会编译产生目标设备的二进制cubin对象。例如,编译时使用-code=sm_13会产生适用于计算能力1.3的二进制代码。二进制代码在CUDA计算设备上具有小版本的向前兼容性,但是在大版本上
2013-08-15 22:53:24
2225
原创 CUDA编程指南阅读笔记(三)
4. CUDA C语言编程接口 异构程序设计跟传统的串行程序设计差别是很大的,学习起来也是非常不容易的。NVIDIA非常够意思,为了简化CUDA的学习曲线,它采用了绝大多数程序员都熟悉的C语言作为其根基,CUDA C是NVIDIA为程序员提供的一类编程接口,它实际上是一个C语言的扩展,在C的基础上增加了一些新的语法和变量,并且提供了功能丰富的库函数,方便程序员使用GPU进行异构计算。
2013-08-15 18:41:31
4332
1
原创 CUDA编程指南阅读笔记(二)
3. CUDA基本概念(下)3.3 内存层次(Memory Hierarchy) 在GPU上CUDA线程可以访问到的存储资源有很多,每个CUDA线程拥有独立的本地内存(local Memory);每一个线程块(block)都有其独立的共享内存(shared memory),共享内存对于线程块中的每个线程都是可见的,它与线程块具有相同的生存时间;同时,还有一片称为全局内存(glob
2013-08-15 13:45:12
2449
原创 CUDA编程指南阅读笔记(一)
随着多核CPU和众核GPU的到来,并行编程已经得到了业界越来越多的重视,CPU-GPU异构程序能够极大提高现有计算机系统的运算性能,对于科学计算等运算密集型程序有着非常重要的意义。这一系列文章是根据《CUDA C语言编程指南》来整理的,该指南是NVIDIA公司提供的CUDA学习资料,介绍了CUDA编程最基本最核心的概念,是学习CUDA必不可少的阅读材料。初学CUDA,笔记错误之处在所难免,还请
2013-08-01 20:36:00
6206
原创 CUDA最佳实践(二)
5. 得到正解 得到正确的计算结果是我们的最初目的,但是使用CUDA这种并行编程模型是很容易出错的,这时我们就需要一些方法和工具来帮助我们验证计算结果的正确性,同时,在CUDA编程中也有一些值得我们注意的问题。5.1 正确性验证 正确性验证主要有两种方法: 1、引用比较(Reference Comparison) 引用比较的核心思想是
2013-07-30 10:28:33
2288
原创 CUDA最佳实践(一)
近期开始学习CUDA编程,需要阅读很多资料,为了便于整理复习,特将阅读笔记记录,以备后用。这一系列文章是根据NVIDIA公司官方文档《CUDA C Best Practices》的内容来进行整理的,由于笔者刚开始进行CUDA的学习,而并行语言的学习不如串行语言如C、C++那样容易入门,因此理解错误之处在所难免,欢迎读到错误的各位批评指正。1. 学习目的 CUDA是一个C语言的扩充
2013-07-29 09:44:26
2485
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人