购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.3 用MXMACA打印“Hello World”

学习一种新的编程语言最佳的方法是使用新语言写程序,第一个MXMACA程序和其他任何语言的程序都相同:打印字符串“Hello World”。

2.3.1 过程概述和代码示例

现在,你已经准备好编写第一个MXMACA C程序了。编写MXMACA C程序的主要步骤是:

● 创建一个特殊文件扩展名为.c的源代码文件。

● 使用MXMACA mxcc编译器(mxcc)编译程序。

● 从命令行运行可执行文件,该可执行文件有可在GPU上运行的核函数代码。

具体步骤如下。

(1)首先,我们编写一个打印“Hello World”的程序,示例如下。

(2)将代码保存到文件hello.c,然后用mxcc编译它。和gcc及其他编译器一样,mxcc有类似的语义。

如果运行可执行文件hello,它将输出:

(3)编写一个名为helloFromGpu的核函数,用它来输出字符串“Hello World from GPU!”的代码如下。

(4)用限定符__global__告诉mxcc,该函数将从CPU中调用并在GPU上执行。使用以下代码启动核函数。

三重尖括号用于标记主机线程对设备端代码的调用。核函数是由线程数组执行的,所有线程运行相同的代码。三重尖括号里的参数是执行配置,它指定将使用多少线程来执行该核函数。

在这个例子中,将会运行10个GPU线程,打印“Hello World”的完整代码见示例代码2-1。

示例代码2-1 打印“Hello World”的完整代码

函数mcDeviceReset用来显式销毁并清除与当前设备有关的所有资源。将代码保存到helloFromGpu.c文件,然后用mxcc编译它。

运行这个编译出来的可执行文件,它将输出10个“Hello World from GPU!”字符串,每个GPU线程输出一条,其结果如下。

2.3.2 习题和思考

(1)将文件helloFromGpu.c中的函数mcDeviceReset删除,然后编译并运行,看看会发生什么。

(2)用函数mcDeviceSynchronize替换文件helloFromGpu.c中的函数mcDeviceReset,然后编译并运行,看看会发生什么。

(3)每个执行核函数的线程都有一个唯一的线程ID,通过内置变量threadIdx.x可以在核函数中对线程进行访问。请在文件helloFromGpu.c中修改核函数的线程索引,使输出如下。 NKK8N1eQpfpkAxJeYrpQX1s2KWkEur20vqMFBddMbj1Nu7kYtee7/JwY8a+RCyqC

点击中间区域
呼出菜单
上一章
目录
下一章
×