“使用omp_lib”实际上有什么作用?

What does `use omp_lib` actually do?

提问人:M0M0 提问时间:10/27/2023 更新时间:10/27/2023 访问量:60

问:

根据指南,需要包括启用 openmp 功能。但是,如果我用我的代码编译执行良好,并且无论是否使用,我都会获得预期的速度。use omp_libifort -qopenmpuse omp_lib

那么我应该做什么,我应该包括这一行吗?use omp_lib

Fortran OpenMP 英特尔-Fortran

评论

0赞 Ian Bush 10/27/2023
尝试添加到代码中,并在使用和不使用该模块的情况下进行编译。假设您正在使用 ,如果没有,就没有希望。Write( *, * ) omp_get_max_threads()Implicit None
0赞 PierU 10/27/2023
该模块为所有 OpenMP 函数/子例程提供接口。它不是必需的,但如果没有它,你就没有任何编译器检查调用是否正确,你必须声明你正在使用的函数的类型。omp_lib

答:

2赞 Vladimir F Героям слава 10/27/2023 #1

它是一个与其他模块一样的模块。通常,它们包含常量、变量、类型定义和模块过程(子例程/函数)或外部过程的接口。omp_lib

只需这样做,就可以将这些实体的所有这些名称引入可访问的命名空间中。它完全不会影响基本的 OpenMP 功能和指令。use

这些特定模块究竟带来了什么,可以在 OpenMP 官方规范文档或特定 OpenMP 库的文档中找到,例如 GCC 的 9.3 OpenMP 模块OMP_LIB和OMP_LIB_KINDS。它们确实允许您访问各种命名常量、派生类型和函数以及子例程。

评论

0赞 Holmz 10/31/2023
虽然可以链接,但 USE <...> 将在符合要求时检查声明,并导入任何常量和变量。