| ! { dg-do run } |
| ! |
| ! From the HPCTools Group of University of Houston |
| ! |
| ! For a coindexed object, its cosubscript list determines the image |
| ! index in the same way that a subscript list determines the subscript |
| ! order value for an array element |
| |
| ! Run at least with 3 images for the normal checking code |
| ! Modified to also accept a single or two images |
| program cosubscript_test |
| implicit none |
| |
| integer, parameter :: X = 3, Y = 2 |
| integer, parameter :: P = 1, Q = -1 |
| integer :: me |
| integer :: i,j,k |
| |
| integer :: scalar[0:P, -1:Q, *] |
| |
| integer :: dim3_max, counter |
| logical :: is_err |
| |
| is_err = .false. |
| me = this_image() |
| scalar = me |
| dim3_max = num_images() / ( (P+1)*(Q+2) ) |
| |
| sync all |
| |
| if (num_images() == 1) then |
| k = 1 |
| j = -1 |
| i = 0 |
| if (scalar[i,j,k] /= this_image()) STOP 1 |
| stop "OK" |
| else if (num_images() == 2) then |
| k = 1 |
| j = -1 |
| counter = 0 |
| do i = 0,P |
| counter = counter+1 |
| if (counter /= scalar[i,j,k]) STOP 1 |
| end do |
| stop "OK" |
| end if |
| |
| ! ******* SCALAR *********** |
| counter = 0 |
| do k = 1, dim3_max |
| do j = -1,Q |
| do i = 0,P |
| counter = counter+1 |
| if (counter /= scalar[i,j,k]) then |
| print * , "Error in cosubscript translation scalar" |
| print * , "[", i,",",j,",",k,"] = ",scalar[i,j,k],"/=",counter |
| is_err = .true. |
| end if |
| end do |
| end do |
| end do |
| |
| if (is_err) then |
| STOP 2 |
| end if |
| end program cosubscript_test |