| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发工具 -> CUDA编程--Square函数 -> 正文阅读 |
|
[开发工具]CUDA编程--Square函数 |
写在前面的话: 上一篇文章我们编写了‘Hello World’, 这篇文章我们再进一步! 首先,我们理一下CUDA的编程思路: host: cpu device: gpu 1.分配host内存, 并进行数据初始化; 简单点说,就是把CPU变量搬到GPU上,把函数改写到GPU上,在GPU上运算,再把结果搬回CPU。 函数改写到GPU只需要注意线程和块,其他基本一致。 我们下面用数组平方的实例来进一步了解。 实战:数组平方这一次的代码我们不像之前那样在终端进行编译,我们使用IDE进行编译和运行,毕竟稍微长一点的代码还是IDE用着比较舒服。我使用的IDE是Clion,可以自行百度安装。 用IDE的话,我们需要建立4个文件: CMakelists.txt, main.cpp, square.cu, square.h 。使用Clion新建项目 CMakelists.txt, main.cpp会自动生成。剩余两个文件需要我们新建生成: CMakelists.txt: 用于配置编译选项,例如文件路径,cuda选项,可执行文件等 main.cpp: 主函数cpp ,不多说 square.cu : Cuda 编程文件,在该文件中编写Cuda程序 square.h: 头文件,用于申明函数,使square中的函数可以被cpp调用 完整的代码可以在我的github中获得:GitHub - weiguangzhao/cuda_demohttps://github.com/weiguangzhao/cuda_demo square.cu
从square文件中,可以清楚的看到CUDA编程逻辑,先定义CPU变量h_in, h_out (h指host),初始化CPU变量值,再分配GPU空间,再将CPU数据搬移到GPU上。Square函数,我们利用GPU线程索引去实现并行运算。通过以下代码,我们设置了一个块和64个线程去执行square函数,这也就意味着,一次并行运算便可以实现64维数组的平方计算。
运算完成后, 我们将结果(d_out) 搬回CPU 并进行打印。 square.h头文件,我们需要申明CPU函数, 而不是带有__global__ 的GPU函数
main.cpp主函数更简单了, 就是在main中调用头文件申明的函数即可。
CMakelists.txt编译文件和C++的略有不同,生成的文件为cuda可执行文件,还需要检测cuda包是否存在,以及Cuda配置选项。其中Cuda的算力arch=sm_75可以在该网址查询:CUDA GPU | NVIDIA Developer
编写好文件后,我们只需要右键Reload Cmakelists.txt文件,便可以点击右上角运行按钮进行运行 ?结果如下: ?参考链接: WIN10下查看CUDA版本 & 显卡计算能力_boniu2019的博客-CSDN博客 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/16 3:30:10- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |