[Chapel Merge] Check in draft distributed map implementation

Branch: refs/heads/main
Revision: 9ecb49f6d572e969788e821d4b03d6a984d72344
Author: Lydia Duncan
Link: Check in draft distributed map implementation by lydia-duncan · Pull Request #21039 · chapel-lang/chapel · GitHub
Log Message:

Add bones of v2 DistributedMap implementation and a test to use it
This adds another version of the distributed map type, as presented last week internally. The distributed map exploration is being used to finalize the interface of serial maps for 2.0, by ensuring that feature extensions needed to support it are present in the language and don't require extensive differences between their interfaces. Features: it prevents reference invalidation in the type by not allowing references to values within the map via getReference or [] accesses. It provides an updateAggregator method and aggregator type to hopefully enable more efficient updates to a large number of key/value pairs. This method takes in a first-class function to update the value in an enclosed operation, which is intended to prevent lost or partial updates to the value. As it stands, we will probably not go with this exact implementation to support distributed maps. The aggregator strategy as written is a little obnoxious to use and is a little too specialized to the map implementation - one of the benefits we thought we would get from it would be something that could be applied to set and list as well, but the current implementation does not fulfill that desire. However, the use of first class functions seems okay. This will allow Jeremiah to use it as a reference more easily when working on his reference invalidation exploration. Passed a full paratest with futures TODOs (that won't be addressed before merging): - additional methods (currently 6, but may want more than that) - add support for only running over a sparse/subset of locales - test an actually large map - test a different hash function - test with various class types for the key and val type (owned, shared, nilable, nonnilable)
Compare: Comparing 689898456bfc7ecb49b87f5c5397cf9e347f3b71...9ecb49f6d572e969788e821d4b03d6a984d72344 · chapel-lang/chapel · GitHub
Diff: https://github.com/chapel-lang/chapel/pull/21039.diff
Modified Files:
util/test/sub_test.py

Added Files:
test/library/draft/DistributedMap/v2/.gitignore,test/library/draft/DistributedMap/v2/Aggregator.chpl,test/library/draft/DistributedMap/v2/Aggregator.notest,test/library/draft/DistributedMap/v2/DistributedMap.chpl,test/library/draft/DistributedMap/v2/DistributedMap.notest,test/library/draft/DistributedMap/v2/checkAddContains.chpl,test/library/draft/DistributedMap/v2/checkAddContains.good,test/library/draft/DistributedMap/v2/checkAddOrSet.chpl,test/library/draft/DistributedMap/v2/checkAddOrSet.good,test/library/draft/DistributedMap/v2/checkClear.chpl,test/library/draft/DistributedMap/v2/checkClear.good,test/library/draft/DistributedMap/v2/checkExtendWithDistMap.chpl,test/library/draft/DistributedMap/v2/checkExtendWithDistMap.good,test/library/draft/DistributedMap/v2/checkExtendWithSerialMap.chpl,test/library/draft/DistributedMap/v2/checkExtendWithSerialMap.good,test/library/draft/DistributedMap/v2/checkGetAndRemove.chpl,test/library/draft/DistributedMap/v2/checkGetAndRemove.good,test/library/draft/DistributedMap/v2/checkGetValue.chpl,test/library/draft/DistributedMap/v2/checkGetValue.good,test/library/draft/DistributedMap/v2/checkGetValueAfterThrow.chpl,test/library/draft/DistributedMap/v2/checkGetValueAfterThrow.good,test/library/draft/DistributedMap/v2/checkIsEmpty.chpl,test/library/draft/DistributedMap/v2/checkIsEmpty.good,test/library/draft/DistributedMap/v2/checkItems.chpl,test/library/draft/DistributedMap/v2/checkItems.good,test/library/draft/DistributedMap/v2/checkKeys.chpl,test/library/draft/DistributedMap/v2/checkKeys.good,test/library/draft/DistributedMap/v2/checkRead.chpl,test/library/draft/DistributedMap/v2/checkRead.good,test/library/draft/DistributedMap/v2/checkRead.txt,test/library/draft/DistributedMap/v2/checkRemove.chpl,test/library/draft/DistributedMap/v2/checkRemove.good,test/library/draft/DistributedMap/v2/checkSet.chpl,test/library/draft/DistributedMap/v2/checkSet.good,test/library/draft/DistributedMap/v2/checkSize.chpl,test/library/draft/DistributedMap/v2/checkSize.good,test/library/draft/DistributedMap/v2/checkValues.chpl,test/library/draft/DistributedMap/v2/checkValues.good,test/library/draft/DistributedMap/v2/checkWrite.chpl,test/library/draft/DistributedMap/v2/checkWrite.good,test/library/draft/DistributedMap/v2/checkWrite.prediff,test/library/draft/DistributedMap/v2/use-distributed-map.bad,test/library/draft/DistributedMap/v2/use-distributed-map.chpl,test/library/draft/DistributedMap/v2/use-distributed-map.cleanfiles,test/library/draft/DistributedMap/v2/use-distributed-map.future,test/library/draft/DistributedMap/v2/use-distributed-map.good,test/library/draft/DistributedMap/v2/use-distributed-map.prediff,test/library/draft/DistributedMap/v2/verifyDistMap.chpl,test/library/draft/DistributedMap/v2/verifyDistMap.comm-none.good,test/library/draft/DistributedMap/v2/verifyDistMap.good,test/library/draft/DistributedMap/v2/verifyDistMap.numlocales

Removed Files: