5. 示例

5.1. 编译包含设备和主机函数的源文件

假设源文件是 a.maca,MXMACA安装在根目录下。命令如下:

$ mxcc a.maca -o a.out

5.2. 编译C/C++源文件

假设源文件是 a.cb.cpp,MXMACA安装在根目录下。命令如下:

$ mxcc a.c -o a.out
$ mxcc b.cpp -o b.out

5.3. 编译并单独链接

源文件可以先编译成目标文件,然后相互链接。目标文件也可以通过其他链接器进行链接。请注意,如果使用mxcc作为链接器,则不应在命令中添加 -x maca

假设源文件是 a.macab.maca,MXMACA安装在根目录下。命令如下:

$ mxcc -c a.maca -o a.o
$ mxcc -c b.maca -o b.o
$ mxcc a.o b.o -o a.out

5.4. 编译设备函数定义在其他文件中的源文件

支持使用定义在另一个文件中的设备函数。在这种情况下,需要 -fgpu-rdc

假设源文件是 a.macab.maca,且 a.maca 可能会使用定义在 b.maca 中的函数。MXMACA安装在根目录下。命令如下:

$ mxcc -fgpu-rdc a.maca b.maca -o a.out

5.5. 编译设备函数定义在其他文件中的源文件并单独链接

支持使用定义在另一个文件中的设备函数。在这种情况下,需要 -fgpu-rdc。链接命令中还需要 -maca-link

假设源文件是 a.macab.maca,且 a.maca 可能会使用定义在 b.maca 中的函数。MXMACA安装在根目录下。命令如下:

$ mxcc -fgpu-rdc -c a.maca -o a.o
$ mxcc -fgpu-rdc -c b.maca -o b.o
$ mxcc -fgpu-rdc --maca-link a.o b.o -o a.out

5.6. 编译设备和主机函数有自定义设备库的源文件

假设源文件是 a.maca,自定义设备库是 self.bc。MXMACA安装在根目录下。

  1. 创建一个文件夹,并把 self.bc 放进去。

  2. 将安装在 /opt/maca/lib 的设备库 maca_kernellib.bcmaca_mathlib.bc 复制到文件夹中。命令如下:

    $ mkdir selfdir
    $ cp /opt/maca/lib/maca_kernellib.bc /opt/maca/lib/maca_mathlib.bc selfdir
    $ mxcc a.maca -o a.out --maca-device-lib-path ./selfdir --maca-device-lib=maca_kernellib.bc
    --maca-device-lib=maca_mathlib.bc --maca-device-lib=self.bc