【发布时间】:2021-08-16 14:59:45
【问题描述】:
我们已经在 C 中实现了一个外部延迟函数,我们想在我们的 Modelica 模型(传输线)中调用它。我们的目标是加速 CPU 时间。不幸的是,它增加了 CPU 时间。
我的问题是:
【问题讨论】:
标签: openmp modelica openmodelica
我们已经在 C 中实现了一个外部延迟函数,我们想在我们的 Modelica 模型(传输线)中调用它。我们的目标是加速 CPU 时间。不幸的是,它增加了 CPU 时间。
我的问题是:
【问题讨论】:
标签: openmp modelica openmodelica
没有。这是一个非常简单的调用,您只能在 Modelica 中明确定义的时间点使用外部函数调用。但是,如果您引入代数循环,您可能会遇到问题。
没有。它只是一个指针。如果某些东西很慢,它是在外部对象本身或它是如何使用的。
您提前编译库并将 -fopenmp 标志添加到链接器标志或外部函数的库注释中。在 OpenMP 中仅使用 1 个线程时代码运行速度会变慢吗?编写快速并行代码很困难,而且 OpenMP 隐藏了很多细节,所以很难知道为什么它运行得更慢。
【讨论】:
setLinkerFlags("-fopenmp")。不过,这仅对当前会话有效。否则,您可以使用注释:external "C" annotation(Library="-fopenmp");,但这可能无法跨工具移植(可能编译器不使用-fopenmp 标志)。