[NVIDIA]Accelerating Applications with CUDA C/C++笔记

void CPUFunction()
{
  printf("This function is defined to run on the CPU.\n");
}

__global__ void GPUFunction()
{
  printf("This function is defined to run on the GPU.\n");
}

int main()
{
  CPUFunction();

  GPUFunction<<<1, 1>>>();
  cudaDeviceSynchronize();
}

`__global__ void GPUFunction()`

- '__global__' 关键字表示以下函数将在 GPU 上运行,并且可以全局调用,在这种情况下,这意味着由 CPU 或 GPU 调用。
  - 通常,在 CPU 上执行的代码称为“主机”代码,在 GPU 上运行的代码称为“设备”代码。
  - 请注意返回类型“void”。要求使用“__global__”关键字定义的函数返回类型“void”。
`GPUFunction<<<1, 1>>>();`

- 通常,当调用一个函数在 GPU 上运行时,我们称这个函数为“内核”,即“启动”。
  - 在启动内核时,我们必须提供一个**执行配置**,这是在向内核传递任何预期参数之前使用“<<<...>>>”语法来完成的。
  - 在高层次上,执行配置允许程序员为内核启动指定**线程层次结构**,它定义了线程分组的数量(称为**块**),以及在每个块中执行的**线程数**。稍后将在实验室中详细探讨执行配置,但目前请注意,内核是使用包含“1”线程(第二个配置参数)的“1”线程块(第一个执行配置参数)启动的。
`cudaDeviceSynchronize();`

- 与许多 C/C++ 代码不同,启动内核是异步的:CPU 代码将继续执行*无需等待内核启动完成*。

### NVIDIA CUDA Python 加速计算基础 NVIDIA 提供了丰富的资源来帮助开发者掌握 CUDA 编程技能,特别是针对 Python 用户。为了更好地理解如何利用 CUDA 进行高效的并行处理,在线课程和官方文档是非常重要的学习工具。 #### 官方在线培训与认证项目 NVIDIA Deep Learning Institute (DLI) 提供了一系列面向不同层次的学习者的动手实验课[^1]。这些课程不仅涵盖了基本概念介绍,还包括实际案例研究以及练习环节,使学员能够快速上手实践操作。对于希望深入了解 CUDA 的 Python 开发人员来说,“Accelerating Applications with CUDA and Python” 是一门非常受欢迎的选择。 #### 关键知识点概览 - **环境搭建**:通过安装 Anaconda 或 Miniconda 来创建隔离的工作空间;配置 cuPy、Numba 等第三方包以便于后续开发工作。 - **核心原理讲解** - 并行执行模型的理解; - 如何定义核函数及其参数传递方式; - 数据传输机制(主机到设备间的数据交换)。 - **实战演练** - 使用 Numba JIT 编译装饰器实现简单的矩阵乘法加速; - 利用 CuPy 库完成更复杂的张量运算任务; - 结合 TensorFlow 或 PyTorch 构建基于 GPU 的深度学习模型训练流程。 ```python import numba.cuda as cuda from cupy import array @cuda.jit def matrix_multiply(A, B, C): row = cuda.blockIdx.x * cuda.blockDim.x + cuda.threadIdx.x col = cuda.blockIdx.y * cuda.blockDim.y + cuda.threadIdx.y if row < A.shape[0] and col < B.shape[1]: tmp_sum = 0. for k in range(A.shape[1]): tmp_sum += A[row][k] * B[k][col] C[row][col] = tmp_sum A = array([[1., 2.], [3., 4.]]) B = array([[5., 6.], [7., 8.]]) C = array([[0., 0.], [0., 0.]]) matrix_multiply[(1, 1), (2, 2)](A, B, C) print(C) ```
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值