【问题标题】:ERROR while compiling this OpenACC code ? Can anyone figure out?编译此 OpenACC 代码时出错?任何人都可以弄清楚吗?
【发布时间】: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

【问题讨论】:

    标签: openmp hpc openacc


    【解决方案1】:

    这是编译器代码生成错误。虽然我没有看到任何与此相关的问题报告,但您可以尝试使用我们最新的 21.9 版本来查看我们是否已修复它。 https://developer.nvidia.com/nvidia-hpc-sdk-downloads

    另外,如果您可以提供完整的复制示例,我可以检查一下。如果仍然出现,我可以添加问题报告。

    请注意,您是在数据区域开始之后设置设备,因此它将在错误的设备上创建数据。此外,由于您要从两台设备上复制整个“T”数组,因此一台设备会破坏另一台设备。

    【讨论】:

      猜你喜欢
      • 2011-06-14
      • 2017-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多