平台:

Windows

VScode

基础知识(Preliminary)

核函数:

  1. 限定词为__global__
  2. 返回值必须是void

Note:核函数不支持C++的iostream,打印只能用C的printf

线程模型

  1. grid 网格
  2. block 线程块

配置线程:<<<grid_size,block_size>>>

grid_size 线程块的个数,block_size 每个线程块中线程的数量

每个线程在核函数中都有一个唯一的身份标识
i d x = t h r e a d I d x . x + b l o c k I d . x ∗ b l o c k D i m . x idx = threadIdx.x+blockId.x*blockDim.x idx=threadIdx.x+blockId.xblockDim.x

$$

$$

创建CMakeLists.txt

编辑一个*CMakeLists.txt*,文件的名称区分大小写,必须命名为CMakeLists.txt,CMake才能够解析。

第一行,设置CMake所需的最低版本

cmake_minimum_required(VERSION 3.5 FATAL_ERROR)

第二行,声明项目名称和支持的编程语言(CXX代表C++)

PROJECT(hello_world LANGUAGES CXX CUDA)

第三行,指示CMake创建一个新目标:可执行文件hello_world。这个可执行文件是通过编译和链接源文件hello_world.cu生成的。

add_executable(hello_world hello_world.cu)

创建hello_world.cu

#include<stdio.h>
__global__ void hello_world(void)
{
  printf("GPU: Hello world!\n");
}
int main(int argc,char **argv)
{
  printf("CPU: Hello world!\n");
  hello_world<<<1,10>>>();
  cudaDeviceReset();//if no this line ,it can not output hello world from gpu
  return 0;
}

编译

CMakeLists.txt与hello_world.cu放在同一个目录下进行构建,生成器采用Visual Studio 16 2019,利用如下命令,

cmake -B build -G "Visual Studio 16 2019"

成功后项目的配置在build目录中生成,接着编译可执行文件

cmake --build build 

编译后的结果保存到\build\Debug下,运行

.\build\Debug\hello_world.exe

结果如下:
在这里插入图片描述

Logo

欢迎来到由智源人工智能研究院发起的Triton中文社区,这里是一个汇聚了AI开发者、数据科学家、机器学习爱好者以及业界专家的活力平台。我们致力于成为业内领先的Triton技术交流与应用分享的殿堂,为推动人工智能技术的普及与深化应用贡献力量。

更多推荐