计算化学公社

标题: 请教Fortran如何获得CPU物理核心数 [打印本页]

作者
Author:
snljty    时间: 2020-3-30 17:21
标题: 请教Fortran如何获得CPU物理核心数
请问Fortran如何获得CPU的物理核心数?
gfortran和Inter fortran都可以,如果能考虑到跨平台(主要是Windows和Linux)。
如果想获得线程总数,又该怎么做呢?
任何方案都可以提出来,谢谢大家。

作者
Author:
njfuzjs    时间: 2020-3-30 21:13
本帖最后由 njfuzjs 于 2020-3-30 21:17 编辑

可以看看这个问题(
https://stackoverflow.com/questions/49141093/get-system-information-with-fortran

作者
Author:
snljty    时间: 2020-3-30 22:27
njfuzjs 发表于 2020-3-30 21:13
可以看看这个问题(
https://stackoverflow.com/questions/49141093/get-system-information-with-fortran ...

谢谢您,那个问题之前看过,感觉主要不是针对这个问题的,用的也都是一些shell的内容,感觉还不是太好。也希望看看有没有别的解决方案。再次感谢。
作者
Author:
itpfeng    时间: 2020-3-30 22:36
https://software.intel.com/en-us ... mpiler/topic/311472
作者
Author:
snljty    时间: 2020-3-30 23:36
itpfeng 发表于 2020-3-30 22:36
https://software.intel.com/en-us/forums/intel-fortran-compiler/topic/311472

谢谢您,这个也看过一下,他那个代码我还没编译出来,有个module找不到。正在尝试。
作者
Author:
zjxitcc    时间: 2020-4-1 00:43
本帖最后由 zjxitcc 于 2020-4-1 00:45 编辑

代码里插入3行(gfortran编译加-fopenmp, ifort编译加-qopenmp)
  1. !$omp parallel
  2. i = OMP_GET_NUM_PROCS()
  3. !$omp end parallel
复制代码

这样可以获取总线程数,如果有超线程数就会等于超线程数
(除非被用户在~/.bashrc里强制指定export OMP_NUM_THREADS)

作者
Author:
sobereva    时间: 2020-4-1 04:06
zjxitcc 发表于 2020-4-1 00:43
代码里插入3行(gfortran编译加-fopenmp, ifort编译加-qopenmp)

这样可以获取总线程数,如果有超线程数 ...

补充一句,开头得声明一下integer OMP_GET_NUM_PROCS(),否则返回值为0
作者
Author:
snljty    时间: 2020-4-1 10:16
zjxitcc 发表于 2020-4-1 00:43
代码里插入3行(gfortran编译加-fopenmp, ifort编译加-qopenmp)

这样可以获取总线程数,如果有超线程数 ...

谢谢建议~
作者
Author:
snljty    时间: 2020-4-1 10:16
sobereva 发表于 2020-4-1 04:06
补充一句,开头得声明一下integer OMP_GET_NUM_PROCS(),否则返回值为0

谢谢提醒




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3