算子的计算算法实现通过Ascend C API来完成,而算子的加载调用则使用Runtime API来完成。本章节将结合核函数调用介绍CANN软件栈中Ascend C算子运行时常用的Runtime接口。Runtime接口更多信息与细节可以参考《Runtime运行时 API》。

Kernel的加载与执行也可以通过二进制加载方式实现,这是最底层的接口实现方式。内核调用符<<<...>>>为对底层接口的封装实现。使用时需要bisheng命令行编译将算子源文件编译为二进制.o文件,再通过aclrtLaunchKernelWithConfig等Kernel加载与执行接口完成算子调用。
核函数的调用是异步的,核函数的调用结束后,控制权立刻返回给主机端,可以调用以下aclrtSynchronizeStream函数来强制主机端程序等待所有核函数执行完毕。
1
|
aclError aclrtSynchronizeStream(aclrtStream stream); |