《GPU高性能编程CUDA实战》

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

看了CUDA大概有10多天了,这里对学习内容做一个总结,主要参考的是《GPU高性能编程CUDA实战》这本书。
CUDA架构是有英伟达(NVIDIA)提出的,因此只能在配备英伟达显卡的电脑上使用,具体哪些型号的显卡支持CUDA,支持那一代的CUDA可以参考CUDA支持显卡列表
我是在windows下使用CUDA,只要从官网下好toolkit安装好就可了,不需要过多的配置。如果是在linux下进行开发,可以参考Ubuntu12.04配置NVIDIA cuda5.5经验贴
CUDA C是C语言的一个扩展,是在C语言基础上添加了一些CUDA专用的语法,关键字。

入门

核函数

为了方便描述,把CPU称为主机,把显卡称为设备,主机上的内存就称为内存,显卡上的缓存称为显存。
核函数以__global__修饰,告诉编译器这是需要设备来执行的代码,例如:

__global__ void kernel()
{
    printf("Hello, world!");
}  

核函数和主机执行的函数在传递参数方面没有什么不一样,看下面向量相加的代码:

__global__ void add(int *a, int *b, int *c)
{
    int i = threadIdx.x+blockIdx.x*blockDim.x;
    c[i] = a[i]+b[i];
}  

a,b是两个输入向量,c是输出向量,大括号内的代码是执行部分。由于代码在GPU中是多线程同时执行,每个线程都有核函数的一份拷贝,因此每个线程要找到自己计算的数据,上边大括号内第一行就是计算当前线程需要计算的数据的下标,第二行就是把对应位置的两个数加起来存放在向量c中。这一段代码假设了线程数量和向量长度是相等的。

分配内存

在内存里分配空间可以直接用malloc就可以了,后边介绍页锁定内存的时候在内存分配空间还可以用cudaHostAlloc(), 在显存里分配空间要用专门的函数cudaMalloc(),当然,销毁显存用的是cudaFree();
把内存分配的空间拷贝到显存需要用到cudaMemcpy函数,比如:

GPU高性能编程CUDA实战》—— 《笔记三》——点积运算 点积运算 注释都已经写在代码里面了 需要注意的问题:1.数的个数超过了thread的总数,所以thread有个递增,每个thread要计算多个数 2.点积的运算结果是标量,两个输入矢量中相应元素相乘之后,不是将值保存到第三个输出矢量中,而是将这些值相加得到一个标量输出值。 //***************************点积运算****************// /* 阅读详情

相关推荐

绘制波浪线--GPU高性能编程CUDA实战5.2.2

哎呀其实我想一点点的写我的注释粘贴代码的,但是确实很麻烦,我说这里的编辑器让我不舒服,哈哈#include "cuda.h" #include "../common/book.h" #include "../common/cpu_anim.h"//DIM定义的是像素,这里是512*512大小的图像#define DIM 512//没见到PI在哪里用上了#define PI 3.1415926535

ElegantIce的专栏 1317

GPU高性能编程CUDA实战

UDA是一种专门为提高并行程序开发效率而设计的计算架构。在构建高性能应用程序时,CUDA架构能充分发挥GPU的强大计算功能。《GPU高性能编程CUDA实战》首先介绍了CUDA架构的应用背景,并给出了如何配置CUDA C的开发环境。然后通过矢量求和运算、矢量点积运算、光线跟踪、热传导模拟等示例详细介绍了CUDA C的基本语法和使用模式。通过学习本书,读者可以清楚了解CUDA C中每个功能的适用场合,并编写出高性能CUDA软件。, 《GPU高性能编程CUDA实战》适合具备C或者C++知识的应用程序开发人员、数值计算库开发人员等,也可以作为学习并行计算的学生和教师的教辅。

利用GPU进行机器学习的CUDA编程实践:实例分析

作者:禅与计算机程序设计艺术 利用GPU进行机器学习的CUDA编程实践:实例分析 引言 1.1. 背景介绍 随着深度学习、机器学习等领域快速发展,如何高效利用GPU

AI天才研究院 5213

GPU高性能编程 CUDA实战】学习笔记

GPU高性能编程 CUDA实战】学习笔记,GPU编程入门,可以采用这本书,首先知道它大概有哪些东西,然后在工作中,任务驱动去学习GPU的其他知识,实践实践再实践。

qq_42474104的博客 1708

GPU高性能编程CUDA实战-第三章

在设备和主机之间复制数据,在GPU上执行的函数称为。CPU以及系统内存称为。,GPU及其内存称为。

m0_73535031的博客 403

GPU高性能编程CUDA实战》中代码整理

GPU高性能编程CUDA实战》中代码整理!

网络资源是无限的 1万+

GPU高性能编程CUDA实战》中文版电子书

GPU高性能编程CUDA实战》中文版电子书 【下载地址】GPU高性能编程CUDA实战中文版电子书 探索GPU高性能编程的奥秘,掌握CUDA实战技巧!本资源提供了《GPU高性能编程CUDA实战》中文电子书,深入解析GPU编程基础与CUDA架构,助您从理论到实践全面提升。无论您是编程新手还是资深开发者,本书都能为您提供清晰...

gitblog_06762的博客 943

GPU高性能编程_CUDA实战_page29

#include <stdio.h> #define N 10 __global__ void add(int* a, int* b, int* c) { int tid = blockIdx.x; // 计算位于这个索引处的数据 if (tid < N) c[tid] = a[tid] + b[tid]; } int main(void) ...

双鱼双眼皮儿的博客 254

GPU高性能编程CUDA实战资源下载

GPU高性能编程CUDA实战资源下载 【下载地址】GPU高性能编程CUDA实战资源下载分享 本仓库提供《GPU高性能编程CUDA实战》资源文件的下载。CUDA是一种专门为提高并行程序开发效率而设计的计算架构。在构建高性能应用程序时,CUDA架构能充分发挥GPU的强大计算功能 ...

gitblog_06605的博客 456

GPU高性能编程_CUDA实战_page27

#include <iostream> #define N 10 void add(int* a, int* b, int* c) { int tid = 0; while (tid < N) { c[tid] = a[tid] + b[tid]; tid += 1; } } int main(void) { ...

双鱼双眼皮儿的博客 214

GPU高性能编程CUDA实战示例代码:开启GPU加速编程新篇章

GPU高性能编程CUDA实战示例代码:开启GPU加速编程新篇章 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 《GPU高性能编程CUDA实战示例代码》是一个开源项目,提供了《GPU高性能编程CUDA实战》一书的全部示例代码。该项目旨在帮助读者深入理解并实践CUDA编程,通过实际案例来掌握GPU加速编程的核心技术。 项目技术分析 CUDA(Compute Unified...

gitblog_06758的博客 473

GPU高性能编程CUDA实战—示例代码

GPU高性能编程CUDA实战—示例代码 去发现同类优质开源项目:https://gitcode.com/ 本仓库提供了《GPU高性能编程CUDA实战》一书的全部示例代码,旨在帮助读者更好地理解和实践CUDA编程。代码集包含了书中所有示例,可供读者学习和研究使用。 请注意,如果您在使用过程中遇到任何问题,可以联系书籍的博主进行咨询。感谢您的支持! 去发现同类优质开源项目:https://gitco...

gitblog_06720的博客 358

GPU高性能编程CUDA实战》资源文件介绍

GPU高性能编程CUDA实战》资源文件介绍 去发现同类优质开源项目:https://gitcode.com/ 文件概述 本仓库包含了《GPU高性能编程CUDA实战》一书的配套资源文件。该书详细介绍了CUDA并行程序设计,旨在帮助读者掌握GPU编程的基本技巧与实践应用。 文件内容 book.h:原书代码文件,包含了书中示例程序的必要头文件。 CPUBitmap.h:原书代码文件,包含了CPU位图...

gitblog_06709的博客 387

GPU高性能编程_CUDA实战_page18

#include <iostream> __global__ void add(int a, int b, int* c) { *c = a + b; } int main(void) { int c; int* dev_c; cudaError_t(cudaMalloc((void**)& dev_c, sizeof(int))); ...

双鱼双眼皮儿的博客 225

【亲测免费】 《GPU高性能编程CUDA实战》资源下载:开启并行计算新纪元

GPU高性能编程CUDA实战》资源下载:开启并行计算新纪元 【下载地址】GPU高性能编程CUDA实战资源下载分享 本仓库提供《GPU高性能编程CUDA实战》资源文件的下载。CUDA是一种专门为提高并行程序开发效率而设计的计算架构。在构建高性能应用程序时,CUDA架构能充分发挥GPU的强大计算功能 ...

gitblog_06692的博客 1015

GPU高性能编程CUDA实战》源码分析

CUDA内核函数是运行在GPU上的特殊函数,使用__global__修饰符来定义。每个CUDA内核函数执行时,都由成千上万的线程并行执行。线程的执行是基于一种称为“网格(grid)”和“块(block)”的抽象概念。每个内核函数至少包含两个内置变量:threadIdx和blockIdx,它们用于确定每个线程的唯一ID。下面是一个简单的CUDA内核函数示例,该函数计算向量加法:在此函数中,blockDim.x和blockIdx.x分别表示块内线程的维度和块在网格中的位置。

weixin_34598113的博客 901

GPU高性能编程_CUDA实战_page17

#include <iostream> __global__ void kernel(void) {} int main(void) { kernel << <1, 1 >> > (); printf("Hello, World!\n"); return 0; }

双鱼双眼皮儿的博客 241
上一篇: VS2010中OpenCV 显示汉字
下一篇: Windows7硬盘安装Ubuntu14.04引导后黑屏解决方案
ubunfans
博客等级 码龄17年 142粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值