防御性编程 - 2022.1 简体中文

Vitis 统一软件平台文档 应用加速开发 (UG1393)

Document ID
UG1393
Release Date
2022-05-25
Version
2022.1 简体中文

Vitis 编译器能够创建非常高效的实现。但是在某些情况下,可能会发生实现问题。其中一种情况是,发出了写入请求,但进程中没有足够数据可用于完成写入传输事务。如果此问题影响多个并发内核,并且内核的写入请求要求完成输入读取,那么这就可能会造成死锁状况。

为避免这种情况,在适配器上提供了一种保守模式。原则上,它可延迟写入请求,直至它具备完成写入所需的所有数据为止。可通过在 v++ 编译器中应用以下 --advanced.param 选项,在编译过程中启用该模式:

--advanced.param:compiler.axiDeadLockFree=yes

由于启用该模式可能会影响性能,您也许更希望将其作为防御性编程技巧来使用,即在开发和测试过程中插入该选项,而后在最优化过程中将其移除。您也可以在加速器反复挂起时添加该选项。