Skip to content

Commit 4850bb2

Browse files
committed
add scalability remarks
1 parent 289207e commit 4850bb2

File tree

2 files changed

+39
-8
lines changed

2 files changed

+39
-8
lines changed

README.md

Lines changed: 32 additions & 7 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

docs/src/gpu.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,4 +50,10 @@ 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+
If your machine has more than one GPU available, then functionality within `CUDA.jl` package
56+
enables the user to choose the GPU device that `FourierFlows.jl` should use. The user is referred
57+
to the [`CUDA.jl` Documentation](https://juliagpu.github.io/CUDA.jl/stable/lib/driver/#Device-Management);
58+
in particular, [`CUDA.devices`](https://juliagpu.github.io/CUDA.jl/stable/lib/driver/#CUDA.devices)
59+
and [`CUDA.CuDevice`](https://juliagpu.github.io/CUDA.jl/stable/lib/driver/#CUDA.CuDevice).

0 commit comments

Comments
 (0)