应该首选 OpenACC 编译指示或运行时例程

Should OpenACC pragmas or runtime routines be preferred?

本文关键字:指示 运行时 例程 编译 OpenACC      更新时间:2023-10-16

OpenACC有一些编译指示和运行时例程,可以用来基本实现相同的事情。

例如,有#pragma acc waitacc_wait()#pragma acc update [...]acc_update_[...]()

我开始在C++代码中主要使用运行时例程。

有区别吗?我应该更喜欢一个而不是另一个,还是只是风格和个人喜好的问题?

通常,编译指示是首选的,因为它们将被其他编译器忽略,并且在未启用 OpenACC 的情况下进行编译时。 运行时 API 调用需要由宏(如"#ifdef _OPENACC")保护,以保持可移植性。

但是,如果您不介意添加宏防护或失去便携性,那么这主要是风格问题。 在功能上,它们是等效的。