gpt4 book ai didi

module - 为什么在模块中声明常量时 omp 函数不起作用?

转载 作者:行者123 更新时间:2023-12-02 10:47:13 25 4
gpt4 key购买 nike

我为我的全局变量声明定义了一个模块“gvars”。当我定义integer :: nthreads, max_threads, tid, omp_get_max_threads, omp_get_num_threads, omp_get_thread_num在我的 gvars 模块内部,调用 maxthreads = omp_get_max_threads()在我的主程序中,编译时出现以下错误:

maxthreads = omp_get_max_threads()
1
Error: Unclassifiable statement at (1)

但是当我包含 integer ::在我的主程序中上面的定义,它编译得很好并给了我想要的结果。如果我什至去定义 nthreads = -1在我的 gvars 模块中,我能够在我的主程序中打印出正确的值,所以我知道它被正确包含和定义,只是由于某种原因我不能将它作为 openmp 函数的返回值。

为什么会这样?

有没有其他方法可以将这些值保留为全局变量并仍然在我的主程序而不是模块中定义它们?

如果重要的话,我正在使用 gfortran 进行编译

最佳答案

问题不在于 maxthreads 的声明。 ,但在同一行声明 omp_get_max_threads .正如 haraldkl 所示,您需要 use omp_lib相反,自动访问这些函数的声明。

(如果出于某种原因您真的不想这样做,您也可以在模块中添加语句 external :: omp_get_max_threads, ...。)

关于module - 为什么在模块中声明常量时 omp 函数不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9344335/

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