data-1.f90 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. ! { dg-do run }
  2. ! { dg-additional-options "-cpp" }
  3. function is_mapped (n) result (rc)
  4. use openacc
  5. integer, intent (in) :: n
  6. logical rc
  7. #if ACC_MEM_SHARED
  8. integer i
  9. rc = .TRUE.
  10. i = n
  11. #else
  12. rc = acc_is_present (n, sizeof (n))
  13. #endif
  14. end function is_mapped
  15. program main
  16. integer i, j
  17. logical is_mapped
  18. i = -1
  19. j = -2
  20. !$acc data copyin (i, j)
  21. if (is_mapped (i) .eqv. .FALSE.) stop 1
  22. if (is_mapped (j) .eqv. .FALSE.) stop 2
  23. if (i .ne. -1 .or. j .ne. -2) stop 3
  24. i = 2
  25. j = 1
  26. if (i .ne. 2 .or. j .ne. 1) stop 4
  27. !$acc end data
  28. if (i .ne. 2 .or. j .ne. 1) stop 5
  29. i = -1
  30. j = -2
  31. !$acc data copyout (i, j)
  32. if (is_mapped (i) .eqv. .FALSE.) stop 6
  33. if (is_mapped (j) .eqv. .FALSE.) stop 7
  34. if (i .ne. -1 .or. j .ne. -2) stop 8
  35. i = 2
  36. j = 1
  37. if (i .ne. 2 .or. j .ne. 1) stop 9
  38. !$acc parallel present (i, j)
  39. i = 4
  40. j = 2
  41. !$acc end parallel
  42. !$acc end data
  43. if (i .ne. 4 .or. j .ne. 2) stop 10
  44. i = -1
  45. j = -2
  46. !$acc data create (i, j)
  47. if (is_mapped (i) .eqv. .FALSE.) stop 11
  48. if (is_mapped (j) .eqv. .FALSE.) stop 12
  49. if (i .ne. -1 .or. j .ne. -2) stop 13
  50. i = 2
  51. j = 1
  52. if (i .ne. 2 .or. j .ne. 1) stop 14
  53. !$acc end data
  54. if (i .ne. 2 .or. j .ne. 1) stop 15
  55. i = -1
  56. j = -2
  57. !$acc data present_or_copyin (i, j)
  58. if (is_mapped (i) .eqv. .FALSE.) stop 16
  59. if (is_mapped (j) .eqv. .FALSE.) stop 17
  60. if (i .ne. -1 .or. j .ne. -2) stop 18
  61. i = 2
  62. j = 1
  63. if (i .ne. 2 .or. j .ne. 1) stop 19
  64. !$acc end data
  65. if (i .ne. 2 .or. j .ne. 1) stop 20
  66. i = -1
  67. j = -2
  68. !$acc data present_or_copyout (i, j)
  69. if (is_mapped (i) .eqv. .FALSE.) stop 21
  70. if (is_mapped (j) .eqv. .FALSE.) stop 22
  71. if (i .ne. -1 .or. j .ne. -2) stop 23
  72. i = 2
  73. j = 1
  74. if (i .ne. 2 .or. j .ne. 1) stop 24
  75. !$acc parallel present (i, j)
  76. i = 4
  77. j = 2
  78. !$acc end parallel
  79. !$acc end data
  80. if (i .ne. 4 .or. j .ne. 2) stop 25
  81. i = -1
  82. j = -2
  83. !$acc data present_or_copy (i, j)
  84. if (is_mapped (i) .eqv. .FALSE.) stop 26
  85. if (is_mapped (j) .eqv. .FALSE.) stop 27
  86. if (i .ne. -1 .or. j .ne. -2) stop 28
  87. i = 2
  88. j = 1
  89. if (i .ne. 2 .or. j .ne. 1) stop 29
  90. !$acc end data
  91. #if ACC_MEM_SHARED
  92. if (i .ne. 2 .or. j .ne. 1) stop 30
  93. #else
  94. if (i .ne. -1 .or. j .ne. -2) stop 31
  95. #endif
  96. i = -1
  97. j = -2
  98. !$acc data present_or_create (i, j)
  99. if (is_mapped (i) .eqv. .FALSE.) stop 32
  100. if (is_mapped (j) .eqv. .FALSE.) stop 33
  101. i = 2
  102. j = 1
  103. if (i .ne. 2 .or. j .ne. 1) stop 34
  104. !$acc end data
  105. if (i .ne. 2 .or. j .ne. 1) stop 35
  106. i = -1
  107. j = -2
  108. !$acc data copyin (i, j)
  109. !$acc data present (i, j)
  110. if (is_mapped (i) .eqv. .FALSE.) stop 36
  111. if (is_mapped (j) .eqv. .FALSE.) stop 37
  112. if (i .ne. -1 .or. j .ne. -2) stop 38
  113. i = 2
  114. j = 1
  115. if (i .ne. 2 .or. j .ne. 1) stop 39
  116. !$acc end data
  117. !$acc end data
  118. if (i .ne. 2 .or. j .ne. 1) stop 40
  119. i = -1
  120. j = -2
  121. !$acc data copyin (i, j)
  122. !$acc data present (i, j)
  123. if (is_mapped (i) .eqv. .FALSE.) stop 41
  124. if (is_mapped (j) .eqv. .FALSE.) stop 42
  125. if (i .ne. -1 .or. j .ne. -2) stop 43
  126. i = 2
  127. j = 1
  128. if (i .ne. 2 .or. j .ne. 1) stop 44
  129. !$acc end data
  130. !$acc end data
  131. if (i .ne. 2 .or. j .ne. 1) stop 45
  132. i = -1
  133. j = -2
  134. !$acc data
  135. #if !ACC_MEM_SHARED
  136. if (is_mapped (i) .eqv. .TRUE.) stop 46
  137. if (is_mapped (j) .eqv. .TRUE.) stop 47
  138. #endif
  139. if (i .ne. -1 .or. j .ne. -2) stop 48
  140. i = 2
  141. j = 1
  142. if (i .ne. 2 .or. j .ne. 1) stop 49
  143. !$acc end data
  144. if (i .ne. 2 .or. j .ne. 1) stop 50
  145. end program main