欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

CUDA点云视觉学习与实践0——预备知识

程序员文章站 2024-02-26 22:06:22
...

准备开一个cuda的专栏,记录自己对cuda点云、视觉学习与实践的过程,希望能坚持更下去,最终的目标是想实现基于cuda对每个粒子并行加速的视觉gmapping

这一节记录从零开始使用cuda编程的一些基础知识

GPU架构和属性

cudaDeviceProp prop;
cudaGetDeviceProperties(&prop, 0);

上面可以获取gpu的属性。这里实践采用的是GTX1060显卡,一些重要的属性如下:
gpu算力:6.1
grid最大维度:3

  • x方向最大block:231-1
  • yz方向最大:65535

block最大维度:3

  • xy方向最大:1024
  • z方向最大:64
  • threads最多:1024

上面提到的thread,block,grid还有warp是CUDA编程上的概念,以方便程序员软件设计,组织线程,同样的我们给出一个示意图来表示。
CUDA点云视觉学习与实践0——预备知识thread:一个CUDA的并行程序会被以许多个threads来执行。
block:数个threads会被群组成一个block,同一个block中的threads可以同步,也可以通过shared memory通信。
grid:多个blocks则会再构成grid。
warp:GPU执行程序时的调度单位,目前cuda的warp的大小为32,同在一个warp的线程,以不同数据资源执行相同的指令,这就是所谓 SIMT。

软件代码

主机(host)一般指cpu,器件(device)一般指gpu
常用的标识符:

  • __global__表示该函数在主机中执行函数的呼叫,在器件中执行
  • __host__表示该函数在主机中执行函数的呼叫,在主机中执行
  • __device__表示该函数在器件中执行函数的呼叫,在器件中执行

cuda编程主要分为5步:

  1. 给host和device分配内存
  2. 数据拷贝,从host到device
  3. kernel计算
  4. 数据拷贝,从device到host
  5. 释放内存

编写代码应该严格按照这样的五个步骤来,后面的代码也都遵循这样一个流程。

相关标签: gpu