CUDA By Example
在追梦的路上xxxxx
并行计算
展开
-
CUDA_Application(Ⅰ):Lattice-Boltzmann Method Using GPGPU CUDA Platform
源:https://github.com/nyxcalamity/lbm-gpu正好接触这个领域,复现这篇文章的思想及代码基础准备如下:GPGPU:https://en.wikipedia.org/wiki/General-purpose_computing_on_graphics_processing_unitsLattice-Boltzmann Method :https://...原创 2019-04-25 22:26:58 · 1261 阅读 · 0 评论 -
CUDA(Ⅱ):CUDA C入门
目标:编写第一段CUDA C代码了解为主机(Host)编写的Code与为设备(Device)编写的代码之间的区别如何从Host上运行Device Code了解如何在支持CUDA的Device上使用设备内存了解如何查询系统中支持CUDA的设备信息目录1.CUDA C 与 标准C 相关概念:2.如何区分Host Code 和 Device Code3.如何给D...原创 2019-04-25 17:09:43 · 6530 阅读 · 0 评论 -
CUDA(Ⅸ):CUDA Tools for Optimal Performance and Productivity
目录1.Profiling tools:CPU:GPU:2.CPU Timing Functions:Use high-precision OS calls:Be carefule when using CPU-based timing calls to measure CUDA activity:CUDA Timing Functions with CUDA Even...原创 2019-04-30 15:25:26 · 313 阅读 · 0 评论 -
CUDA(Ⅰ):CUDA学习背景、开发环境安装
参考书目《GPU高性能编程CUDA实战》以下文章均为作者原创,转载请告知,并注明出处。目标:了解并行计算正在发挥越来越重要作用了解GPU计算和CUDA发展历程了解一些通过使用CUDA C而获得成功的应用程序下载参考所需的各种软件配置好编译CUDA C代码的环境目录一、学习背景CPU性能提升历史:GPU发展历史:CUDA发展历史:CUDA的应用:二...原创 2019-04-25 15:00:10 · 658 阅读 · 0 评论 -
CUDA(Ⅷ):纹理内存(Texture Memory)
1.学习目标:了解纹理内存的性能特性了解如何在CUDA C中使用一维纹理内存了解如何在CUDA C中使用二维纹理内存2.背景提出:特定环境中使用特殊的内存将极大地提升应用程序的性能。与Constant Memory相似,Texture Memory同样缓存在芯片上,只读内存,在某些情况下,能减少对内存的请求并提供更高效的内存带宽。Texture Mmeory是专门为那些在内存访...原创 2019-04-27 21:07:24 · 6529 阅读 · 2 评论 -
CUDA(Ⅶ):使用事件(event)来测量性能
目录背景提出:CUDA Event API:如何实现?:cudaEvent_t、cudaEventCreate、cudaEventRecord存在的问题及解决方法。cudaEventSynchronize、cudaEventElapsedTime、cudaEventDestroy注意事项:小结:背景提出:如何判断Constant Memory对程序性能的影响?即哪个...原创 2019-04-27 16:40:55 · 9496 阅读 · 0 评论 -
CUDA(Ⅵ):常量内存(Constant Memory)
目录1.背景提出:内存带宽对性能瓶颈的影响?2.解决方案:3.案例分析:光线追踪(Ray Tracing)实例简介:构造:功能:代码复现--非常量内存GPU版本:代码复现--常量内存GPU版本:修改一:__constant__修改二:cudaMemcpyToSymbol()4.Constant Memory带来的性能分析提升从Constant M...原创 2019-04-27 15:26:41 · 6617 阅读 · 1 评论 -
CUDA(Ⅴ):共享内存(shared memory)、同步(_syncthreads)、点积运算
截止现在:将Block分解为Thread的目的只是为了解决Block数量的硬件限制。问题:CUDA C的关键字__share__添加到变量声明中,这将使这个变量驻留在shared memory中,这样做的目的是什么?CUDA C编辑器对shared memory中的变量与普通变量将分别采取不同的处理方式。对于GPU上启动的每个Block,CUDA C编译器都将创建该变量的一个副本。Bloc...原创 2019-04-26 20:23:08 · 2867 阅读 · 0 评论 -
CUDA(Ⅳ):对GPU矢量求和运算的进一步研究
学习目标:了解CUDA C中的线程了解不同线程之间的通信机制了解并行线程执行线程的同步机制问题:并行执行的Block是独立地计算结果还是可以相互协作解决问题?在前面的学习中,各个处理器不需要了解其他处理器的执行状态而彼此独立地计算出结果,然后并行编程最重要的一个方面是,并行执行的各个部分如何通过相互协作解决问题,即代码的各个执行副本之间进行通信和协作。接下来我们介绍并行执行的C...原创 2019-04-26 11:30:53 · 633 阅读 · 0 评论 -
CUDA(Ⅲ):矢量求和运算
问题描述:将两组数据对应的元素两两相加,并将结果保存在第三个数组中。即矢量求和运算目录1.基于CPU的矢量求和代码分析:问题:索引取值范为0 到 N-1 ,下面两种函数add()有什么区别吗?完整的代码实现及运行结果:2.基于GPU的矢量求和代码分析:问题:<<<>>>里面参数式什么含义?问题:既然GPU将运行kernel的N...原创 2019-04-26 09:52:58 · 3165 阅读 · 0 评论 -
CUDA(Ⅹ):CUDA Code Error总结贴
‘cudaThreadSynchronize’ is deprecated参考链接:https://stackoverflow.com/questions/13485018/cudastreamsynchronize-vs-cudadevicesynchronize-vs-cudathreadsynchronizeWindows的CUDA版本:C:\>nvcc --versio...原创 2019-04-30 16:50:34 · 3863 阅读 · 5 评论