CUDA
yanghangjun
南京大学电子科学与工程系
展开
-
cuda初始化代码
#include #include bool CUDA_initial(void){ int i; int device_count; if( cudaGetDeviceCount(&device_count) ) { printf(" There is zero device beyond 1.0/n"); return false; } else printf("There is原创 2010-05-13 19:35:00 · 6634 阅读 · 0 评论 -
CUDA第一个程序(只有一个线程)
#include #include #include#define TOTAL_NUM 50000bool CUDA_initial(void){ int i; int device_count; if( cudaGetDeviceCount(&device_count) ) { printf(" There is zero device beyond 1.0/n"); return fal原创 2010-05-17 12:27:00 · 1296 阅读 · 0 评论 -
CUDA第一个程序优化二(有线程块)
#include #include #include#define TOTAL_NUM 50000#define Thread_num 500#define Block_num 20bool CUDA_initial(void){ int i; int device_count; if( cudaGetDeviceCount(&device_count) ) { printf(" There i原创 2010-05-17 15:26:00 · 1154 阅读 · 0 评论 -
CPU与GPU之间数据传输
一般的数据复制到的显卡内存的部份,称为 global memory int* gpudata, *result; cudaMalloc((void**) &gpudata, sizeof(int) * DATA_SIZE); cudaMalloc((void**) &result, sizeof(int)); cudaMemcpy(gpudata, data, sizeo原创 2010-05-17 12:20:00 · 22843 阅读 · 0 评论 -
CUDA第一个程序优化(若干个线程)
#include #include #include#define TOTAL_NUM 50000#define Thread_num 500bool CUDA_initial(void){ int i; int device_count; if( cudaGetDeviceCount(&device_count) ) { printf(" There is zero device beyond原创 2010-05-17 14:27:00 · 987 阅读 · 0 评论 -
深入浅出CUDA编程
<br />CUDA 是 NVIDIA 的 GPGPU 模型,它使用 C 语言为基础,可以直接以大多数人熟悉的 C 语言,写出在显示芯片上执行的程序,而不需要去学习特定的显示芯片的指令或是特殊的结构。”<br /><br /><br />编者注:NVIDIA的GeFoce 8800GTX发布后,它的通用计算架构CUDA经过一年多的推广后,现在已经在有相当多的论文发表,在商业应用软件等方面也初步出现了视频编解码、金融、地质勘探、科学计算等领域的产品,是时候让我们对其作更深一步的了解。为了让大家更容易了解CUD转载 2010-12-10 13:29:00 · 67725 阅读 · 8 评论 -
CUDA学习笔记之 CUDA存储器模型
GPU片内:register,shared memory; 板载显存:local memory,constant memory, texture memory, texture memory,global memory; host 内存: host memory, pinned memory. <br />CUDA存储器模型:<br />GPU片内:register,shared memory;<br />板载显存:local memory,constant memory, texture memory,转载 2010-12-14 01:33:00 · 1643 阅读 · 0 评论 -
cuda3.2+vs2008环境搭建(XP篇)
<br />一、下载相应驱动、toolkit、SDK<br /> http://developer.nvidia.com/object/cuda_3_2_downloads.html<br /> <br />二、依次安装driver,toolkit,SDK<br />三、安装CUDA_VS_Wizard_W32.2.2.exe (网上一搜索就有)http://sourceforge.net/projects/cudavswizard/<br />四、设置环境变量<br /> <br />需要将SDK安原创 2011-03-01 12:49:00 · 1338 阅读 · 0 评论 -
两个矢量相加
<br />/*<br /> * Copyright 1993-2010 NVIDIA Corporation. All rights reserved.<br /> *<br /> * Please refer to the NVIDIA end user license agreement (EULA) associated<br /> * with this source code for terms and conditions that govern your use of<br /> * th转载 2011-03-07 09:55:00 · 3557 阅读 · 0 评论 -
Linpack性能测试标准
<br />Linpack现在在国际上已经成为最流行的用于测试高性能计算机系统浮点性能的benchmark。通过利用高性能计算机,用高斯消元法求解一元N次稠密线性代数方程组的测试,评价高性能计算机的浮点性能。 <br /> Linpack测试包括三类,Linpack100、Linpack1000和HPL。Linpack100求解规模为100阶的稠密线性代数方程组,它只允许采用编译优化选项进行优化,不得更改代码,甚至代码中的注释也不得修改。Linpack1000要求求解规模为1000阶的线性代数方程组,达到原创 2011-02-20 14:07:00 · 3690 阅读 · 0 评论 -
JM11.0移植到CUDA中的系统搭建
<br />直接利用CUDAWinApp创建一个空的项目。再将JM11.0中的ldecode中src inc目录下的文件拷贝到项目中,然后编译,发现链接的时候发生错误。所以右击项目,点击属性,选择链接中的输入,添加几个库就可以了。原创 2011-03-06 22:36:00 · 873 阅读 · 0 评论 -
利用分页锁定主机存储器进行主机与设备之间的0拷贝
<br />/*<br /> * Copyright 1993-2010 NVIDIA Corporation. All rights reserved.<br /> *<br /> * Please refer to the NVIDIA end user license agreement (EULA) associated<br /> * with this source code for terms and conditions that govern your use of<br /> * th原创 2011-03-07 10:23:00 · 1637 阅读 · 0 评论 -
Kernel函数书写
__global__ return_type fun_name(parameter); 对global函数进行配置对 _global_ 函数的任何调用都必须指定该调用的执行配置。执行配置定义将用于在该设备上执行函数的网格和块的维度,以及相关的流。可通过在函数名称和括号参数列表之间插入 >> 形式的表达式来指定,其中:Dg 的类型为 dim3,指定网格的维度和大小,Dg.x原创 2010-05-17 12:22:00 · 2155 阅读 · 0 评论 -
CUDA程序优化心得之测时函数的设计
近一年来,学习CUDA也算是有苦有甜,苦的是遇到问题时的无助、苦恼和迷茫,甜的是问题解决时的兴奋,今天就利用这五一的假期把自己的经验结合CUDA优化的内容写下来,希望对于那些依旧在其中挣扎的同学有所帮助。一、 测时判断程序优劣的最简单方式就是计算程序的运行时间,在同一台机器上,运行时间短的程序一般来说是更优的,当然不能一概而论,毕竟决定程序运行速度的因素很多,比如算法,机器的指令集,转载 2010-05-13 21:09:00 · 1341 阅读 · 0 评论 -
CUDA学习之五(通用运行时组件)
主机和设备函数均可使用通用运行时组件。内置向量类型:char1、uchar1、char2、uchar2、char3、uchar3、char4、uchar4、short1、ushort1、short2、ushort2、short3、ushort3、short4、ushort4、int1、uint1、int2、uint2、int3、uint3、int4、uint4、long1、ulong1、lon原创 2010-05-13 15:32:00 · 4411 阅读 · 0 评论 -
CUDA学习之七(主机运行时组件)
只有主机函数才能使用主机运行时组件。它提供了具有以下功能的函数:n 设备管理;n 上下文管理;n 存储器管理;n 代码模块管理;n 执行控制;n 纹理参考管理;n 与 OpenGL 和 Direct3D 的互操作性。它包含两个 API:n原创 2010-05-13 20:13:00 · 5117 阅读 · 0 评论 -
CUDA常用函数介绍
cudaMalloc(void** p, int size):分配size字节的存储器,并将其首地址赋给*p,至于参数为什么是二级指针,可在C语言中找到答案cudaMallocHost():这个方法是在主机上分配空间,可以加快传输速度,因此在写cuda时,应该使用此函数取代Malloc,参数同上一函数cudaMemcpy(void* dest,void* source,int size,enum转载 2010-05-13 21:18:00 · 8118 阅读 · 0 评论 -
CUDA学习之一
CUDA 的核心有三个重要抽象概念:线程组层次结构、共享存储器、屏蔽同步(barrier synchronization),可轻松将其作为 C 语言的最小扩展级公开给程序员。GPU 专用于解决可表示为数据并行计算的问题——在许多数据元素上并行执行的程序,具有极高的计算密度(数学运算与存储器运算的比率)。由于所有数据元素都执行相同的程序,因此对精密流控制的要求不高;由于在许多数据元素上运行,且具原创 2010-05-13 11:21:00 · 1753 阅读 · 0 评论 -
查看环境是否搭建好的测试代码
#include #include bool InitCUDA(){ int count; cudaGetDeviceCount(&count); if(count == 0) { fprintf(stderr, "There is no device./n"); return false; } int i; for(i原创 2010-05-13 13:35:00 · 1423 阅读 · 1 评论 -
CUDA学习之三
CUDA编码对于函数部分前缀1. __device__使用 _device_ 限定符声明的函数具有以下特征:n 在设备上执行;n 仅可通过设备调用。2. __global__使用 _global_ 限定符可将函数声明为内核。此类函数:n 在设备上执行;n 仅可通过主机调用。3. __host_原创 2010-05-13 14:07:00 · 6418 阅读 · 1 评论 -
cuda环境搭建
NVIDIA CUDA开发工具由三大组件组成:1. 最新的CUDA驱动程序2. 完整的CUDA工具包3. CUDA软件开发包代码实例 CUDA驱动程序是专为运行CUDA程序的显卡驱动;CUDA工具包是为支持CUDA的GPU(图形处理器)而设计的C语言开发环境;CUDA软件开发包提供了带有源代码的实例,实现CUDA快速入门。 1.获取软件从CUDA官方中文网(http原创 2010-05-13 10:10:00 · 1956 阅读 · 0 评论 -
.cu文件中字体点亮
Visual Studio .Net 2005 / Visual Studio 8:1. If you dont have a usertype.dat file in your "Microsoft Visual Studio 8/Common7/IDE" folder, then copy the included usertype.dat file there. If you do,转载 2010-05-13 10:48:00 · 810 阅读 · 0 评论 -
CUDA学习之六(设备运行时组件)
设备运行时组件仅可用于设备函数。1.数学函数设备运行时组件中存在准确性略低而速度更快的版本;其名称相同,但带有一个_前缀(如_sinf(x))。编译器有一个 (-use_fast_math) 选项,用于强制要求所有函数编译其准确性略低的版本(如果存在)。2.同步函数void __syncthreads();同步块中的所有线程。一旦所有线程均达到此同步点,执行将正常恢复。_s原创 2010-05-13 15:52:00 · 1920 阅读 · 0 评论 -
原子函数
C.1 数学函数C.1.1 atomicAdd()int atomicAdd(int* address, int val);unsigned int atomicAdd(unsigned int* address, unsigned int val);unsigned long long int atomicAdd(uns原创 2010-05-13 15:56:00 · 3574 阅读 · 0 评论 -
CUDA学习之二
CUDA学习之二并发与并行的区别:“并行”是指无论从微观还是宏观,二者都是一起执行的,就好像两个人各拿一把铁锨在挖坑,一小时后,每人一个大坑。而“并发”在微观上不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行,从宏观外来看,好像是这些进程都在执行,这就好像两个人用同一把铁锨,轮流挖坑,一小时后,两个人各挖一个小一点的坑,要想挖两个大一点得坑,一定会用两个小时。从以上本质不原创 2010-05-13 11:49:00 · 1274 阅读 · 0 评论 -
CUDA学习之四
内置变量1.gridDim 此变量的类型为 dim3,包含网格的维度。2. blockIdx此变量的类型为 uint3,包含网格内的块索引。3.blockDim此变量的类型为 dim3,包含块的维度。4. threadIdx此变量的类型为 uint3,包含块内的线程索引。5.warpSize此变量的类型为 int,包含以线程为单位的 warp 块原创 2010-05-13 14:23:00 · 1307 阅读 · 0 评论 -
CUDA Toolkit 3.2新特性
<br />Nvidia发布了最新的CUDA Toolkit 3.2,相对于之前的版本有了很大的性能提升,引入了新的数学函数库以及高端的计算机集群管理等特性,这些特性对于开发者开发下一代GPU加速应用的有很大帮助。<br /> CUDA Toolkit包括很多工具,函数库以及相关文档,从而帮助开发者编译CUDA C和C++的应用程序,同时CUDA Toolkit还可以作为很多其他GPU通用计算方案的基础。下面列出了CUDA Toolkit 3.2所带来的一些新的特性以及性能提升:<br /> 1. CU原创 2011-02-20 13:57:00 · 1274 阅读 · 0 评论