Hello,
I have a loop parallelized as:
3460
3461 !$acc data copyin(dt, rho_zz_old(1:nVertLevels, 1:nCellsSolve)), &
3462 !$acc copy(qv_old(1:nVertLevels, 1:nCellsSolve)), &
3463 !$acc copy(qc_old(1:nVertLevels, 1:nCellsSolve)), &
3464 !$acc copy(qr_old(1:nVertLevels, 1:nCellsSolve)), &
3465 !$acc copy(qi_old(1:nVertLevels, 1:nCellsSolve)), &
3466 !$acc copy(qs_old(1:nVertLevels, 1:nCellsSolve)), &
3467 !$acc copy(qg_old(1:nVertLevels, 1:nCellsSolve)), &
3468 !$acc copy(qv_tnd(1:nVertLevels, 1:nCellsSolve)), &
3469 !$acc copy(qc_tnd(1:nVertLevels, 1:nCellsSolve)), &
3470 !$acc copy(qr_tnd(1:nVertLevels, 1:nCellsSolve)), &
3471 !$acc copy(qi_tnd(1:nVertLevels, 1:nCellsSolve)), &
3472 !$acc copy(qs_tnd(1:nVertLevels, 1:nCellsSolve)), &
3473 !$acc copy(qg_tnd(1:nVertLevels, 1:nCellsSolve))
3474 !$acc parallel loop gang vector collapse(2) independent private(inv_rho_zz_old)
3475 do iCell = 1, nCellsSolve
3476 do k = 1, nVertLevels
3477 inv_rho_zz_old = 1.0_RKIND / rho_zz_old(k,iCell)
3478
3479 qv_old(k,iCell) = qv_old(k,iCell)+dt*qv_tnd(k,iCell)inv_rho_zz_old
3480 qc_old(k,iCell) = qc_old(k,iCell)+dtqc_tnd(k,iCell)inv_rho_zz_old
3481 qr_old(k,iCell) = qr_old(k,iCell)+dtqr_tnd(k,iCell)inv_rho_zz_old
3482 qi_old(k,iCell) = qi_old(k,iCell)+dtqi_tnd(k,iCell)inv_rho_zz_old
3483 qs_old(k,iCell) = qs_old(k,iCell)+dtqs_tnd(k,iCell)inv_rho_zz_old
3484 qg_old(k,iCell) = qg_old(k,iCell)+dtqg_tnd(k,iCell)*inv_rho_zz_old
3485
3486 qv_tnd(k,iCell) = 0.0_RKIND
3487 qc_tnd(k,iCell) = 0.0_RKIND
3488 qr_tnd(k,iCell) = 0.0_RKIND
3489 qi_tnd(k,iCell) = 0.0_RKIND
3490 qs_tnd(k,iCell) = 0.0_RKIND
3491 qg_tnd(k,iCell) = 0.0_RKIND
3492 end do
3493 end do
3494 !$acc end parallel
3495 !$acc end data
3496
It compiled OK, and have problem to run it.
The message is:
3474: compute region reached 1 time
3474: kernel launched 1 time
grid: [4382] block: [128]
device time(us): total=0 max=0 min=0 avg=0
The MPI aborted with error:
= BAD TERMINATION OF ONE OF YOUR APPLICATION PROCESSES
= PID 46871 RUNNING AT htdgfxl07.universalweather.rdn
= EXIT CODE: 1
= CLEANING UP REMAINING PROCESSES
= YOU CAN IGNORE THE BELOW CLEANUP MESSAGES
It runs fine if this loop does not have OpenACC directives.
Any idea?
Thanks,
Wei