Skip to content

Commit a92240e

Browse files
authored
Merge pull request #261 from FourierFlows/ncc/add-scalability-remarks
Add scalability remarks
2 parents 289207e + 28f2bcd commit a92240e

File tree

3 files changed

+42
-10
lines changed

3 files changed

+42
-10
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ authors = ["Gregory L. Wagner <wagner.greg@gmail.com>", "Navid C. Constantinou <
66
description = "Tools for building fast, hackable, pseudospectral partial differential equation solvers on periodic domains."
77
documentation = "https://fourierflows.github.io/FourierFlowsDocumentation/stable/"
88
repository = "https://github.com/FourierFlows/FourierFlows.jl"
9-
version = "0.6.12"
9+
version = "0.6.13"
1010

1111
[deps]
1212
CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba"

README.md

Lines changed: 33 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,16 @@
2121
</a>
2222
</p>
2323

24+
2425
## Overview
2526

26-
This software provides tools for partial differential equations on
27-
periodic domains using Fourier-based pseudospectral methods.
28-
A central intent of the software's design is also to provide a framework
29-
for writing new, fast solvers for new physical problems.
30-
The code is written in [Julia][].
27+
This software provides tools for partial differential equations on periodic domains using
28+
Fourier-based pseudospectral methods. A central intent of the software's design is also to
29+
provide a framework for writing new, fast solvers for new physical problems. The code is
30+
written in [Julia][].
31+
32+
For more details refer to the [documentation](https://fourierflows.github.io/FourierFlowsDocumentation/stable/).
3133

32-
For more details refer to the [documentation](https://fourierflows.github.io/FourierFlowsDocumentation/dev/).
3334

3435
## Installation
3536

@@ -41,15 +42,39 @@ It is simple:
4142

4243
and no more.
4344

45+
4446
## Usage
4547

4648
See the documentation for tutorials on (i) how [construct grids](https://fourierflows.github.io/FourierFlowsDocumentation/stable/grids/) and use Fourier transform to compute derivatives and (ii) how to [set up a PDE](https://fourierflows.github.io/FourierFlowsDocumentation/stable/problem/), time-step it forward. and visualize the output.
4749

50+
51+
## Scalability
52+
53+
For now, FourierFlows.jl is restricted to run on either a single CPU or single GPU. Multi-threading
54+
can enhance performance for the Fourier transforms. By default, FourierFlows.jl will use the
55+
maximum number of threads available on your machine. You can set the number of threads used by
56+
FourierFlows.jl by setting the environment variable, e.g.,
57+
58+
```
59+
$ export JULIA_NUM_THREADS=4
60+
```
61+
62+
For more information on multi-threading users are directed to the [Julia Documentation](https://docs.julialang.org/en/v1/manual/multi-threading/).
63+
64+
If your machine has more than one GPU available, then functionality within CUDA.jl package
65+
enables the user to choose the GPU device that FourierFlows.jl should use. The user is referred
66+
to the [CUDA.jl Documentation](https://juliagpu.github.io/CUDA.jl/stable/lib/driver/#Device-Management);
67+
in particular, [`CUDA.devices`](https://juliagpu.github.io/CUDA.jl/stable/lib/driver/#CUDA.devices)
68+
and [`CUDA.CuDevice`](https://juliagpu.github.io/CUDA.jl/stable/lib/driver/#CUDA.CuDevice).
69+
70+
4871
## Example(s)
4972

5073
An example for coding up and solving the linear shallow water equations is [documented](https://fourierflows.github.io/FourierFlowsDocumentation/stable/generated/OneDShallowWaterGeostrophicAdjustment/).
5174

52-
See also the child packages [GeophysicalFlows.jl][] for example usage of `FourierFlows.jl` for problems in Geophysical Fluid Dynamics.
75+
See also the child packages [GeophysicalFlows.jl][] for example usage of FourierFlows.jl for
76+
problems in Geophysical Fluid Dynamics.
77+
5378

5479
## Developers
5580

@@ -61,7 +86,7 @@ and [Navid C. Constantinou][] (@navidcy).
6186

6287
The code is citable via [zenodo](https://zenodo.org). Please cite as:
6388

64-
> Navid C. Constantinou & Gregory L. Wagner. (2021). FourierFlows/FourierFlows.jl: FourierFlows v0.6.12 (Version v0.6.12). Zenodo. [http://doi.org/10.5281/zenodo.1161724](http://doi.org/10.5281/zenodo.1161724)
89+
> Navid C. Constantinou & Gregory L. Wagner. (2021). FourierFlows/FourierFlows.jl: FourierFlows v0.6.13 (Version v0.6.13). Zenodo. [http://doi.org/10.5281/zenodo.1161724](http://doi.org/10.5281/zenodo.1161724)
6590
6691

6792
[Julia]: https://julialang.org/

docs/src/gpu.md

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,4 +50,11 @@ problem = Problem(equation, stepper, dt, grid, vars, params, GPU())
5050
The `FourierFlows.Diffusion` module is written in a way such that switching from CPU to GPU
5151
is only a matter of calling `FourierFlows.Diffusion.Problem()` with `dev=GPU()`. All physics
5252
modules in [GeophysicalFlows.jl](https://github.com/FourierFlows/GeophysicalFlows.jl) can
53-
also seamlessly run on a GPU with `dev=GPU()` argument.
53+
also seamlessly run on a GPU with `dev=GPU()` argument.
54+
55+
56+
## Selecting GPU device
57+
58+
`FourierFlows.jl` can only utilize a single GPU. If your machine has more than one GPU available,
59+
then functionality within `CUDA.jl` package enables the user to choose the GPU device that
60+
`FourierFlows.jl` should use. The user is referred to the [`CUDA.jl` Documentation](https://juliagpu.github.io/CUDA.jl/stable/lib/driver/#Device-Management); in particular, [`CUDA.devices`](https://juliagpu.github.io/CUDA.jl/stable/lib/driver/#CUDA.devices) and [`CUDA.CuDevice`](https://juliagpu.github.io/CUDA.jl/stable/lib/driver/#CUDA.CuDevice).

0 commit comments

Comments
 (0)