文章分类 -  CUDA转载

高性能计算
Thrust快速入门教程(三)——算法 2
摘要:ReductionsReduction算法使用二元操作将输入序列规约为一个单值。例如,需要获得一数列的和,可以通过加运算规约此数组得到。相似的,数列的最大值,可以通过由两个输入值返回一个最大值的运算子规约得到。数列的求和的规约操作可以由thrust::reduce如下实现:[cpp] view plaincopyprint?intsum=thrust::reduce(D.begin(),D.end(),(int)0,thrust::plus<int>());int sum = thrust :: reduce (D. begin () , D. end () , ( int ) 0 阅读全文
posted @ 2012-03-21 11:25 carekee 阅读(2808) 评论(0) 推荐(0) 编辑
Thrust快速入门教程(三)——算法 1
摘要:Thrust提供了丰富的常用并行算法。这算法的功能与STL中的非常相似,于是我们使用了相同的名称(例如thrust::sort 与 std::sort)。所有的Thrust算法均提供了主机端和设备端。特别指出,当转入主机端迭代器时,将会调度主机端方法,相似的,当使用设备端迭代器时将使用设备端实现。trust::copy是一个例外,他可以任意的拷贝主机端和设备端的数据。但是所有的迭代器参数必须符合算法的要求,要与之对应。当不能满足要求的时候,编译器会报错。TransformationsTransformations算法作用是用来将目标容器赋上特定值(例如零)或者特定数列。之前的例子我们已经使用过 阅读全文
posted @ 2012-03-21 11:24 carekee 阅读(3467) 评论(0) 推荐(0) 编辑
windows下正确配置CUDA 4.0环境并在Visual Studio 2008中新建工程
摘要:CUDA 4.0 已经发布了RC版本,处于网友与新人的要求,我讲解下如何配置环境与工程的问题。要完整的使用CUDA 4.0功能与开发工具,建议使用windows 7 64bit或者windows 2008 R2 64bit系统。我的电脑是win7。首先登陆到NVIDIA的开发者页面下载最新的驱动、toolkit、SDK与新增的tools SDK安装文件。首先安装驱动需要注意的是在安装过程中建议勾选"Perform a clean installtion"。下面安装toolkit完了之后就是SDK在CUDA 4.0 NV增加了一个tools SDK,最好也安装下吧,反正不大~ 阅读全文
posted @ 2012-03-21 11:24 carekee 阅读(394) 评论(0) 推荐(0) 编辑
ubuntu 10.10下安装与配置CUDA 4.0
摘要:谨以此文想给那些被Linux搞得折翼的小盆友们,当然还有我自己……首先下载驱动,toolkit 还有SDK……安装前确认这些文件都是可执行的,如果不是运行以下命令:sudo chmod a+x [文件名]然后是安装驱动的问题,估计很多人十分头疼……按下Ctrl加Alt加F1进入纯命令模式,登陆后运行以下命令关闭Gnomesudo /etc/init.d/gdm -stop然后运行驱动安装文件需要加上sudo,基本按回车就好。安装完毕后运行以下命令打开Gnomesudo /etc/init.d/gdm -start按下Ctrl加Alt加F7回到GUI下面安装SDK,依然需要root权限,记得加上 阅读全文
posted @ 2012-03-21 11:24 carekee 阅读(187) 评论(0) 推荐(0) 编辑
Thrust快速入门教程(二)——Vector的使用
摘要:Trust 提供了两个vector容器:host_vector 与 device_vector。按照命名规则,host_vector位于主机端,device_vector位于GPU设备端。Trust的vector容器与STL中的容器类似,是通用的容器,可以存储任何数据类型,可以动态调整大小。以下源代码展示如何使用Thrust的vector容器。[cpp] view plaincopyprint?#include<thrust/host_vector.h> #include<thrust/device_vector.h> #include<iostream> 阅读全文
posted @ 2012-03-21 11:23 carekee 阅读(5799) 评论(0) 推荐(1) 编辑
Thrust快速入门教程(三)——迭代器与静态调度
摘要:在这节中我们曾使用了这样的表达式,H.begin() 、H.end()、D.begin() + 7。begin()与end()的返回值在C++中被称为迭代器。vector的迭代器类似于数组的指针,用于指向数组的某个元素。H.begin()是指向H容器中数组第一个元素的迭代器。类似,H.end()指向H容器中的最后一个元素。 虽然说迭代器类似于指针,但它有着更丰富的作用。可以注意到在使用thrust::fill的时候我们并不需要指明这是device_vector的迭代器。这些信息包含在了D.begin()的返回值的迭代器类型中,其类型不同于H.begin()的返回值。当Thrust中的函数调用时 阅读全文
posted @ 2012-03-21 11:23 carekee 阅读(1515) 评论(0) 推荐(1) 编辑
如何在Visual Studio 2010中新建CUDA 4.0项目
摘要:在CUDA新版中内置了对Visual Studio 2010的支持,而且测试发现nvcc竟然对vs100编译器也给予了支持。这点在官方的简介中并没有提及。下面来看下如何在VS2010中正确配置新建一个CUDA项目。首先在正常安装CUDA toolkit和SDK后,会自动配置好IDE。如果没有可以在Toolkit的安装目录下找到下面的这些文件。 将MsBuildExtension 文件夹下的所有文件拷贝至 C:/Program Files/MSBuild/Microsoft.Cpp/v4.0/BuildCustomizations (C:/Program Files (x86)/MSBuild/ 阅读全文
posted @ 2012-03-21 11:22 carekee 阅读(638) 评论(0) 推荐(0) 编辑
Thrust快速入门教程(一)——简介
摘要:Thrust 是一个类似于STL的针对CUDA的C++模板库。Trust提供与CUDA C完全兼容的接口,可以使我们高效地编写高性能并行程序。Thrust提供了丰富的数据并行算法,例如scan、sort、reduce等,可以简单快捷地构成复杂算法,并使得代码获得更高的可读性。使用这些高度抽象的方法来表达计算,可以隐藏细节,并且Trust会自动选择最有效率的算法实现。因此,程序员得以快速构建CUDA程序,并能够获得极高的稳定性和性能与精度。此文档简述了如何使用Trust开发CUDA程序。即使你的C++与CUDA经验有限,也能够顺利学习该指导。安装与版本在安装CUDA Toolkit时,Trust 阅读全文
posted @ 2012-03-21 11:22 carekee 阅读(1040) 评论(0) 推荐(0) 编辑
CUDA 4.0中P2P与UVA的性特性使用方法
摘要:近日,CUDA 4.0已经对注册开发者开放,其中增加了不少的功能。其中P2P(Peer-to-Peer )与UVA(UnifiedVirtual Address Space )的引进最为大家关心。这里与大家一起分享下SDK中的simpleP2P这个例子,他展示了如何使用这两个功能。 代码如下: [cpp] view plaincopyprint?/**Copyright1993-2011NVIDIACorporation.Allrightsreserved.**PleaserefertotheNVIDIAenduserlicenseagreement(EULA)associated*witht 阅读全文
posted @ 2012-03-21 11:21 carekee 阅读(1891) 评论(0) 推荐(0) 编辑


点击右上角即可分享
微信分享提示