CUDA
文章平均质量分 85
zbxzc
这个作者很懒,什么都没留下…
展开
-
双边滤波CUDA优化——BilateralFilter CUDA
转自:http://sangni007.blog.163.com/blog/static/174728148201481305957863/=======双边滤波概述=======双边滤波(Bilateral filter)是一种可以保边去噪的滤波器。之所以可以达到此去噪效果,是因为滤波器是由两个函数构成。一个函数是由几何空间距离决定滤波器系数。另一个由像素差值决定滤波器系数。转载 2015-06-23 16:22:06 · 4562 阅读 · 1 评论 -
CUDA从入门到精通
转自http://blog.csdn.net/kkk584520/article/details/9414191NVIDIA于2006年推出CUDA(Compute Unified Devices Architecture),可以利用其推出的GPU进行通用计算,将并行计算从大型集群扩展到了普通显卡,使得用户只需要一台带有Geforce显卡的笔记本就能跑较大规模的并行处理程序。转载 2015-06-23 19:34:07 · 1227 阅读 · 0 评论 -
Windows平台CUDA开发之前的准备工作
转自http://blog.csdn.net/carson2005/article/details/46416859CUDA是NVIDIA的GPU开发工具,目前在大规模并行计算领域有着广泛应用。windows平台上面的CUDA开发之前,最好去NVIDIA官网查看说明,然后下载相应的driver, ToolKits等等。如果你下载最新版本的CUDA7.0,里面其实已经包含了dri转载 2015-06-22 23:05:53 · 1190 阅读 · 0 评论 -
【CUDA并行编程之七】数组元素之和
现在需要求得一个数组的所有元素之和,之前感觉似乎不太可能,因为每个线程只处理一个元素,无法将所有元素联系起来,但是最近学习了一段代码可以实现,同时也对shared memory有了进一步的理解。一、C++串行实现串行实现的方法非常之简单,只要将所有元素依次相加就能够得到相应的结果,实际上我们注重的不是结果,而是运行的效率。那么代码如下:array_sum.cc:转载 2015-06-24 09:26:27 · 834 阅读 · 0 评论 -
【CUDA并行编程之六】KNN算法的并行实现
之前写了两篇文章一个是KNN算法的C++串行实现,另一个是CUDA计算向量的欧氏距离。那么这篇文章就可以说是前两篇文章的一个简单的整合。在看这篇文章之前可以先阅读前两篇文章。一、生成数据集现在需要生成一个N个D维的数据,没在一组数据都有一个类标,这个类标根据第一维的正负来进行标识样本数据的类标:Positive and Negative。[pyt转载 2015-06-24 09:23:12 · 1677 阅读 · 0 评论 -
【CUDA并行编程之八】Cuda实现Kmeans算法
本文主要介绍如何使用CUDA并行计算框架编程实现机器学习中的Kmeans算法,Kmeans算法的详细介绍在这里,本文重点在并行实现的过程。当然还是简单的回顾一下kmeans算法的串行过程:伪代码:[cpp] view plaincopy创建k个点作为起始质心(经常是随机选择) 当任意一个点的簇分配结果发生改变时转载 2015-06-24 09:27:32 · 1661 阅读 · 0 评论 -
【CUDA并行编程之三】Cuda矢量求和运算
本文将通过矢量求和运算来说明基本的Cuda并行编程的基本概念。所谓矢量求和运算,就是两个数组数据中对应的元素两两相加,并将结果保存在第三个数组中。如下图所示:1.基于CPU的矢量求和:代码非常简单:[cpp] view plaincopy#include using namespace std;转载 2015-06-24 09:15:39 · 1272 阅读 · 0 评论 -
CUDA最佳实践
转自:http://blog.csdn.net/csgxy123/article/details/9569201近期开始学习CUDA编程,需要阅读很多资料,为了便于整理复习,特将阅读笔记记录,以备后用。这一系列文章是根据NVIDIA公司官方文档《CUDA C Best Practices》的内容来进行整理的,由于笔者刚开始进行CUDA的学习,而并行语言的学习不如串行语言转载 2015-06-23 17:51:46 · 663 阅读 · 0 评论 -
CUDA简介
转自http://blog.csdn.net/carson2005/article/details/7694605随着显卡的发展,GPU越来越强大,而且GPU为显示图像做了优化。在计算上已经超越了通用的CPU。如此强大的芯片如果只是作为显卡就太浪费了,因此NVidia推出CUDA,让显卡可以用于图像渲染和计算以外的目的(例如这里提到的通用并行计算)。CUDA即Compute Unifi转载 2015-06-22 23:02:51 · 886 阅读 · 0 评论 -
CUDA编程指南阅读笔记
转自http://blog.csdn.net/csgxy123/article/category/1500471随着多核CPU和众核GPU的到来,并行编程已经得到了业界越来越多的重视,CPU-GPU异构程序能够极大提高现有计算机系统的运算性能,对于科学计算等运算密集型程序有着非常重要的意义。这一系列文章是根据《CUDA C语言编程指南》来整理的,该指南是NVIDIA公司提供的CUDA学转载 2015-06-23 17:56:47 · 889 阅读 · 0 评论 -
CUDA系列学习(一)An Introduction to GPU and CUDA
转自http://blog.csdn.net/abcjennifer/article/details/42436727本文从软硬件层面讲一下CUDA的结构,应用,逻辑和接口。分为以下章节:(一)、GPU与CPU(二)、CUDA硬件层面(三)、CUDA安装(四)、CUDA 结构与接口 4.1 Kernels转载 2015-06-22 23:12:11 · 764 阅读 · 0 评论 -
GPU基本介绍
转自http://blog.csdn.net/carson2005/article/details/7636136基本概念:GPU: Graphic Processing Unit;图形处理单元;GPGPU: General Purpose computations on GPU;通用计算图形处理单元;CPU与GPU的相同点:(1)都是计算机体系转载 2015-06-22 22:56:44 · 662 阅读 · 0 评论 -
【CUDA并行编程之五】计算向量的欧式距离
本文将介绍如何用cuda来计算两个向量之间的欧式距离,其中涉及到了如果将二维矩阵传入到核函数进行计算的问题,并且介绍两个内存分配和拷贝的API:cudaMallocPitch以及cudaMemcpy2D。一、需求分析现在我们要解决这么一个问题:计算一个D维的向量A[D]到二维矩阵B[N][D]的每一行的欧式距离,并且将每一组距离保存在一个向量dis[N]中并返回。我们还转载 2015-06-24 09:21:38 · 2413 阅读 · 0 评论 -
【CUDA并行编程之四】矩阵相乘
前面介绍了基本的Cuda编程的相关知识,那么这一篇在此基础之上来看看GPU在处理数据计算上的高效能,我们拿矩阵相乘来作为例子。1.CPU上执行矩阵相乘以及性能。在CPU上进行矩阵相乘运算的代码:mat_mul.cc:[cpp] view plaincopy//a[i]*b[i] + c[i] = d[i]转载 2015-06-24 09:18:10 · 729 阅读 · 0 评论 -
【Cuda并行编程之二】Cuda Memory Hierarchy_Cuda内存层次结构
要想编写高效的程序,那么一定要对内存结构有比较深刻的认识,就像C/C++里面的堆内存,栈内存,全局存储区,静态存储区,常量区等。Cuda是并行计算框架,而GPU的内存有限,那么如果想编写高效的Cuda程序,首先要对其内存结构有一个简单的认识。首先我们先上一张图,然后通过解释一些名词和代码来进行解释。各种存储器比较:存储器 位置拥有转载 2015-06-24 09:13:52 · 808 阅读 · 0 评论 -
【Cuda并行编程之一】二分查找的探究以及Cuda的简单实现&&相关面试题介绍
最近开始复习基础找工作,二分查找算是最基本而且十分重要的算法了,现在完整的解析一下,作为后面复习只用。内容分为几个部分:一、二分查找的基本过程折半查找技术,又称为二分查找。它的前提条件是线性表中的记录必须是关键码有序(通常从小到大排序),线性表必须采用顺序存储。折半查找的基本思想是:在有序表中,取中间记录作为比较对象,如果给定值与中间记录的关键字相等,则查找成功;若给定值小于中间记转载 2015-06-24 09:11:25 · 1458 阅读 · 0 评论 -
CUDA编程接口:共享存储器实现矩阵相乘
转自http://cuda.it168.com/a2011/1207/1285/000001285186.shtml正如在前面的文章提到的,共享存储器应当比全局存储器更快,详细内容将在后续文章中介绍。任何用访问共享存储器取代访问全局存储器的机会应当被发掘,如下面的矩阵相乘例子展示的那样。 下面的代码是矩阵相乘的一个直接的实现,没有利用到共享存储器。每个线程读入A的一行和B的一列,然后计算C中对转载 2015-06-23 23:28:06 · 755 阅读 · 0 评论 -
CUDA学习
转自CUDA学习之一CUDA 的核心有三个重要抽象概念:线程组层次结构、共享存储器、屏蔽同步(barrier synchronization),可轻松将其作为 C 语言的最小扩展级公开给程序员。GPU 专用于解决可表示为数据并行计算的问题——在许多数据元素上并行执行的程序,具有极高的计算密度(数学运算与存储器运算的比率)。由于所有数据元素都执行相同的程序,因此对精密流控制的要求不高转载 2015-06-23 22:15:03 · 2888 阅读 · 0 评论