Skip to content

Commit a325ae2

Browse files
committed
Adds OpenACC unit test
1 parent 43cc850 commit a325ae2

File tree

1 file changed

+213
-0
lines changed

1 file changed

+213
-0
lines changed
Lines changed: 213 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,213 @@
1+
>!Made-up directives to test OpenACC support
2+
#^ source.fortran.free comment.line.fortran
3+
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free comment.line.fortran
4+
>program main
5+
#^^^^^^^ source.fortran.free meta.program.fortran keyword.control.program.fortran
6+
# ^ source.fortran.free meta.program.fortran
7+
# ^^^^ source.fortran.free meta.program.fortran entity.name.program.fortran
8+
> implicit none
9+
#^^ source.fortran.free meta.program.fortran meta.block.specification.fortran
10+
# ^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.statement.implicit.fortran keyword.other.implicit.fortran
11+
# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.statement.implicit.fortran
12+
# ^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran meta.statement.implicit.fortran keyword.other.none.fortran
13+
>
14+
> !The highlighting should continue on the second line
15+
#^^ source.fortran.free meta.program.fortran meta.block.specification.fortran
16+
# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
17+
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
18+
> !$acc data copy(A) copyin(B(:)) copyout(C(1:N)) present(D) &
19+
#^^ source.fortran.free meta.program.fortran meta.block.specification.fortran
20+
# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
21+
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
22+
> !$acc& no_create(E) deviceptr(F)
23+
#^^ source.fortran.free meta.program.fortran meta.block.specification.fortran
24+
# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
25+
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
26+
>
27+
> !$acc parallel loop private(foo) firstprivate(bar) tile(32,32)
28+
#^^ source.fortran.free meta.program.fortran meta.block.specification.fortran
29+
# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
30+
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
31+
>
32+
> !$acc parallel
33+
#^^ source.fortran.free meta.program.fortran meta.block.specification.fortran
34+
# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
35+
# ^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
36+
> !$acc loop collapse(2)
37+
#^^ source.fortran.free meta.program.fortran meta.block.specification.fortran
38+
# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
39+
# ^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
40+
> !$acc end parallel
41+
#^^ source.fortran.free meta.program.fortran meta.block.specification.fortran
42+
# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
43+
# ^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
44+
>
45+
> !$acc end data
46+
#^^ source.fortran.free meta.program.fortran meta.block.specification.fortran
47+
# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
48+
# ^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
49+
>
50+
> !$acc kernels default(present)
51+
#^^ source.fortran.free meta.program.fortran meta.block.specification.fortran
52+
# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
53+
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
54+
> !$acc loop independent
55+
#^^ source.fortran.free meta.program.fortran meta.block.specification.fortran
56+
# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
57+
# ^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
58+
> !$acc loop reduction(+:sum)
59+
#^^ source.fortran.free meta.program.fortran meta.block.specification.fortran
60+
# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
61+
# ^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
62+
> !$acc loop reduction(max:the_max)
63+
#^^ source.fortran.free meta.program.fortran meta.block.specification.fortran
64+
# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
65+
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
66+
> !$acc loop gang worker vector
67+
#^^ source.fortran.free meta.program.fortran meta.block.specification.fortran
68+
# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
69+
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
70+
> !$acc loop gang(128) worker(4) vector(128)
71+
#^^ source.fortran.free meta.program.fortran meta.block.specification.fortran
72+
# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
73+
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
74+
> !$acc loop seq
75+
#^^ source.fortran.free meta.program.fortran meta.block.specification.fortran
76+
# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
77+
# ^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
78+
> !$acc end kernels
79+
#^^ source.fortran.free meta.program.fortran meta.block.specification.fortran
80+
# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
81+
# ^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
82+
>
83+
> !$acc parallel loop num_gangs(1) num_workers(1) vector_length(1) default(none)
84+
#^^ source.fortran.free meta.program.fortran meta.block.specification.fortran
85+
# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
86+
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
87+
>
88+
> !$acc enter data create(A(1:N)) attach(B)
89+
#^^ source.fortran.free meta.program.fortran meta.block.specification.fortran
90+
# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
91+
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
92+
>
93+
> !$acc update device(A) async
94+
#^^ source.fortran.free meta.program.fortran meta.block.specification.fortran
95+
# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
96+
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
97+
> !$acc update host(A(1:N)) async(1)
98+
#^^ source.fortran.free meta.program.fortran meta.block.specification.fortran
99+
# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
100+
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
101+
> !$acc update self(A(:)) async(2) wait(1)
102+
#^^ source.fortran.free meta.program.fortran meta.block.specification.fortran
103+
# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
104+
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
105+
> !$acc wait(1)
106+
#^^ source.fortran.free meta.program.fortran meta.block.specification.fortran
107+
# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
108+
# ^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
109+
> !$acc wait
110+
#^^ source.fortran.free meta.program.fortran meta.block.specification.fortran
111+
# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
112+
# ^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
113+
>
114+
> !$acc exit data delete(A) detach(B) finalize
115+
#^^ source.fortran.free meta.program.fortran meta.block.specification.fortran
116+
# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
117+
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
118+
>
119+
> !$acc serial self(.TRUE.) if(.FALSE.)
120+
#^^ source.fortran.free meta.program.fortran meta.block.specification.fortran
121+
# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
122+
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
123+
>
124+
> !$acc host_data use_device(A)
125+
#^^ source.fortran.free meta.program.fortran meta.block.specification.fortran
126+
# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
127+
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
128+
> !$acc end host_data
129+
#^^ source.fortran.free meta.program.fortran meta.block.specification.fortran
130+
# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
131+
# ^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
132+
>
133+
> !$acc declare device_resident(A)
134+
#^^ source.fortran.free meta.program.fortran meta.block.specification.fortran
135+
# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
136+
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
137+
>
138+
> !$acc init device_type(foo) device_num(bar)
139+
#^^ source.fortran.free meta.program.fortran meta.block.specification.fortran
140+
# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
141+
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
142+
> !$acc shutdown device_type(foo) device_num(bar)
143+
#^^ source.fortran.free meta.program.fortran meta.block.specification.fortran
144+
# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
145+
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
146+
> !$acc set default_async(1)
147+
#^^ source.fortran.free meta.program.fortran meta.block.specification.fortran
148+
# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
149+
# ^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
150+
>
151+
> !$acc cache(A(:))
152+
#^^ source.fortran.free meta.program.fortran meta.block.specification.fortran
153+
# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
154+
# ^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
155+
>
156+
> ! Test all four forms of atomic
157+
#^^ source.fortran.free meta.program.fortran meta.block.specification.fortran
158+
# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
159+
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
160+
> !$acc atomic capture
161+
#^^ source.fortran.free meta.program.fortran meta.block.specification.fortran
162+
# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
163+
# ^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
164+
> !$acc end atomic
165+
#^^ source.fortran.free meta.program.fortran meta.block.specification.fortran
166+
# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
167+
# ^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
168+
> !$acc atomic update
169+
#^^ source.fortran.free meta.program.fortran meta.block.specification.fortran
170+
# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
171+
# ^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
172+
> !$acc end atomic
173+
#^^ source.fortran.free meta.program.fortran meta.block.specification.fortran
174+
# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
175+
# ^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
176+
> !$acc atomic read
177+
#^^ source.fortran.free meta.program.fortran meta.block.specification.fortran
178+
# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
179+
# ^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
180+
> !$acc end atomic
181+
#^^ source.fortran.free meta.program.fortran meta.block.specification.fortran
182+
# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
183+
# ^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
184+
> !$acc atomic write
185+
#^^ source.fortran.free meta.program.fortran meta.block.specification.fortran
186+
# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
187+
# ^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
188+
> !$acc end atomic
189+
#^^ source.fortran.free meta.program.fortran meta.block.specification.fortran
190+
# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
191+
# ^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
192+
>
193+
> !The "do" should not highlight, if it does it's coming from OpenMP
194+
#^^ source.fortran.free meta.program.fortran meta.block.specification.fortran
195+
# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
196+
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
197+
> !$acc parallel do
198+
#^^ source.fortran.free meta.program.fortran meta.block.specification.fortran
199+
# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
200+
# ^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
201+
> !The "do" here still should, since it is OpenMP
202+
#^^ source.fortran.free meta.program.fortran meta.block.specification.fortran
203+
# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
204+
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
205+
> !$omp parallel do
206+
#^^ source.fortran.free meta.program.fortran meta.block.specification.fortran
207+
# ^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
208+
# ^^^^^^^^^^^^^^^^ source.fortran.free meta.program.fortran meta.block.specification.fortran comment.line.fortran
209+
>
210+
>end program main
211+
#^^^^^^^^^^^ source.fortran.free meta.program.fortran keyword.control.endprogram.fortran
212+
# ^ source.fortran.free meta.program.fortran
213+
# ^^^^ source.fortran.free meta.program.fortran entity.name.program.fortran

0 commit comments

Comments
 (0)