@@ -48,8 +48,9 @@ function dss_load_perimeter_data_kernel!(
48
48
if gidx ≤ prod (sizep)
49
49
(level, p, fidx, elem) = cart_ind (sizep, gidx). I
50
50
(ip, jp) = perimeter[p]
51
- data_idx = linear_ind (sized, (level, ip, jp, fidx, elem))
52
- pperimeter_data[level, p, fidx, elem] = pdata[data_idx]
51
+ data_idx = linear_ind (sized, (level, ip, jp, elem))
52
+ pperimeter_data. arrays[fidx][level, p, elem] =
53
+ pdata. arrays[fidx][data_idx]
53
54
end
54
55
return nothing
55
56
end
@@ -89,7 +90,8 @@ function dss_unload_perimeter_data_kernel!(
89
90
(level, p, fidx, elem) = cart_ind (sizep, gidx). I
90
91
(ip, jp) = perimeter[p]
91
92
data_idx = linear_ind (sized, (level, ip, jp, fidx, elem))
92
- pdata[data_idx] = pperimeter_data[level, p, fidx, elem]
93
+ pdata. arrays[fidx][data_idx] =
94
+ pperimeter_data. arrays[fidx][level, p, elem]
93
95
end
94
96
return nothing
95
97
end
@@ -148,12 +150,12 @@ function dss_local_kernel!(
148
150
for idx in st: (en - 1 )
149
151
(lidx, vert) = local_vertices[idx]
150
152
ip = perimeter_vertex_node_index (vert)
151
- sum_data += pperimeter_data[ level, ip, fidx , lidx]
153
+ sum_data += pperimeter_data. arrays[fidx][ level, ip, lidx]
152
154
end
153
155
for idx in st: (en - 1 )
154
156
(lidx, vert) = local_vertices[idx]
155
157
ip = perimeter_vertex_node_index (vert)
156
- pperimeter_data[ level, ip, fidx , lidx] = sum_data
158
+ pperimeter_data. arrays[fidx][ level, ip, lidx] = sum_data
157
159
end
158
160
elseif gidx ≤ nlevels * nfidx * (nlocalvertices + nlocalfaces) # interior faces
159
161
nfacedof = div (nperimeter - 4 , 4 )
@@ -169,10 +171,10 @@ function dss_local_kernel!(
169
171
ip1 = inc1 == 1 ? first1 + i - 1 : first1 - i + 1
170
172
ip2 = inc2 == 1 ? first2 + i - 1 : first2 - i + 1
171
173
val =
172
- pperimeter_data[ level, ip1, fidx , lidx1] +
173
- pperimeter_data[ level, ip2, fidx , lidx2]
174
- pperimeter_data[ level, ip1, fidx , lidx1] = val
175
- pperimeter_data[ level, ip2, fidx , lidx2] = val
174
+ pperimeter_data. arrays[fidx][ level, ip1, lidx1] +
175
+ pperimeter_data. arrays[fidx][ level, ip2, lidx2]
176
+ pperimeter_data. arrays[fidx][ level, ip1, lidx1] = val
177
+ pperimeter_data. arrays[fidx][ level, ip2, lidx2] = val
176
178
end
177
179
end
178
180
@@ -683,7 +685,8 @@ function load_from_recv_buffer_kernel!(
683
685
lidx = recv_buf_idx[irecv, 1 ]
684
686
ip = recv_buf_idx[irecv, 2 ]
685
687
idx = level + ((fidx - 1 ) + (irecv - 1 ) * nfid) * nlevels
686
- CUDA. @atomic pperimeter_data[level, ip, fidx, lidx] += recv_data[idx]
688
+ CUDA. @atomic pperimeter_data. arrays[fidx][level, ip, lidx] +=
689
+ recv_data[idx]
687
690
end
688
691
return nothing
689
692
end
0 commit comments