gpt4 book ai didi

c++ - 使用 -fopenmp 编译时禁用 C++ 中的默认 Armadillo

转载 作者:搜寻专家 更新时间:2023-10-31 01:33:29 25 4
gpt4 key购买 nike

在 Armadillo C++ 中,有什么方法可以在使用 -fopenmp 编译时禁用默认并行化。我希望并行化在代码的其他部分。

我特别感兴趣的函数是eig_sym()。

非常感谢,烟台

最佳答案

Armadillo 未与 OpenMP 并行化,但有一些注意事项:

  • 底层的 LAPACK 或 BLAS 实现可能是并行化的。如果您使用的是 OpenBLAS,它就是。
  • Armadillo gmm_diag 实现使用 OpenMP。

所以最简单的方法是“不要使用 OpenBLAS,而是使用单线程 BLAS”。但这不是唯一的方法。

在我看来,您想禁用嵌套并行性,以便并行化代码的唯一部分位于代码的较高级别,而不是 eig_sym() 中。以下是关于 OMP_NESTED 的一些文档:

https://docs.oracle.com/cd/E19205-01/819-5270/aewbc/index.html

因此,您可以在运行时将环境 OMP_NESTED 设置为 false,或者在您的代码中使用 omp_set_nested()

关于c++ - 使用 -fopenmp 编译时禁用 C++ 中的默认 Armadillo ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41324199/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com