没有针对omp_set_num_threads()的特定子例程

问题描述 投票:0回答:1

我想通过以下方式将我的线程数设置为10:

CALL OMP_SET_NUM_THREADS(10)
!$OMP PARALLEL 
T=OMP_GET_NUM_THREADS()
!$OMP END PARALLEL
PRINT*, T

它打印出10,这是正确的。但是,如果我定义一个变量NUM_THREADS,并将其传递给get threads number子例程,如下所示:

INTEGER(KIND=16), PARAMETER :: NUM_THREADS=10
CALL OMP_SET_NUM_THREADS(NUM_THREADS)

并运行它,它给了我错误:

Error: There is no specific subroutine for the generic ‘omp_set_num_threads’ at (1).

这是为什么?

fortran openmp
1个回答
1
投票

我不知道你的编译器有哪种类型的整数作为KIND=16,但它似乎是一个非标准类型,OpenMP没有相应的子程序。

对于一个可以用标准的16位或32位整数轻松表示的数字,没有理由使用非标准的互联网类型。

将类型描述符保留在INTEGER声明之外,它应该可以工作。

© www.soinside.com 2019 - 2024. All rights reserved.