Skip to content
Damian Rouson edited this page Mar 10, 2022 · 7 revisions

Coarray Memory Allocation

The compiler is responsible for

  • Allocating any nonallocatable coarrays upon program initiation
  • Deallocating any allocatable, local coarrays upon exiting a procedure or block construct

Behaviors required for coarray memory allocations

  • We need to be able to allocate symmetric and asymmetric shared objects
    • We will exploit symmetry to reduce costs
    • Alternatives:
      • Static partitioning: cut the shared heap into two pieces at startup and run allocators independently on each portion of the shared memory. (Pro: simplicity. Con: User must specify symmetric/asymmetric sizes at startup.)
      • Dynamic partitioning: (Pro: allows utilization to be determined at runtime by program behavior. Con: complexity.)
  • We will provide the memory segment and the allocator adheres to the provided bounds

Capabilities we will have to build

  • We need the ability to implicitly free objects at end team statements.
Clone this wiki locally