Programming Libraries
 Share
The version of the browser you are using is no longer supported. Please upgrade to a supported browser.Dismiss

 
$
%
123
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ABCDEFGHIJKLMNOPQRSTUVWXYZAA
1
2
Working definition: Programming Libraries are systems that can be used by application developers to write entire applications (unlike scientific libraries, which are used as a component by the programmer). Just as programming languages, prog. libraries implement a progrmming model, but with no (or negigible) compiler support. Because of the fuzziness of the boundary between them, if you are not sure which one is relevant for you, please answer both (languages vs libraries), or pick one that seems most relevant.
3
MPICharm++XPIUPC++XPRESS
4
2Does the library address multicore nodes? If yes, what does it do to optimize for intra-node parallelization and communication?Optimizied implementations exploit shared memory for intra-node communication. Additionally, the MPI standard supports (in MPI 3.0) shared memory segments with a node, if the MPI implementation decides to implement it. MPI libraries can optionally supprt multithreading within the host process (thread support can be requested/probed during init)Yes, within node communication is optimized using shared memory automatically by the RTS. Constructs for exploiting node-level parallelism are supported in two ways - node level objects that can use all processors and parallel tasks/loop iterations.

1)    
The library addresses multicore, which is its
principal purpose. The ParalleX execution model is devised to incorporate
mechanisms, principally the “compute complex” (which can be implemented as a
thread instantiation) which runs on a single locality (e.g., node) with a
hierarchical name space in a global address space (spanning localities). This
exploits intra-node parallelism and communications.

5
3Is the library network-topology aware? Does it expose it to the user, if so how? How does it take advantage of the topology information?Users can express logical communication topogology information and optimized libraries can choose to optimize based on this information. Support for this features is currently lacking in most MPI implementations.A topology manager to query the topology of the network is provided by the RTS. It is used to statically and dynamically map communicating objects on near-by processors. The RTS also constructs topology aware spanning trees to optimize broadcast and reduction.

1)    
The library implementation can be topology aware
in its mapping of physical localities to logical ParalleX processes but this
topology information is not exposed to the user for direct manipulation; this
to preserve programming invariants for performance portability. Asynchrony
management addresses concerns of latency variability and uncertainty.

6
4What type of global entities are exposed by the library to the programmer - processes, data arrays, objects?MPI provides communication between processes. Communication is always relative to communicators (representing sets of processes) - by default MPI_COMM_WORLD is exposed, which includes all processes in the executed program. Other objects can/will be created by users on demandTypical Charm++ programs are written using objects - all the scheduling and communication is directed towards the objects. Advance use cases may exploit processor aware entities.

1)    
Asynchrony is supported through the use of
preemptable threads for nonblocking, parcels for message-driven computation
(and latency reduction), and local control objects for event-driven control as
well as the underlying support of the runtime system for dynamic adaptive
execution.

7
5Is asynchrony supported? How?Yes, asynchronous communication (non-blocking) using request objects paired with matching test/wait operations, applies to P2P and collective operations; additionally, MPI supports RMA/one-sided communicationYes, communication is sender driven and non-blocking. There is no recv-like call that would block a processor. Execution is triggered by availability of data (macro data-flow). A send request is delegated to the RTS while the user code continues execution. On multi-core nodes, a separate communication thread asynchronously performs the send-recv.

1)    
Asynchrony is supported through the use of
preemptable threads for nonblocking, parcels for message-driven computation
(and latency reduction), and local control objects for event-driven control as
well as the underlying support of the runtime system for dynamic adaptive
execution.

8
6What form of collective communication is supported - broadcast, reduction, others? Synchronously or asynchronously?Collective operations: Bcast, Barrier, Gather, Allgather, scatter, reduce (with predefined and user defined reductions), allreduce, scan (prefix operations), all2all - operations exist for (sub)communicators, neighborhoods, as well as in synchronous or asynchronous modesAsynchronous, non-blocking, broadcasts and reductions are supported.

1)    
Collective operations are not explicitly
elevated as a class of communication primitives at this time. However, they can
be implemented with the existing constructs and a set of MPI-like reduction
operations have been developed. These are both synchronous and asynchronous.

9
7Is RDMA supported? How?MPI includes support of one sided/RMA operations; specific implementations can and use RDMA for this; RDMA can and is alos used for two-sided communication (extensive literature on this topic)Yes, a high level API is provided to initiate and query RDMA operations. Also, the runtime transparently uses RDMA where appropriate for messaging.

1)    
Advanced RDMA operators are an important part of
the ParalleX execution model, the XPI programming interface library, and the
HPX runtime system libraries. These support remote actions, remote compound
atomic operation sequences, block data movement directly to memory, and data
and control state changes to local control objects and compute complex
registers.

10
8Are active messages supported?No, put inclusion of AM is under discussion for future MPI standard revisionsYes, it is a fundamental property of execution in Charm++.

1)    
An advanced version of active messages,
“parcels”, are supported and are critical to latency-effect reduction,
asynchrony management, and symmetry of semantics between local and global
operation.

11
9Does the library provide support for aggregation of messages? If yes, what kind of aggregation - pairwise, topology based?Transparent message aggregation can be done by libraries as part of their optimization; at user level, MPI provides the functinality for reductions/aggregations (using predefined and user defined operators)Yes, topology aware aggregation using multi-dimensional virtual topologies is supported.

   
Message aggregation is an implicit
implementation service of the HPX runtime system but not exposed to the
programmer.

12
10Does your library provide interfaces for tools (performance, debugging, and correctness)Yes: PMPI, MPI_T, MPIR, msq debug interfaceYes, interface for detailed profiling and debugging is available - projections and charmdebug are primary tools for these purposes.

1)    
Introspection is a basic component of the HPX-4
runtime system and user interface support is being built into the model for
programmer control.

13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
Loading...
Main menu