Stabilize EScalar CUDA sync defaults

This commit is contained in:
2026-05-03 00:24:50 +08:00
parent 74ba5feb86
commit 4430d04ee7
6 changed files with 243 additions and 20 deletions

View File

@@ -1324,6 +1324,12 @@ int cuda_data_packer_device_batched(double *data,
while (src && dst)
{
if (!src->data || !dst->data || !src->data->Bg || !dst->data->Bg)
{
src = src->next;
dst = dst->next;
continue;
}
const bool active =
(dir == PACK && dst->data->Bg->rank == rank_in && src->data->Bg->rank == myrank) ||
(dir == UNPACK && src->data->Bg->rank == rank_in && dst->data->Bg->rank == myrank);
@@ -1433,12 +1439,16 @@ bool cuda_segments_device_eligible(MyList<Parallel::gridseg> *src,
bool has_work = false;
while (src && dst)
{
if (!src->data || !dst->data || !src->data->Bg || !dst->data->Bg)
{
src = src->next;
dst = dst->next;
continue;
}
if ((dir == PACK && dst->data->Bg->rank == rank_in && src->data->Bg->rank == myrank) ||
(dir == UNPACK && src->data->Bg->rank == rank_in && dst->data->Bg->rank == myrank))
{
has_work = true;
if (!src->data || !dst->data || !src->data->Bg || !dst->data->Bg)
return false;
int type;
if (src->data->Bg->lev == dst->data->Bg->lev)
type = 1;