Skip to content

Commit 473aed8

Browse files
authored
Merge pull request #245 from BerkeleyLab/rouson-patch-1
doc(README): updates
2 parents 294dfd1 + 8fa5147 commit 473aed8

File tree

1 file changed

+18
-8
lines changed

1 file changed

+18
-8
lines changed

README.md

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ The design of Fiats centers around functional programming patterns that facilita
2020
Towards these ends,
2121

2222
* Most Fiats procedures are `pure` and thus satisfy a language requirement for invocation inside `do concurrent`,
23-
* The network training procedure use `do concurrent` to expose automatic parallelization opportunities to compilers, and
23+
* The network training procedure uses `do concurrent` to expose automatic parallelization opportunities to compilers, and
2424
* Exploiting multi-image execution to speedup training is under investigation.
2525

2626
To broaden support for the native parallel features, the Fiats contributors also write compiler tests, bug reports, and patches; develop a parallel runtime library ([Caffeine]); participate in the language standardization process; and provide example inference and training code for exercising and evaluating compilers' automatic parallelization capabilities on processors and accelerators, including Graphics Processing Units (GPUs).
@@ -74,17 +74,21 @@ fpm test --compiler flang-new --flag "-mmlir -allow-assumed-rank -O3"
7474
```
7575

7676
###### _Experimental:_ Automatic parallelization of `do concurrent` on CPUs
77-
With the `amd-trunk-dev` branch of the [ROCm fork] of LLVM, automatically parallelize inference calculations inside `do concurrent` constructs:
77+
A series of pull requests is currently being reviewed and merged to enable LLLVM Flang to automatically parallelize `do concurrent`.
78+
To try this feature, clone the Berkeley Lab [flang-testing-project] fork of llvm-project and build Flang from source
79+
```
80+
git clone [email protected]:BerkeleyLab/flang-testing-project
81+
git checkout paw-atm24-fiats
82+
```
83+
The following command will then run an example that parallelizes batch inference calculations:
7884
```
7985
fpm run \
8086
--example concurrent-inferences \
8187
--compiler flang-new \
8288
--flag "-mmlir -allow-assumed-rank -O3 -fopenmp -fdo-concurrent-parallel=host" \
8389
-- --network model.json
84-
8590
```
8691
where `model.json` must be a neural network in the [JSON] format used by Fiats and the companion [nexport] package.
87-
8892
Automatic parallelization for training neural networks is under development.
8993

9094
#### Partially Supported Compilers
@@ -105,11 +109,11 @@ fpm test --compiler gfortran --profile release
105109
```
106110

107111
##### Intel (`ifx`)
108-
Compiler bugs related to generic name resolution currently prevent `ifx` from building Fiats versions 0.15.0 or later. An upcoming release in 2025 is expected to fix these bugs.
109-
Test and build earlier versions of Fiats build with the following command:
112+
Building and testing Fiats with ifx` 2025.1 using the command
110113
```
111114
fpm test --compiler ifx --flag -fpp --profile release
112115
```
116+
results in all Fiats unit tests passing except for one test that converts a neural network with varying-width hidden layers to and from JSON. The reason for this failure is under investigation. If you would like to use Fiats with `ifx` and require hidden layers of varying width, please submit an issue requesting an alternative neural-network file format.
113117

114118
##### _Experimental:_ Automatic offloading of `do concurrent` to GPUs
115119
This capability is under development with the goal to facilitate automatic GPU offloading via the following command:
@@ -158,11 +162,17 @@ Project is up to date
158162
"tensor names": {
159163
"inputs" : ["pressure","temperature"],
160164
"outputs" : ["saturated mixing ratio"]
161-
}
165+
},
166+
"training data file names": {
167+
"path" : "dates-20101001-2011076",
168+
"inputs prefix" : "training_input-image-",
169+
"outputs prefix" : "training_output-image-",
170+
"infixes" : ["000001", "000002", "000003", "000004", "000005", "000006", "000007", "000008", "000009", "000010"]
171+
}
162172
}
163173
```
164174
The Fiats JSON file format is fragile: splitting or combining lines breaks the file reader.
165-
Files with added or removed white space or reordered whole objects ("hyperparameters", "network configuration", or "tensor names") should work.
175+
It should be ok, however, to add or removed white space or to reordered whole objects such as placing the "network configuration" object above the "hyperparameters" object.
166176
A future release will leverage the [rojff] JSON interface to allow for more flexible file formatting.
167177

168178
### Training a neural network

0 commit comments

Comments
 (0)