Skip to content

Commit 76c9e69

Browse files
committed
Fix edge case in offset padding for empty cells
1 parent 7481867 commit 76c9e69

2 files changed

Lines changed: 6 additions & 2 deletions

File tree

backends/cuda-ref/ceed-cuda-ref-restriction.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -550,16 +550,18 @@ int CeedElemRestrictionCreate_Cuda(CeedMemType mem_type, CeedCopyMode copy_mode,
550550
CeedCallBackend(CeedMalloc(num_elem, &points_per_elem));
551551
for (CeedInt i = 0; i < num_elem; i++) {
552552
CeedInt num_points = offsets[i + 1] - offsets[i];
553+
CeedInt last_point = offsets[offsets[i]] * num_comp;
553554

554555
points_per_elem[i] = num_points;
555556
at_points_size += num_points;
556557
// -- Copy all points in element
557558
for (CeedInt j = 0; j < num_points; j++) {
558559
offsets_padded[i * max_points + j] = offsets[offsets[i] + j] * num_comp;
560+
last_point = offsets_padded[i * max_points + j];
559561
}
560562
// -- Replicate out last point in element
561563
for (CeedInt j = num_points; j < max_points; j++) {
562-
offsets_padded[i * max_points + j] = offsets[offsets[i] + num_points - 1] * num_comp;
564+
offsets_padded[i * max_points + j] = last_point;
563565
}
564566
}
565567
CeedCallBackend(CeedSetHostCeedIntArray(offsets, copy_mode, at_points_size, &impl->h_offsets_at_points_owned, &impl->h_offsets_at_points_borrowed,

backends/hip-ref/ceed-hip-ref-restriction.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -551,16 +551,18 @@ int CeedElemRestrictionCreate_Hip(CeedMemType mem_type, CeedCopyMode copy_mode,
551551
CeedCallBackend(CeedMalloc(num_elem, &points_per_elem));
552552
for (CeedInt i = 0; i < num_elem; i++) {
553553
CeedInt num_points = offsets[i + 1] - offsets[i];
554+
CeedInt last_point = offsets[offsets[i]] * num_comp;
554555

555556
points_per_elem[i] = num_points;
556557
at_points_size += num_points;
557558
// -- Copy all points in element
558559
for (CeedInt j = 0; j < num_points; j++) {
559560
offsets_padded[i * max_points + j] = offsets[offsets[i] + j] * num_comp;
561+
last_point = offsets_padded[i * max_points + j];
560562
}
561563
// -- Replicate out last point in element
562564
for (CeedInt j = num_points; j < max_points; j++) {
563-
offsets_padded[i * max_points + j] = offsets[offsets[i] + num_points - 1] * num_comp;
565+
offsets_padded[i * max_points + j] = last_point;
564566
}
565567
}
566568
CeedCallBackend(CeedSetHostCeedIntArray(offsets, copy_mode, at_points_size, &impl->h_offsets_at_points_owned, &impl->h_offsets_at_points_borrowed,

0 commit comments

Comments
 (0)