[Chapel Merge] In comm=ofi, register uninitialized static data al

Branch: refs/heads/main
Revision: 811ad7f
Author: gbtitus
Log Message:

Merge pull request #18204 from gbtitus/register-data-better

In comm=ofi, register uninitialized static data along with initialized.

(Reviewed by @ronawho and @jhh67.)

In the ofi comm layer when not using scalable memory registration,
while our intent has been to register the whole static data segment
along with any fixed heap, we've actually only been registering the
initialized part of it, i.e. the .data and related sections. We've
been skipping the uninitialized .bss section, the implicitly zeroed
part of static data. Here, add the latter.

Surprisingly, this seems to make the comm layer barrier performance
worse. We had expected it would make it better, because the barrier
works off of a static, implicitly zeroed data structure and has been
doing AM-mediated remote PUTs instead of direct RMA. Nevertheless, the
empty-chpl-barrier test case seems to run about twice as long with
this change present. However, on a positive note, this does seem to
help the hangs we've been seeing in that test. In 20 runs of 50,000
trials each I didn't see any hangs at all. We suspect there is more
to do with respect to that problem, but this is a promising result in
the meantime.

Modified Files:
M runtime/src/comm/ofi/comm-ofi.c

Compare: https://github.com/chapel-lang/chapel/compare/d89e062d78ad...811ad7f6cfa3