aclSysParamOpt
typedef enum {
ACL_OPT_DETERMINISTIC = 0,
ACL_OPT_ENABLE_DEBUG_KERNEL = 1,
ACL_OPT_STRONG_CONSISTENCY = 2,
} aclSysParamOpt;
枚举项 |
说明 |
|---|---|
ACL_OPT_DETERMINISTIC |
是否开启确定性计算。
当开启确定性计算功能时,算子在相同的硬件和输入下,多次执行将产生相同的输出。但启用确定性计算往往导致算子执行变慢。 默认情况下,不开启确定性计算,算子在相同的硬件和输入下,多次执行的结果可能不同。这个差异的来源,一般是因为在算子实现中,存在异步的多线程执行,会导致浮点数累加的顺序变化。 通常建议不开启确定性计算,因为确定性计算往往会导致算子执行变慢,进而影响性能。当发现模型多次执行结果不同,或者是进行精度调优时,可开启确定性计算,辅助模型调试、调优。 |
ACL_OPT_ENABLE_DEBUG_KERNEL |
是否开启算子执行阶段的Global Memory访问越界检测。
编译算子前调用aclSetCompileoptaclSetCompileopt接口将ACL_OP_DEBUG_OPTION配置为oom,同时配合调用aclrtCtxSetSysParamOptaclrtCtxSetSysParamOpt接口(作用域是Context)或aclrtSetSysParamOptaclrtSetSysParamOpt接口(作用域是进程)将ACL_OPT_ENABLE_DEBUG_KERNEL配置为1,开启Global Memory访问越界检测,这时执行算子过程中,若从Global Memory中读写数据(例如读算子输入数据、写算子输出数据等)出现内存越界,则会返回“EZ9999”错误码,表示存在算子AI Core Error问题。 |
ACL_OPT_STRONG_CONSISTENCY |
是否开启强一致性计算。预留参数,当前配置无效。 0:不开启强一致性计算。默认不开启。 1:开启强一致性计算。 当开启强一致性计算功能时,计算结果是确定的,多次执行将产生相同的输出。此外,计算结果与数据的位置无关。例如,在进行矩阵乘时,不同行的累加顺序可能不同,这可能会导致相同数据在不同行的计算结果出现细微差异。然而,在启用强一致性计算的情况下,即使在不同的行中,只要输入相同,计算结果也将一致。 默认情况下,不开启强一致性计算,这可能导致相同数据位于不同行时,计算结果出现不一致的现象。 通常建议不开启强一致性计算,因为这会导致算子执行速度变慢,影响性能。只有在需要严格保证不同位置上的相同数据计算结果一致,或进行精度调优时,才应开启强一致性计算,以辅助模型调试和优化。 |