我想通过以下方式将我的线程数设置为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).
这是为什么?
我不知道你的编译器有哪种类型的整数作为KIND=16
,但它似乎是一个非标准类型,OpenMP没有相应的子程序。
对于一个可以用标准的16位或32位整数轻松表示的数字,没有理由使用非标准的互联网类型。
将类型描述符保留在INTEGER
声明之外,它应该可以工作。