【发布时间】:2021-12-20 02:42:51
【问题描述】:
这是代码。
CALL OMP_SET_NUM_THREADS(2)
!$omp parallel num_threads(acc_get_num_devices(acc_device_nvidia))
!$omp sections
!$omp section
!$acc data copyout(T) copyin(T_o)
call acc_set_device_num(1, acc_device_nvidia )
!$acc kernels
do j=2,(nj-1)/2
do i=2,ni-1
T(i,j)=0.25*(T_o(i+1,j)+T_o(i-1,j)+ T_o(i,j+1)+T_o(i,j-1))
enddo
enddo
!$acc end kernels
!$acc end data
!$omp section
!$acc data copyout(T) copyin(T_o)
call acc_set_device_num(2, acc_device_nvidia )
do j=((nj-1)/2)+1,nj-1
do i=2,ni-1
T(i,j)=0.25*(T_o(i+1,j)+T_o(i-1,j)+ T_o(i,j+1)+T_o(i,j-1))
enddo
enddo
!$acc end data
!$omp end sections
!$omp end parallel
这是我得到的编译错误。 enter image description here
我还附上了下面的错误文本: /home/opt_ohpc_pub/nvhpc-sdk/Linux_x86_64/20.7/compilers/share/llvm/bin/opt: /tmp/nvfortrancom0gYsq9huq.ll:1227:32: 错误: alloca 的类型无效 %acc_set_device_num_ = alloca void (...), 对齐 8
【问题讨论】: