我想通过执行以下操作将我的线程数设置为10:
CALL OMP_SET_NUM_THREADS(10)
!$OMP PARALLEL
T=OMP_GET_NUM_THREADS()
!$OMP END PARALLEL
PRINT*, T
它打印出10,这是正确的。但是,如果我定义了一个变量NUM_THREADS,并将其传递给GetThreadsNumer子例程,如下所示:
INTEGER(KIND=16), PARAMETER :: NUM_THREADS=10
CALL OMP_SET_NUM_THREADS(NUM_THREADS)
然后运行它,它给了我一个bug:
Error: There is no specific subroutine for the generic ‘omp_set_num_threads’ at (1).
为什么会这样呢?
发布于 2019-03-14 00:23:31
我不知道您的编译器将哪种类型的整数作为KIND=16
,但它似乎是一种非标准类型,OpenMP没有相应的子例程。
对于一个可以很容易地用标准的16或32位整数表示的数字,确实没有理由使用非标准的互联网类型。
在INTEGER
声明中去掉种类描述符,它应该可以工作。
https://stackoverflow.com/questions/55153067
复制相似问题