0
点赞
收藏
分享

微信扫一扫

随想录(cuda编程)


    很早就知道gpu可以被用来进行加速处理,但是不知道基本原理是什么。昨天看了一下别人的示范代码,突然之间明白了很多。为了防止自己忘记这些知识点,特地做如下纪录。

 

1、显卡编程

    gpu主要是指显卡上的处理器部分。显卡和cpu之间主要通过pci或者pcie连接,所以必然要求生成的可执行文件一部分在host运行、一部分在gpu运行。

 

2、cuda文件格式

    一般以cu作为后缀。

 

3、cuda的构成

    cuda和基本的c语言文件没有差别,只是需要注意的是,那些标记为__global的函数才是真正在gpu上运行的代码。

 

4、cuda和mpi关系

    mpi主要是intel利用cpu并发执行的lib,cuda则是利用gpu运行的库。

 

5、cuda怎么编译

    建议用nvidia提供的nvcc进行编译。

 

6、asic、fpga、cpu、gpu加速

    机器学习要求我们必须穷尽各种加速方法。asic侧重于controller加速、表现在编解码、加密方面。fpga可用于特定的算法处理,虽然效果最好,但是成本最高。cpu加速最简单,但是成本不好控制、编写有难度。gpu是次优于cpu的方法,它可以降低cpu的负担,又可以承担一定的计算任务。

 

7、cuda 与linux

    随着tensorflow的流行,cuda也被用于深度学习。一般cuda和ubuntu配合比较多,建议大家多多学习。

 

8、示例代码,参考链接

 

9、nvidia教程

    ​​https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html​​

    基本代码形式如下所示,特别是这个__global__关键字非常重要,它代表是在GPU上面执行的代码

// Kernel definition
__global__ void VecAdd(float* A, float* B, float* C)
{
int i = threadIdx.x;
C[i] = A[i] + B[i];
}

int main()
{
...
// Kernel invocation with N threads
VecAdd<<<1, N>>>(A, B, C);
...
}

 

ps:

    cuda主要用来进行算法加速优化使用,常用于图像,当然使用到矩阵、傅里叶变换的地方都可以使用,这是使用比较多的一个场景。

  

 

 

举报

相关推荐

0 条评论