CUDA入门(一)

2023-05-16

最近我也都在看CUDA,自己看书和练习也都搞了一个月了。而且经常在CSDN上逛,也发现了很多问题,所以决定自己写点这方面的东西,方便自己也方便后来人。

根据我的调查,我发现现在的初学者大都是非计算机专业的,都是一些行业内部的人士,比如地震勘探,生物学,流体力学和气象等等这些应用领域的人在学,像我们这种计算机专业在学的还比较少。这些人大都呢都是有C语言基础,但是编程经验方面却比较欠缺(也有不少高手,高手们不要扔砖哈),所以难免被一些小的错误和问题绊住,下面我就简单的说一下我的经验。

大家都知道,CUDA C不是一门新语言,它基于C,只不过扩充了一些东西而已。所以,无论如何,建议在看CUDA之前,先回顾一下C语言,多看看没有坏处,CUDA的书很多都没有说语法的,因为他们都有一个前提——假设读者有一定的C语言基础!看C语言的时候,如果能动手练练那当然更好了。编程不能光看不练。

关于看书方面,目前有好几本书都还是不错的。我哟如下建议,第一本你还是看《GPU高性能编程 CUDA实战》,翻译版的,黑色封面加魔方(其实是GPU线程模型),不贵,原价39.00国币。这本书好的地方就是:基础。作者从最简单的C语言程序入门,循序渐进教你如何一步一步的编CUDA程序。这对新手来说相当重要,入门是关键,“师傅领进门,修行看个人”。

Okay,现在你懂一点了,建议看第二本书,这个可以不叫书,它是英伟达出的一个《CUDA编程指南》,有好几个版本,而且 3.0以后的中文版都是风辰大哥翻译的——如果你水品高,不拦着你看英文原版。看这个有什么好处呢?毕竟这个是人家英伟达自己的东西,他很清楚自己的GPU是怎么回事,规矩是他定的,你最好看看,他的规矩是什么。

第三本就是勇哥那本《GPU高性能运算之CUDA》,为什么现在才看这本书了——呵呵好东西总是后面才出场。它哪里好呢?——它讲了有一些深的东西:1、他讲了不少硬件架构的东西,这个比较难,而且你要看看理解,不容易的东西,我本人本科的时候就最怕硬件的东东呢。2、后面大篇幅的实例代码,有优化的,有大型的案例,这两个也是值得好好看和深究的。所以这些都是需要“基础”和“时间”来好好看的。

第四本,这个可以选择不看,看个人情况了。就是胡文美(Wen-mei W. Hwu)的《大规模并行处理器程序设计》,是影印版的,影印版就是复印版的意思,也即是英文版。胡和David B.Kirk也可以说是英伟达制定规则的参与者,这本书也讲得很细致,有深有浅——由于本人读的也是一般般,所以关于这本书不多说。吐舌头

如果你能坚持看完这几本书(至少前三本),并且能动手做做练习的话,估计你不会有那么多的困惑了。当然很多时候你需要花时间来思考,思考你看到的,你练习的,多问问为什么?——这点我也做的不够好,自我批评下。

另外还有一个问题,就是关于编程,很多人都说,我不是计算机专业的,对编程我不懂,能给我详细说说这个,说说那个么?这一点,我在上大一或者大二的时候也这么说过,可以理解的,但是慢慢你们就会发现,很多时候,很多东西,别人不可能教你,也教不会你。需要你自己去学。IDE 需要自己去摸索,多看帮助文档,不会就去ask 搜索引擎,你的问题我相信很多人都遇到过的,这就是网络时代的好处。还有经验型的东西要多总结:这些错误,一般是什么原因,遇到多了就大概都能猜个80%——别人的经验也可以拿来当自己的用的。

总结一下,我也唠唠叨叨说了一大堆,就两个观点:关于看书和关于编程。希望对新手有个帮助,CUDA出的时间不长,前面的路还很远,希望和大家一起学习。如果哟什么不对的地方,欢迎批评指正,我也是新手来的。



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CUDA入门(一) 的相关文章

  • 指定 NVCC 用于编译主机代码的编译器

    运行 nvcc 时 它始终使用 Visual C 编译器 cl exe 我怎样才能让它使用GCC编译器 设置CC环境变量到gcc没有修复它 我在可执行文件帮助输出中也找不到任何选项 在 Windows 上 NVCC 仅支持 Visual C
  • Ubuntu 11.10/12.04 上的 CUDA“无兼容设备”错误

    一段时间以来 我一直在尝试在我的笔记本电脑上设置 Ubuntu 环境来进行 CUDA 编程 我目前双启动 Windows 8 和 Ubuntu 12 04 并想在 Ubuntu 上安装 CUDA 5 该笔记本电脑配有 GeForce GT
  • cuda中的count3非常慢

    我在 CUDA 中编写了一个小程序 用于计算 C 数组中有多少个 3 并打印它们 include
  • cudaMemcpyToSymbol 与 cudaMemcpy [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我试图找出
  • 在新线程中调用支持 CUDA 的库

    我编写了一些代码并将其放入它自己的库中 该库使用 CUDA 在 GPU 上进行一些处理 我正在使用 Qt 构建 GUI 前端 作为加载 GUI 的一部分 我调用 CUresult res CUdevice dev CUcontext ctx
  • Cuda Bayer/CFA 去马赛克示例

    我编写了一个 CUDA4 Bayer 去马赛克例程 但它比在 16 核 GTS250 上运行的单线程 CPU 代码慢 块大小是 16 16 图像暗淡是 16 的倍数 但更改此值并不会改善它 我做了什么明显愚蠢的事情吗 calling rou
  • 如何将CUDA时钟周期转换为毫秒?

    我想用一些代码来测量时间within我的内核需要 我已经关注了这个问题 https stackoverflow com questions 11209228 timing different sections in cuda kernel连
  • 为什么 gcc 和 NVCC (g++) 会看到两种不同的结构大小?

    我正在尝试将 CUDA 添加到 90 年代末编写的现有单线程 C 程序中 为此 我需要混合两种语言 C 和 C nvcc 是 c 编译器 问题在于 C 编译器将结构视为特定大小 而 C 编译器将相同的结构视为略有不同的大小 那很糟 我对此感
  • CUDA 中的广义霍夫变换 - 如何加快分箱过程?

    正如标题所示 我正在对并行计算机视觉技术进行一些个人研究 使用 CUDA 我尝试实现 GPGPU 版本的霍夫变换 我遇到的唯一问题是在投票过程中 我调用atomicAdd 来防止多个同时写入操作 但我似乎没有获得太多的性能效率 我在网上搜索
  • cuda cpu功能-gpu内核重叠

    我在尝试开发以练习 CUDA 的 CUDA 应用程序时遇到并发问题 我想通过使用 cudaMemecpyAsync 和 CUDA 内核的异步行为来共享 GPU 和 CPU 之间的工作 但我无法成功重叠 CPU 执行和 GPU 执行 它与主机
  • cuda 共享内存 - 结果不一致

    我正在尝试并行缩减以对 CUDA 中的数组求和 目前我传递一个数组来存储每个块中元素的总和 这是我的代码 include
  • CUDA线程执行顺序

    我有一个 CUDA 程序的以下代码 include
  • 设置最大 CUDA 资源

    我想知道是否可以设置 CUDA 应用程序的最大 GPU 资源 例如 如果我有一个 4GB GPU 但希望给定的应用程序只能访问 2GB 如果它尝试分配更多 就会失败 理想情况下 这可以在进程级别或 CUDA 上下文级别上设置 不 目前没有允
  • Cuda 6.5 找不到 - libGLU。 (在 ubuntu 14.04 64 位上)

    我已经在我的ubuntu上安装了cuda 6 5 我的显卡是 GTX titan 当我想要制作 cuda 样本之一时 模拟 粒子 我收到这条消息 gt gt gt WARNING libGLU so not found refer to C
  • 尝试构建我的 CUDA 程序时出现错误 MSB4062

    当我尝试构建我的第一个 GPU 程序时 出现以下错误 有什么建议可能会出什么问题吗 错误 1 错误 MSB4062 Nvda Build CudaTasks SanitizePaths 任务 无法从程序集 C Program 加载 文件 M
  • 在 cudaFree() 之前需要 cudaDeviceSynchronize() 吗?

    CUDA 版本 10 1 帕斯卡 GPU 所有命令都发送到默认流 void ptr cudaMalloc ptr launch kernel lt lt lt gt gt gt ptr cudaDeviceSynchronize Is th
  • 有没有一种有效的方法来优化我的序列化代码?

    这个问题缺乏细节 因此 我决定创建另一个问题而不是编辑这个问题 新问题在这里 我可以并行化我的代码吗 还是不值得 https stackoverflow com questions 17937438 can i parallelize my
  • 如何运行和理解CUDA Visual Profiler?

    我已经设置了 CUDA 5 0 并且我的 CUDA 项目运行良好 但我不知道如何使用 Visual Profiler 分析我的 CUDA 项目 如何运行它 我还需要安装更多吗 又该如何做呢 我的电脑使用Window 7 64位 CUDA 5
  • cuda-gdb 错误消息

    我尝试使用 cuda gdb 调试我的 CUDA 应用程序 但遇到了一些奇怪的错误 我设置了选项 g G O0构建我的应用程序 我可以在没有 cuda gdb 的情况下运行我的程序 但没有得到正确的结果 因此我决定使用 cuda gdb 但
  • 云或烟雾的粒子系统

    我正在尝试使用 OpenGL 和 CUDA 制作一个简单的用于云和烟雾模拟的粒子系统 如何使粒子系统中的粒子表现得像真正的云或烟雾在低湍流风中的表现 我现在遇到的一些问题是 颗粒聚集成一个大球 粒子扩散到无限远 粒子突然弹射离开 我已经完成

随机推荐

  • 记我的2016年实习总结

    实习问题记录及经验总结 工具篇 git 问题描述 xff1a 第一次merge分支到主干develop xff0c 遇到冲突时解决方法不当造成主干代码无法运行 原因 xff1a xff08 1 xff09 自己习惯问题 xff0c 写完代码
  • Maven搭建的SSM项目中遇到的问题

    Maven搭建的SSM项目中遇到的问题 1 EL表达式失效 2 装配异常Unable to configure ssm 解决办法 其实这两个问题的出现都是因为servlet版本和java版本不合适造成的 xff0c EL表达式在servle
  • Java小工具Lombok的安装与使用

    1 Lombok简介 Lombok是一个代码生成器 xff0c 可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具 xff0c 通过使用对应的注解 xff0c 可以在编译源码的时候生成对应的方法 使用 lom
  • 日常记录(1)

    数据库连接池Druid Alibaba github地址 xff1a https github com alibaba druidBlog xff1a http blog csdn net pk490525 article details
  • NOA上车「清一色」自主品牌,哪些供应商正在突围前线

    随着入门级L2进入普及周期 xff0c 以NOA xff08 高速 城区 xff09 为代表的L2 43 L2 43 43 赛道 xff0c 正在成为主机厂 硬件供应商 算法及软件方案商的下一波市场制高点的争夺阵地 高工智能汽车研究院监测数
  • 【STM32-初始化的时候是如何通过结构体给寄存器赋值的?】

    使用的是正点原子的源码 xff0c 一直没有搞明白初始化的时候是怎么给相关的寄存器赋值的 xff0c 今天琢磨了一下 xff1a 首先 xff0c 创建了一个GPIO InitTypeDef类型的结构体变量GPIO InitStructur
  • 多元建模基础(二):正态混合分布

    1 正态方差混合模型 xff1a 1 xff09 定义 xff1a 称 显然 xff0c xff0c 混合分布中 xff0c 由W的分布确定一组权值 xff0c 混合变量W可以被解释为来自新信息并影响所有风险因子波动性的扰动 位置向量和分散
  • 神经RRT*:基于学习的最优路径规划 翻译+总结

    摘要 xff1a 快速随机探索树 xff08 RRT xff09 及其变体由于能够快速有效地探索状态空间而非常流行 然而 xff0c 它们对初始解很敏感 xff0c 收敛到最优解的速度很慢 xff0c 这意味着它们需要消耗大量内存和时间来找
  • 解决 Windows has triggered a breakpoint in Linkage.exe问题

    这两天在做一个小项目 xff0c 里面有多线程的东东 xff0c 在调试的时候 总是遇到 Windows has triggered a breakpoint in Linkage exe 的错误 现在将这个问题和大家分享一下 前提是这样的
  • 写一个简单的爬虫,可直接复制学习!!

    简单爬虫直面代码 xff0c 可直接复制学习 这个代码的作用主要是用来获取到百度首页的数据 xff0c 只用来供理解学习 真 小白 福利 todo 首先导包requests 用于爬取数据 import requests todo 定义你要爬
  • Dataloader类

    Dataset让我们可以知道数据在什么位置 xff0c 及数据的的索引对应的数据 Dataloader相当于加载器 xff0c 把数据加载到神经网络中 import torchvision 测试数据集 xff0c train设置为false
  • 如何把截图固定在电脑页面上

    如果我们给人讲网课课 xff0c 或者汇报的时候想把公式 xff0c 定理 xff0c 图片等放在醒目位置做对比 那么我们可能需要把截图放在别的文件的页面上 xff0c 那么我们要怎么做呢 xff1f 方法一 xff1a 利用QQ截图功能
  • 如何写好一个算法

    写出算法有一个比较通用的方法论 xff0c 步骤如下 xff1a 1 理解问题 先弄清楚具体要解决什么问题 做成怎样的程度就可以满足问题需要 xff1f 是需要精确值还是近似值 xff1f 2 分析问题 用数学思路去描述问题的求解过程 3
  • python如何读取txt里面的数据

    当我们在用python时可能会遇到想要把txt文档里的数据读取出来然后进行绘图 xff0c 那么我们要怎么才能够将txt里的数据读取出来呢 xff1f 假设有txt文本如下 xff1a 想要把上述文本数据读取出来 xff0c 可以用以下方法
  • MATLAB读取数据(txt|excel)并绘图

    最近做了实验 xff0c 要绘图进行比较 xff0c 网上百度搜索搞了很久 xff0c 终于搞定了 写个文章记录一下 废话不多讲 xff0c 咱们步入正题 以下是以txt文档为例进行的绘图 xff0c 如果用excel更加简单 道理都是一样
  • 如何用电脑自带的软件录屏

    有时候想要用电脑录屏 xff0c 但是电脑又没有录屏软件 xff0c 那我们有没有办法进行录屏呢 xff1f 可以借助 游戏 设置进行录屏哦 xff01 本人电脑 xff1a win10系统 1 点击桌面左下角windows图标 xff0c
  • 如何设置电脑锁屏后程序仍在运行

    最近在跑代码的时候 xff0c 回去午睡后过来打开电脑发现程序没跑 发现电脑锁屏后程序不再运行了 xff0c 重新将电脑设置锁屏后仍运行 xff0c 如下 xff1a 1 同时按下win 43 R 打开 运行 界面 2 输入control
  • Latex文献引用显示?解决

    最近在写论文的时候 xff0c 发现执行latex时应该显示的文献号变成 xff1f 号了 按照网上的多种方法还没解决好 解决文献引用问题主要有以下方法 xff1a 1 end document 的语句位置问题 执行文件之所以没有找到bib
  • 有些参考文献找不到页码和期号怎么解决?

    在我们撰写论文时不论是查找下载期刊文献资料还是编辑参考文献都会需要知道该期刊论文的期卷号 xff0c 那么 xff0c 期刊论文的期卷号怎么找呢 xff1f 下面小编就介绍几种论文期卷号的查找方法 xff08 注 xff1a 文中所用的检索
  • CUDA入门(一)

    最近我也都在看CUDA xff0c 自己看书和练习也都搞了一个月了 而且经常在CSDN上逛 xff0c 也发现了很多问题 xff0c 所以决定自己写点这方面的东西 xff0c 方便自己也方便后来人 根据我的调查 xff0c 我发现现在的初学