如何学习cuda编程?

第一本cuda教材:

配套网课:

记得做网课作业。

然后就靠项目上手了。

我当时实习时候的项目是自己手撸了一遍caffe, 写了个内部的inference engine。顺带着学了很多 cuda 的实践。我觉得是个好项目,自己学了很多,但是看你自己兴趣/时间了。

==== 稍微更新下分割线

更新下上手之后对我帮助比较大的一些资料,这个时候对计算机底层不是很了解,做的东西还是浮于算法表面。

大致的知道要coalesced access,用vectorized datatype,以及大致的知道 atomics 慢,要避免 bank conflict, 但不是很懂architecture。

  1. 矩阵转置优化:

2. Reduction:

3. 图像上的连通区域分析 :

4. Summed area table (当时读的代码找不到了…让我到时候再找找)

上完班再来更一下==

我再上面这个阶段对于cuda的理解比较似是而非。很多时候知其然不知其所以然。

接下来对gpu/cuda 的理解从算法表面深入到体系结构了。

这个时候要祭出两本书,熟读后登堂入室。

  1. Computer architecture a quantitative approach https://www.elsevier.com/books/computer-architecture/hennessy/978-0-12-811905-1Computer ArchitectureComputer Architecture
  2. Parallel and High Performance Computing

以及microbenchmarking 里我一直会去读一下的报告

3. Dissecting the NVIDIA Volta GPU Architecture via Microbenchmarking


以上是我自己的学习路径。自己是数学系出身的所以很多东西都是在工作里慢慢才学起来。

我觉得计算机专业出身的话,可能学习的路径是反过来的。即体系结构出发,然后用cuda以及算法包装来达到目的。

我的领导就是我见过的最纯粹的体系结构派,碰到问题不是先写代码,而是先建一个excel表格来估算我们最好/最差的情况预期能达到怎样的效率。然后通过调整代码,调整算法,甚至调整编程语言(直接写ptx )来解决问题。

比如这个回答里的一篇文献,简单的矩阵转秩。里面作者的思路就是:转秩我们只会touch所有data 一次,那在理想情况下应该是和memcpy的效率一样。于是里面就通过各种技巧来逼近memcpy。

这种从体系结构 指导算法设计 的思路,我现在还在认真学习。

希望这篇回答能对大家有所帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/901935.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ProTable样式缺失

在使用Ant Design Pro开发页面时,想要引用ProComponents组件中的ProTable表格,引入官方文档的案例发现缺少样式 官方文档地址ProTable - 高级表格 - ProComponents (ant.design) 引入的是第一个Demos 样式预览: 代码 import { EllipsisO…

今天不分享技术,分享秋天的故事

引言 这个爱情故事好像是个悲剧,你说的是婚姻。爱情没有悲剧,对爱者而言,爱情怎么会是悲剧呢。对春天而言,秋天是它的悲剧吗。结尾是什么,等待,之后呢,没有之后。或者说,等待的结果…

Spring Cloud微服务

Spring Cloud 是一个专注于微服务架构的一站式解决方案,它通过整合多个优秀的开源框架和工具,为开发者提供了构建、管理和维护微服务系统所需的全方位支持。以下是关于 Spring Cloud 微服务的详细介绍: 基本概念 微服务架构:微服务…

图像处理算法的形式

一 基本功能形式 按图像处理的输出形式,图像处理的基本功能可分为三种形式。 1)单幅图像 -------->单幅图像 2)多幅图像-------->单幅图像 3)单(或多)幅图像------->数字或符号符 二 几种具体算法形式 1.局部处理 …

搭建 mongodb 副本集,很详细

搭建 mongodb 副本集,很详细 一、前言二、创建用户1、创建 root 用户2、创建测试用户3、修改用户密码 三、修改配置文件(主节点)1、开启登录认证2、加上副本集3、最终配置文件 四、副本节点1、创建副本节点目录2、编辑配置文件3、启动副本节点…

力扣283-- 移动零

开始做梦的地方 力扣283 : 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操作。 何解? 1,暴力枚举&#xff1a…

JS面试八股文(一)

😊JS面试八股文(一) 1.JS由哪三部分组成?2.JS有哪些内置对象?3.操作数组的方法有哪些?4.JS对数据类型的检测方式有哪些?5.说一下闭包,闭包有什么特点?6.前端的内存泄漏怎…

adb常见指令以及问题解决

1.屏幕截图 问题: /system/bin/sh: pull: not found 最后是一个美元符号$,则表示不是以root身份运行; 最后是一个井号#,则表示是以root身份运行。 解决方案: 直接退出,在PC端使用adb pull,而…

Spring Boot实现的动态化酒店住宿管理系统

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理酒店客房管理系统的相关信息成为必然。开发…

软件设计师考试大纲整理

为了防止出题者不按常理出牌,此文档为根据上午题大纲自行整理的扩展知识,并非考试常考题 此文档为根据上午题大纲自行整理的扩展知识,并非考试常考题 此文档为根据上午题大纲自行整理的扩展知识,并非考试常考题 闲暇时间了解知…

Web高级开发实验:EL基本运算符与数据访问

一、实验目的 掌握EL的定义,即Expression Language,用于提高编程效率。学习和掌握在开发环境中创建Java文件,并在jsp文件中使用EL表达式去调用其中的方法与属性等。 二、实验所用方法 上机实操 三、实验步骤及截图 1、创建javaweb项目&a…

力扣刷题(sql)--零散知识点(1)

通过一段时间的刷题,感觉自己的sql能力逐渐上去,所以不会像前三道题一样讲那么详细了,这里主要会讲到一些特殊的知识点和方法。另外,我的建议是做完一个题有好的想法赶紧记录下来,不要想着最后汇总,不然会懒…

基于SSM平面设计课程在线学习系统的设计

管理员账户功能包括:系统首页,个人中心,学生管理,教师管理,课程类型管理,课程学习管理,试题讲解管理,作业信息管理 前台账号功能包括:系统首页,个人中心&…

Vue3实现获取验证码按钮倒计时效果

Vue3实现获取验证码按钮倒计时效果 效果描述:用户点击获取验证码按钮,发送请求给后端,按钮失效,并且开始倒计时60秒;在此期间,用户无法再次点击按钮,即使用户刷新页面,倒计时依然存在…

Java项目实战II基于微信小程序的马拉松报名系统(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 马拉松运动…

XQT_UI 组件|01|颜色

介绍 XColor 是一个用于处理颜色的类,提供了获取颜色和样式的方法。它可以与 Qt 的 UI 组件结合使用,以便在应用程序中实现丰富的颜色效果。 安装 确保你已经在项目中包含了 xqt_color_palette.hpp 和相关的头文件。 #include "xqt_color_palet…

【Go语言】Gin框架的简单基本文档

思维导图 一、go 原生的http服务 在go中写一个web服务非常方便和快速: package mainimport ("encoding/json""fmt""io""net/http" )type Response struct {Code int json:"code"Data any json:"dat…

Spring中配置文件方式来配置实现数据源

我的后端学习大纲 我Spring学习大纲 1.1.数据源(连接池)的作用: 1.数据源(连接池)是提高程序性能而出现的2.数据源的使用步骤 : 创建数据源对象,在对象创建的时候会初始化部分连接资源使用连接…

【jvm】堆的内部结构

目录 1. 说明2. 年轻代(Young Generation)2.1 说明2.2 Eden区2.3 Survivor区 3. 老年代(Old Generation)3.1 说明3.2 对象存放3.3 垃圾回收 4. jdk7及之前5. jdk8及之后 1. 说明 1.JVM堆的内部结构主要包括年轻代(You…

录屏软件推荐,4个工具助你高效录屏。

不同的录屏软件具有不同的特点和优势,如果只是偶尔需要录制,Win10 自带的录制功能就很方便;如果需要更加专业的录制和编辑功能,我可以推荐几款功能更加多样也效果较好的第三方软件。 1、福昕高清录屏 直达:www.foxits…