我想通过以下操作将线程号设置为10:
CALL OMP_SET_NUM_THREADS(10)
!$OMP PARALLEL
T=OMP_GET_NUM_THREADS()
!$OMP END PARALLEL
PRINT*, T
它打印出10,是正确的。但是,如果我定义了一个变量NUM_THREADS,并将其传递到获取线程号子例程中,如下所示:
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).
那是为什么?
答案 0 :(得分:1)
我不知道您的编译器具有哪种KIND=16
整数类型,但似乎这是非标准类型的,OpenMP没有相应的子例程。
确实没有理由使用非标准的Internet类型的数字来轻松地用标准的16位或32位整数表示。
将类型描述符从INTEGER
声明中删除,它应该可以工作。