0

我正在做一个项目,我正在尝试并行化应用程序。我正在尝试并行化一些函数,但问题是这些函数非常频繁地调用其他函数。循环仅用于计算,一个函数体中有许多循环。我知道 OpenACC 在其指令中不支持函数调用(仅内联调用),所以我想出了两种方法:a)要么将 OpenAcc 指令放在循环周围并获得所需的并行性并忽略函数调用(不仅仅是忽略它只是保持原样)(在每个函数体中都这样做)b)或者我可以将被调用的函数体放在调用函数中,然后在输入 acc 指令时多次创建线程的开销被最小化(通过包括一个块中的大量循环)。

我不知道如何处理这种情况。

总之,我需要找到一种有效的方法来并行化 OpenACC 中的函数调用

4

1 回答 1

0

正如一些Mark Ebersole所说,OpenACC 2.0 就是解决方案。2.0中的routine指令允许将函数标记为设备目标。

于 2016-07-16T17:32:24.147 回答