摘要:使用 Runtime API 和 Driver API 检测设备相关属性。并检测了设备之间的拓扑以及主机与设备之间的拓扑(是否支持跨设备原子操作)。 ▶ 源代码:Runtime API ▶ 输出结果: ▶ 源代码:Driver API ▶ 输出结果: ▶ 源代码:topologyQuery ▶ 输出
阅读全文
随笔分类 - CUDA Samples
摘要:使用 Runtime API 和 Driver API 检测设备相关属性。并检测了设备之间的拓扑以及主机与设备之间的拓扑(是否支持跨设备原子操作)。 ▶ 源代码:Runtime API ▶ 输出结果: ▶ 源代码:Driver API ▶ 输出结果: ▶ 源代码:topologyQuery ▶ 输出
阅读全文
摘要:使用三种模式(QUICK_MODE,RANGE_MODE,SHMOO_MODE),测试三种拷贝情况下的显存带宽(HostToDevice,DeviceToHost,DeviceToDevice) ▶ 源代码 ▶ 输出结果:QUICK_MODE,是否写入合并都尝试了。 ▶ 输出结果:SHMOO_MOD
阅读全文
摘要:▶ 简单的将纯 C/C++ 函数放到另一个文件中,利用头文件引用到主体 .cu 中来,编译时共同编译。 ▶ 源代码,把 C++ 的部分去掉了 ● 输出结果: ▶ 涨姿势
阅读全文
摘要:▶ 使用 CUDA Runtime API,运行时编译,Driver API 三种接口计算向量加法 ▶ 源代码,CUDA Runtime API ● 输出结果: ▶ 源代码,运行时编译 ● 输出结果: ▶ 源代码,Driver API,也需要上面的 vectorAdd_kernel.cu,调用核函数
阅读全文
摘要:使用 OpenMP 和 pthreads 两种环境,利用实现统一内存编址,计算基本的矩阵乘法 result = α * A * x + β * result 。 ▶ 源代码 ▶ 输出结果:OpenMP ▶ 输出结果:pthreads ▶ 涨姿势: ● 使用 C++ 结构体完成了类似类的方法。即在结构
阅读全文
摘要:简单的 CUDA 应用模板,白送的 Sample。 ▶ 源代码 ▶ 输出结果: ▶ 涨姿势:没有
阅读全文
摘要:两种方法使用零拷贝内存做简单的向量加和,并评估 GPU 计算结果与 CPU 计算结果的差。 ▶ 源代码 ▶ 输出结果: ▶ 涨姿势 ● 两种使用零拷贝内存的方法,在代码的逻辑部分进行了说明 ● 向上取整的宏函数,只对分母(size)为 2 的整数次幂的情况有效。 e.g. size == 4096,
阅读全文
摘要:介绍了线程束表决函数的实例(其概念介绍见 http://www.cnblogs.com/cuancuancuanhao/p/7841512.html),并在静态和运行时编译两种条件下进行使用。 ▶ 源代码:静态 ▶ 输出结果: ▶ 源代码:运行时编译(删掉了相同的注释) ▶ 输出结果: ▶ 涨姿势
阅读全文
摘要:使用纹理引用来旋转图片,并在使用了静态编译和运行时编译两种环境。 ▶ 源代码:静态编译 ▶ 输出结果 ▶ 源代码:运行时编译 ▶ 输出结果: ▶ 涨姿势 ● 一般,与 0_Simple__simpleSurfaceWrite 类似。
阅读全文
摘要:使用 C++ 的模板 ▶ 源代码:静态使用 ▶ 输出结果: ▶ 源代码:使用运行时编译 ▶ 输出结果: ▶ 涨姿势 ● 封装了 SharedMemory,ArrayComparator,ArrayFileWriter 三个模板,并定义了其在不同的数据类型下的实现。
阅读全文
摘要:使用表面写入函数,结合纹理引用实现图片的旋转▶ 源代码 ▶ 输出结果 ▶ 涨姿势 ● 使用函数 sdkLoadPGM() 读取图片数据 ● 使用到的表面写入函数原型
阅读全文
摘要:对比使用单流和多流(4条)情况下数据拷贝,以及数据拷贝加内核调用的效率差别。▶ 源代码 ▶ 输出结果 ▶ 涨姿势 ● 涉及的宏和内部函数原型 ● 使用原生页对齐锁定内存的步骤 ● 使用函数 cudaEventCreateWithFlags() 相关来计时,与之前的函数 cudaEventCreate
阅读全文
摘要:把代码文件和主程序文件分开编译,使用头文件的形式进行引用。 ▶ 源代码 ▶ 输出结果 未测试 ▶ 涨姿势 ●写在其他 .cpp 文件中的设备函数,需要用函数 cudaMemcpyFromSymbol() 放入设备常量内存才能使用。
阅读全文
摘要:在设备代码中使用函数 printf(),没有新的认识。 ▶ 源代码 ▶ 输出结果
阅读全文
摘要:对比设备线性二维数组和 CUDA 二维数组在纹理引用中的效率 ▶ 源代码。分别绑定相同大小的设备线性二维数组和 CUDA 二维数组为纹理引用,做简单的平移操作,重复若干次计算带宽和访问速度。 ▶ 输出结果 ▶ 涨姿势 ● 用到的函数都在以前的,有关线性二维数组和纹理内存使用方法的博客汇总讨论过了。
阅读全文
摘要:使用 P2P 特性在 GPU 之间传输、读写数据。 ▶ 源代码。包括 P2P 使用前的各项检查,设备之间的数据互拷,主机和设备之间数据传输和相互访问。 ▶ 输出结果 只有一台设备,暂无法进行测试 ▶ 涨姿势: ● P2P 要求:至少两台计算能力不低于 2.0 的设备,并支持同一可视内存空间特性;计算
阅读全文
摘要:计算核函数调用使得占用率,并尝试使用 runtime 函数自动优化线程块尺寸,以便提高占用率。 ▶ 源代码。 ▶ 输出结果 ▶ 涨姿势 ● 用到的几个 runtime 函数及其相互关系。
阅读全文
摘要:使用多台 GPU 进行计算▶ 源代码。使用不同的流来控制不同 GPU 上的运算任务。 ▶ 输出结果 ▶ 涨姿势 ● 在使用不同的设备执行相关函数(包括 cudaFree 等主机函数)时要注意,使用函数 cudaSetDevice() 来切换设备。
阅读全文
摘要:利用 CUDA 的 Overlap 特性同时进行运算和数据拷贝来实现加速。 ▶ 源代码。使用 4 个流一共执行 10 次 “数据上传 - 内核计算 - 数据下载” 过程,记录使用时间。 ▶ 输出结果 ▶ 涨姿势 ● 没有
阅读全文
摘要:MPI 的简单使用▶ 源代码。主机根结点生成随机数组,发布副本到各结点(例子用孩子使用了一个结点),分别使用 GPU 求平方根并求和,然后根结点使用 MPI 回收各节点的计算结果,规约求和后除以数组大小(相当于球随机数组中所有元素的平方根的平均值)。 ▶ 输出结果 ▶ 涨姿势 ● 集中在 MPI 的
阅读全文
|