5. 示例
5.1. 编译包含设备和主机函数的源文件
假设源文件是 a.maca,MXMACA安装在根目录下。命令如下:
$ mxcc a.maca -o a.out
5.2. 编译C/C++源文件
假设源文件是 a.c 和 b.cpp,MXMACA安装在根目录下。命令如下:
$ mxcc a.c -o a.out
$ mxcc b.cpp -o b.out
5.3. 编译并单独链接
源文件可以先编译成目标文件,然后相互链接。目标文件也可以通过其他链接器进行链接。请注意,如果使用mxcc作为链接器,则不应在命令中添加 -x maca。
假设源文件是 a.maca 和 b.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.maca 和 b.maca,且 a.maca 可能会使用定义在 b.maca 中的函数。MXMACA安装在根目录下。命令如下:
$ mxcc -fgpu-rdc a.maca b.maca -o a.out
5.5. 编译设备函数定义在其他文件中的源文件并单独链接
支持使用定义在另一个文件中的设备函数。在这种情况下,需要 -fgpu-rdc。链接命令中还需要 -maca-link。
假设源文件是 a.maca 和 b.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安装在根目录下。
创建一个文件夹,并把 self.bc 放进去。
将安装在 /opt/maca/lib 的设备库 maca_kernellib.bc 和 maca_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