gpt4 book ai didi

c++ - 如何从 C/C++ 控制全局 OpenMP 设置?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:57:09 27 4
gpt4 key购买 nike

OpenMP 不提供 API 来调整运行时的一些关键设置,例如OMP_WAIT_POLICYGOMP_SPINCOUNT (至少在 gcc 4.8.3 中)。出于某种原因,此类设置旨在通过环境变量进行更改。不太方便。

有什么方法可以在 Linux 上使用 gcc 从 C/C++ 更改运行时的此类设置?

例如,是否足以更改相应的环境变量(例如通过 stdlib.h 中的 putenv?)。 OpenMP 内核会立即获取新设置还是只在进程启动时读取一次?

附言在 Windows 上,Intel C++/Fortran 为设置提供了额外的功能(例如 kmp_set_blocktime)。

最佳答案

OpenMP 标准 explicitly says :

Modifications to the environment variables after the program has started, even if modified by the program itself, are ignored by the OpenMP implementation. However, the settings of some of the ICVs can be modified during the execution of the OpenMP program by the use of the appropriate directive clauses or OpenMP API routines.

因此,如果没有通过编译器指令或通过运行时库例程给出句柄,一旦代码开始,您就无法修改这些值。

当然,由于 GOMP_SPINCOUNT 不是标准化的环境变量,它可能不符合 OpenMP 标准要求……但我只能说这些。

关于c++ - 如何从 C/C++ 控制全局 OpenMP 设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32970102/

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