You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[1] This requirement simplifies development but might be removed in a future release.
44
-
45
44
[2] This feature is used to support only `co_reduce` and might become optional in a future release.
46
45
47
46
Download, build, and run an example
@@ -60,16 +59,17 @@ Run tests
60
59
./build/run-fpm.sh test
61
60
```
62
61
63
-
Generate documentation
64
-
----------------------
65
-
Generate HTML documentation for Caffeine using [ford] as follows:
62
+
Documentation
63
+
-------------
64
+
One of our continous integration (CI) scripts generates up-to-date Caffeine documentation using [ford]. The Ci script also deploys the generated documentation to [our GitHub Pages site].
65
+
Alternatively, generate HTML documentation locally using [ford] as follows:
66
66
```
67
67
ford doc-generator.md
68
68
```
69
69
Open `doc/html/index.htmtl` in a web browser.
70
70
71
-
Support and Development
72
-
-----------------------
71
+
Funding
72
+
-------
73
73
The Computer Languages and Systems Software ([CLaSS]) Group at [Berkeley Lab] leads Caffeine development under funding from the Exascale Computing Project ([ECP]).
74
74
75
75
License
@@ -83,3 +83,4 @@ See [LICENSE.txt](LICENSE.txt) for usage terms and conditions.
@warning Caffeine is early-stage developmental software with evolving interfaces and functionality.
36
+
37
+
Documentation
38
+
=============
39
+
40
+
Welcome to the Caffeine documentation.
41
+
[FORD] generates this documentation from inline comments, static analysis, and Markdown files.
42
+
The target audience for Caffeine is Fortran compiler developers.
43
+
With a fully Caffeinated compiler, Fortran programmers can produce parallel executable files from standard Fortran with no need to directly reference Caffeine or any lower-level communication software.
44
+
45
+
Philosophy and Motivations
46
+
--------------------------
47
+
* Write as much of Caffeine as possible in Fortran:
48
+
- Writing the runtime library in the language of the users increases the likelihood of community contributions.
49
+
- Writing the runtime library in Fortran obviates the need to directly manipulate compiler descriptors throughout much of Caffeine and allows Caffeine's underlying C layer to receive the Fortran-standard `CFI_cdesc_t` desriptor, which imwill make it easier to support multiple compilers.
50
+
- Writing most of Caffeine in Fortran offers the potential exploiting Fortran's rich array syntax, concurrent loop iterations (`do concurrent`), `pure` procedures and related features. Currently, these play a role only in one place: C callbacks to user-provided, `pure` functions that can be invoked inside a `do concurrent` block during the execution of `co_reduce`.
51
+
* Define an interface that remains agnostic about the back-end communication library:
52
+
- Once multiple back ends are supported, Fortran developers would not have to rewrite or even recompile their programs in order to change back ends. Switching from GASNet-EX to MPI, for example, could become a link-time decision.
53
+
54
+
Organization
55
+
------------
56
+
The tree below depicts a skeletal overview of Caffeine's directory structure.
57
+
```
58
+
build/ - build directory created by running ./install.sh
59
+
|-- run-fpm.sh - shell script for rebuilding Caffeine or running examples or tests
60
+
|-- * - temporary build files
61
+
example/
62
+
|-- hello.f90 - a Caffeinated "Hello, world!" program
63
+
|-- support-test/ - programs invoked by the test suite
64
+
src/
65
+
|-- caffeine_m.f90 - the Big Kahuna: one module that exports all Caffeine functionality
0 commit comments