Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

openshmem-parcelport initial import #6308

Closed
wants to merge 428 commits into from

Conversation

ct-clmsn
Copy link
Contributor

@ct-clmsn ct-clmsn commented Jul 25, 2023

Any background context you want to provide?

Implements an OpenSHMEM parcelport. This PR adds cmake-based (via pkg-config) OpenSHMEM configuration for the sandia-openshmem and the ucx-openshmem.

OpenSHMEM creates a distributed shared segment on each locality. The following flags were added to cmake.

-DHPX_WITH_PARCELPORT_OPENSHMEM=ON
-DHPX_WITH_PARCELPORT_OPENSHMEM_CONDUIT={sos, ucx}

The sos option is for Sandia-OpenSHMEM. The ucx option is for the UCX-OpenSHMEM.

Both Sandia OpenSHMEM and UCX-OpenSHMEM should be compiled with --enable-shared to make sure their OpenSHMEM builds are shared libraries. The GASNet-parcelport established the foundation for this implementation. Each locality gets a page of symmetric memory, equal to what is provided in GASNet, for communication.

Checklist

Not all points below apply to all pull requests.

  • I have added a new feature and have added tests to go along with it.

@StellarBot
Copy link

Performance test report

HPX Performance

Comparison

BENCHMARKFORK_JOIN_EXECUTORPARALLEL_EXECUTORSCHEDULER_EXECUTOR
For Each(=)??-

Info

PropertyBeforeAfter
HPX Datetime2023-05-10T12:07:53+00:002023-07-25T01:32:54+00:00
HPX Commitdcb5415a4397d3
Clusternamerostamrostam
Hostnamemedusa08.rostam.cct.lsu.edumedusa08.rostam.cct.lsu.edu
Datetime2023-05-10T14:50:18.616050-05:002023-07-24T20:41:08.096903-05:00
Compiler/opt/apps/llvm/13.0.1/bin/clang++ 13.0.1/opt/apps/llvm/13.0.1/bin/clang++ 13.0.1
Envfile

Comparison

BENCHMARKNO-EXECUTOR
Future Overhead - Create Thread Hierarchical - Latch=

Info

PropertyBeforeAfter
HPX Datetime2023-05-10T12:07:53+00:002023-07-25T01:32:54+00:00
HPX Commitdcb5415a4397d3
Clusternamerostamrostam
Hostnamemedusa08.rostam.cct.lsu.edumedusa08.rostam.cct.lsu.edu
Datetime2023-05-10T14:52:35.047119-05:002023-07-24T20:43:22.598094-05:00
Compiler/opt/apps/llvm/13.0.1/bin/clang++ 13.0.1/opt/apps/llvm/13.0.1/bin/clang++ 13.0.1
Envfile

Comparison

BENCHMARKFORK_JOIN_EXECUTOR_DEFAULT_FORK_JOIN_POLICY_ALLOCATORPARALLEL_EXECUTOR_DEFAULT_PARALLEL_POLICY_ALLOCATORSCHEDULER_EXECUTOR_DEFAULT_SCHEDULER_EXECUTOR_ALLOCATOR
Stream Benchmark - Add(=)(=)(=)
Stream Benchmark - Scale(=)(=)(=)
Stream Benchmark - Triad(=)=(=)
Stream Benchmark - Copy(=)(=)(=)

Info

PropertyBeforeAfter
HPX Datetime2023-05-10T12:07:53+00:002023-07-25T01:32:54+00:00
HPX Commitdcb5415a4397d3
Clusternamerostamrostam
Hostnamemedusa08.rostam.cct.lsu.edumedusa08.rostam.cct.lsu.edu
Datetime2023-05-10T14:52:52.237641-05:002023-07-24T20:43:40.002408-05:00
Compiler/opt/apps/llvm/13.0.1/bin/clang++ 13.0.1/opt/apps/llvm/13.0.1/bin/clang++ 13.0.1
Envfile

Explanation of Symbols

SymbolMEANING
=No performance change (confidence interval within ±1%)
(=)Probably no performance change (confidence interval within ±2%)
(+)/(-)Very small performance improvement/degradation (≤1%)
+/-Small performance improvement/degradation (≤5%)
++/--Large performance improvement/degradation (≤10%)
+++/---Very large performance improvement/degradation (>10%)
?Probably no change, but quite large uncertainty (confidence interval with ±5%)
??Unclear result, very large uncertainty (±10%)
???Something unexpected…

@StellarBot
Copy link

Performance test report

HPX Performance

Comparison

BENCHMARKFORK_JOIN_EXECUTORPARALLEL_EXECUTORSCHEDULER_EXECUTOR
For Each(=)??-

Info

PropertyBeforeAfter
HPX Datetime2023-05-10T12:07:53+00:002023-07-25T14:17:40+00:00
HPX Commitdcb54158626ce7
Datetime2023-05-10T14:50:18.616050-05:002023-07-25T09:26:02.549234-05:00
Clusternamerostamrostam
Hostnamemedusa08.rostam.cct.lsu.edumedusa08.rostam.cct.lsu.edu
Envfile
Compiler/opt/apps/llvm/13.0.1/bin/clang++ 13.0.1/opt/apps/llvm/13.0.1/bin/clang++ 13.0.1

Comparison

BENCHMARKNO-EXECUTOR
Future Overhead - Create Thread Hierarchical - Latch=

Info

PropertyBeforeAfter
HPX Datetime2023-05-10T12:07:53+00:002023-07-25T14:17:40+00:00
HPX Commitdcb54158626ce7
Datetime2023-05-10T14:52:35.047119-05:002023-07-25T09:28:17.273190-05:00
Clusternamerostamrostam
Hostnamemedusa08.rostam.cct.lsu.edumedusa08.rostam.cct.lsu.edu
Envfile
Compiler/opt/apps/llvm/13.0.1/bin/clang++ 13.0.1/opt/apps/llvm/13.0.1/bin/clang++ 13.0.1

Comparison

BENCHMARKFORK_JOIN_EXECUTOR_DEFAULT_FORK_JOIN_POLICY_ALLOCATORPARALLEL_EXECUTOR_DEFAULT_PARALLEL_POLICY_ALLOCATORSCHEDULER_EXECUTOR_DEFAULT_SCHEDULER_EXECUTOR_ALLOCATOR
Stream Benchmark - Add===
Stream Benchmark - Scale(=)(=)(=)
Stream Benchmark - Triad(=)(=)(=)
Stream Benchmark - Copy(=)=(=)

Info

PropertyBeforeAfter
HPX Datetime2023-05-10T12:07:53+00:002023-07-25T14:17:40+00:00
HPX Commitdcb54158626ce7
Datetime2023-05-10T14:52:52.237641-05:002023-07-25T09:28:34.633886-05:00
Clusternamerostamrostam
Hostnamemedusa08.rostam.cct.lsu.edumedusa08.rostam.cct.lsu.edu
Envfile
Compiler/opt/apps/llvm/13.0.1/bin/clang++ 13.0.1/opt/apps/llvm/13.0.1/bin/clang++ 13.0.1

Explanation of Symbols

SymbolMEANING
=No performance change (confidence interval within ±1%)
(=)Probably no performance change (confidence interval within ±2%)
(+)/(-)Very small performance improvement/degradation (≤1%)
+/-Small performance improvement/degradation (≤5%)
++/--Large performance improvement/degradation (≤10%)
+++/---Very large performance improvement/degradation (>10%)
?Probably no change, but quite large uncertainty (confidence interval with ±5%)
??Unclear result, very large uncertainty (±10%)
???Something unexpected…

ct-clmsn and others added 26 commits October 19, 2023 12:39
The major changes include:

 - Necessary changes to CMake files to accommodate changes due to the split of the original LCI library into two libraries (LCI and LCT).
 - A new performance counters and logging infrastructure based on LCT (currently only applied to the lci pp).
    - Controlled by CMake variables HPX_WITH_PARCELPORT_LCI_PCOUNTER and HPX_WITH_PARCELPORT_LCI_LOG. The default is OFF.
 - New LCI parcelport configurations:
   - reg_mem: whether to explicitly register memory buffers for long messages (value 1) or just let LCI register them on the fly (value 0). The default is 1.
   - ndevices: how many LCI devices (low-level network contexts) to use. The default is 2.
   - ncomps: how many completion managers to use. The default is 1.
@ct-clmsn
Copy link
Contributor Author

@hkaiser is it ok if this branch is closed in favor of a newer branch build around the current version of HPX? the rebase is a little too extensive.

@hkaiser
Copy link
Member

hkaiser commented Oct 24, 2023

@hkaiser is it ok if this branch is closed in favor of a newer branch build around the current version of HPX? the rebase is a little too extensive.

Sure, whatever works for you. You could also simply force push your new version to this PR (overwrite what's there), though.

@ct-clmsn ct-clmsn closed this Oct 25, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.