Skip to content

Commit 9730a4a

Browse files
ktrasbonachea
andauthored
Add implementation status doc (#130)
* Add draft of feature support doc * Add todo notes to implementation status doc * Rename feature-support.md to implementation-support.md * Add link to implementation status doc in README * Add sections and empty tables for each of the corresponding PRIF procedure sections * Add introductory paragraph to implementation status doc * Fix links in implementation status doc * Complete table for Program Startup and Shutdown in implementation status doc * Complete Image Queries table in implementation status doc * Complete Storage Management table in implementation status doc * Complete Coarray Queries table in implementation status doc * Complete Continguous Coarray Access table in implementation status doc * Complete Strided Coarray Access table in implementation status doc * Complete SYNC Statements table in implementation status doc * Complete Locks and Unlocks table in implementation status doc * Complete Critical table in implementation status doc * Complete Events and Notifications table in implementation status doc * Complete Teams table in implementation status doc * Update Collectives table in implementation status doc * Update Atomic Memory Operations table in implementation status doc * Update verbage at top of implementation status doc * Fix links in implementation status doc * Comment out tables in implementation status doc for sections where there is no support at all. These tables can be commented back in when there is partial or full support. * Update docs/implementation-status.md Co-authored-by: Dan Bonachea <dobonachea@lbl.gov> * Update docs/implementation-status.md Co-authored-by: Dan Bonachea <dobonachea@lbl.gov> * Update docs/implementation-status.md Co-authored-by: Dan Bonachea <dobonachea@lbl.gov> * Update docs/implementation-status.md Co-authored-by: Dan Bonachea <dobonachea@lbl.gov> * Update docs/implementation-status.md Co-authored-by: Dan Bonachea <dobonachea@lbl.gov> * Update docs/implementation-status.md Co-authored-by: Dan Bonachea <dobonachea@lbl.gov> * Remove "n/a" from the notes section * Update syntax in tables to make more visual differentiation * Adjust support for `co_{min,max}` * Update docs/implementation-status.md Co-authored-by: Dan Bonachea <dobonachea@lbl.gov> --------- Co-authored-by: Dan Bonachea <dobonachea@lbl.gov>
1 parent 4f82204 commit 9730a4a

File tree

2 files changed

+249
-0
lines changed

2 files changed

+249
-0
lines changed

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,11 @@ Run tests
5454
./build/run-fpm.sh test
5555
```
5656

57+
Implementation Status
58+
--------------------
59+
60+
For details on the PRIF features that are implemented, please see the [Implementation Status doc](docs/implementation-status.md).
61+
5762
Publications
5863
------------
5964

docs/implementation-status.md

Lines changed: 244 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,244 @@
1+
# Implementation Status
2+
3+
Caffeine is an implementation of the Parallel Runtime Interface for Fortran (PRIF). This document
4+
outlines the implementation status in Caffeine of the features defined in the
5+
[latest PRIF specification, revision 0.4](https://dx.doi.org/10.25344/S4WG64). Caffeine contains interfaces for all
6+
of the PRIF procedures and the symbols are linkable and callable, but some procedures will fail at runtime with an unimplemented error. For
7+
more details about the implementation of the various PRIF features, please see the
8+
following sections:
9+
10+
- [Named Constants](#Named-Constants)
11+
- [`stat` and `errmsg` support](#stat-and-errmsg-support) - NO support yet
12+
- [Program Startup and Shutdown](#Program-Startup-and-Shutdown)
13+
- [Image Queries](#Image-Queries)
14+
- [Storage Management](#Storage-Management)
15+
- [Coarray Queries](#Coarray-Queries)
16+
- [Continguous Coarray Access](#Continguous-Coarray-Access)
17+
- [Strided Coarray Access](#Strided-Coarray-Access)
18+
- [SYNC Statements](#SYNC-Statements)
19+
- [Locks and Unlocks](#Locks-and-Unlocks)
20+
- [Critical](#Critical)
21+
- [Events and Notifications](#Events-and-Notifications)
22+
- [Teams](#teams)
23+
- [Collectives](#Collectives)
24+
- [Atomic Memory Operations](#Atomic-Memory-Operations)
25+
26+
27+
## Named Constants
28+
29+
Caffeine contains definitions for all of the PRIF-relevant constants from ISO_FORTRAN_ENV and for
30+
all of the PRIF-specific constants.
31+
32+
## `stat` and `errmsg` support
33+
34+
Many PRIF procedures have optional arguments `stat`, `errmsg`, and `errmsg_alloc`. There is no
35+
support for these optional arguments in Caffeine yet and this is not represented in the tables
36+
in the following sections.
37+
38+
39+
## Program Startup and Shutdown
40+
### Support = partial
41+
42+
| Procedure | Status | Notes |
43+
|-----------|--------|-------|
44+
| `prif_init` | **YES** | |
45+
| `prif_stop`, `prif_error_stop` | *partial* | Missing support for `quiet=.true.` |
46+
| `prif_fail_image` | no | |
47+
48+
---
49+
50+
## Image Queries
51+
### Support = partial
52+
53+
| Procedure | Status | Notes |
54+
|-----------|--------|-------|
55+
| `prif_num_images` | **YES** | |
56+
| `prif_num_images_with_team`, `prif_num_images_with_team_number` | no | |
57+
| `prif_this_image_no_coarray` | *partial* | team argument is ignored |
58+
| `prif_this_image_with_coarray`, `prif_this_image_with_dim` | no | |
59+
| `prif_failed_images` | no | |
60+
| `prif_stopped_images` | no | |
61+
| `prif_image_status` | no | |
62+
63+
---
64+
65+
## Storage Management
66+
### Support = partial (no support for coarray aliases)
67+
68+
| Procedure | Status | Notes |
69+
|-----------|--------|-------|
70+
| `prif_allocate_coarray` | **YES** | |
71+
| `prif_allocate` | **YES** | |
72+
| `prif_deallocate_coarray` | *partial* | no `final_func` arg support |
73+
| `prif_deallocate` | **YES** | |
74+
| `prif_alias_create` | no | |
75+
| `prif_alias_destroy` | no | |
76+
77+
---
78+
79+
## Coarray Queries
80+
### Support = partial (only support for `prif_image_index`)
81+
82+
| Procedure | Status | Notes |
83+
|-----------|--------|-------|
84+
| `prif_set_context_data`, `prif_get_context_data` | no | |
85+
| `prif_size_bytes` | no | |
86+
| `prif_lcobound_no_dim`, `prif_lcobound_with_dim` | no | |
87+
| `prif_ucobound_no_dim`, `prif_ucobound_with_dim` | no | |
88+
| `prif_coshape` | no | |
89+
| `prif_image_index` | **YES** | |
90+
| `prif_image_index_with_team` | no | |
91+
| `prif_image_index_with_team_number` | no | |
92+
93+
---
94+
95+
## Continguous Coarray Access
96+
### Support = partial
97+
98+
| Procedure | Status | Notes |
99+
|-----------|--------|-------|
100+
| `prif_get` | **YES** | |
101+
| `prif_get_indirect` | **YES** | |
102+
| `prif_put` | **YES** | |
103+
| `prif_put_indirect` | **YES** | |
104+
| `prif_put_with_notify` | no | |
105+
| `prif_put_with_notify_indirect` | no | |
106+
| `prif_put_indirect_with_notify` | no | |
107+
| `prif_put_indirect_with_notify_indirect` | no | |
108+
109+
---
110+
111+
## Strided Coarray Access
112+
### Support = no
113+
114+
<!---
115+
| Procedure | Status | Notes |
116+
|-----------|--------|-------|
117+
| `prif_get_strided` | no | |
118+
| `prif_get_strided_indirect` | no | |
119+
| `prif_put_strided` | no | |
120+
| `prif_put_strided_indirect` | no | |
121+
| `prif_put_strided_with_notify` | no | |
122+
| `prif_put_strided_with_notify_indirect` | no | |
123+
| `prif_put_strided_indirect_with_notify` | no | |
124+
| `prif_put_strided_indirect_with_notify_indirect` | no | |
125+
-->
126+
127+
---
128+
129+
## SYNC Statements
130+
### Support = partial ( only support for `prif_sync_all`)
131+
132+
| Procedure | Status | Notes |
133+
|-----------|--------|-------|
134+
| `prif_sync_memory` | no | |
135+
| `prif_sync_all` | **YES** | |
136+
| `prif_sync_images` | no | |
137+
| `prif_sync_team` | no | |
138+
139+
---
140+
141+
## Locks and Unlocks
142+
### Support = no
143+
144+
<!---
145+
| Procedure | Status | Notes |
146+
|-----------|--------|-------|
147+
| `prif_lock` | no | |
148+
| `prif_lock_indirect` | no | |
149+
| `prif_unlock` | no | |
150+
| `prif_unlock_indirect` | no | |
151+
-->
152+
153+
---
154+
155+
## Critical
156+
### Support = no
157+
158+
<!---
159+
| Procedure | Status | Notes |
160+
|-----------|--------|-------|
161+
| `prif_critical` | no | |
162+
| `prif_end_critical` | no | |
163+
-->
164+
165+
---
166+
167+
## Events and Notifications
168+
### Support = no
169+
170+
<!---
171+
| Procedure | Status | Notes |
172+
|-----------|--------|-------|
173+
| `prif_event_post` | no | |
174+
| `prif_event_post_indirect` | no | |
175+
| `prif_event_wait` | no | |
176+
| `prif_event_query` | no | |
177+
| `prif_notify_wait` | no | |
178+
-->
179+
180+
---
181+
182+
## Teams
183+
### Support = partial (No support for `prif_get_team` and `prif_team_number`)
184+
185+
| Procedure | Status | Notes |
186+
|-----------|--------|-------|
187+
| `prif_form_team` | **YES** | |
188+
| `prif_get_team` | no | |
189+
| `prif_team_number` | no | |
190+
| `prif_change_team` | **YES** | |
191+
| `prif_end_team` | **YES** | |
192+
193+
---
194+
195+
## Collectives
196+
### Support = partial (...)
197+
198+
| Procedure | Status | Notes |
199+
|-----------|--------|-------|
200+
| `prif_co_broadcast` | *partial* | no support for derived types with `allocatable` components |
201+
| `prif_co_max` | *partial* | only supports 32-bit and 64-bit numeric types |
202+
| `prif_co_min` | *partial* | only supports 32-bit and 64-bit numeric types |
203+
| `prif_co_sum` | *partial* | only supports 32-bit and 64-bit numeric types |
204+
| `prif_co_reduce` | *partial* | only supports intrinsic types (no support for derived types) |
205+
206+
---
207+
208+
## Atomic Memory Operations
209+
### Support = no
210+
211+
<!---
212+
| Procedure | Status | Notes |
213+
|-----------|--------|-------|
214+
| `prif_atomic_add` | no | |
215+
| `prif_atomic_add_indirect` | no | |
216+
| `prif_atomic_and` | no | |
217+
| `prif_atomic_and_indirect` | no | |
218+
| `prif_atomic_or` | no | |
219+
| `prif_atomic_or_indirect` | no | |
220+
| `prif_atomic_xor` | no | |
221+
| `prif_atomic_xor_indirect` | no | |
222+
| `prif_atomic_cas_int` | no | |
223+
| `prif_atomic_cas_int_indirect` | no | |
224+
| `prif_atomic_cas_logical` | no | |
225+
| `prif_atomic_cas_logical_indirect` | no | |
226+
| `prif_atomic_fetch_add` | no | |
227+
| `prif_atomic_fetch_add_indirect` | no | |
228+
| `prif_atomic_fetch_and` | no | |
229+
| `prif_atomic_fetch_and_indirect` | no | |
230+
| `prif_atomic_fetch_or` | no | |
231+
| `prif_atomic_fetch_or_indirect` | no | |
232+
| `prif_atomic_fetch_xor` | no | |
233+
| `prif_atomic_fetch_xor_indirect` | no | |
234+
| `prif_atomic_define_int` | no | |
235+
| `prif_atomic_define_int_indirect` | no | |
236+
| `prif_atomic_define_logical` | no | |
237+
| `prif_atomic_define_logical_indirect` | no | |
238+
| `prif_atomic_ref_int` | no | |
239+
| `prif_atomic_ref_int_indirect` | no | |
240+
| `prif_atomic_ref_logical` | no | |
241+
| `prif_atomic_ref_logical_indirect` | no | |
242+
-->
243+
244+
---

0 commit comments

Comments
 (0)