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
Copy file name to clipboardExpand all lines: README.md
+33-8Lines changed: 33 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -21,15 +21,16 @@
21
21
</a>
22
22
</p>
23
23
24
+
24
25
## Overview
25
26
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/).
31
33
32
-
For more details refer to the [documentation](https://fourierflows.github.io/FourierFlowsDocumentation/dev/).
33
34
34
35
## Installation
35
36
@@ -41,15 +42,39 @@ It is simple:
41
42
42
43
and no more.
43
44
45
+
44
46
## Usage
45
47
46
48
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.
47
49
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
+
48
71
## Example(s)
49
72
50
73
An example for coding up and solving the linear shallow water equations is [documented](https://fourierflows.github.io/FourierFlowsDocumentation/stable/generated/OneDShallowWaterGeostrophicAdjustment/).
51
74
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
+
53
78
54
79
## Developers
55
80
@@ -61,7 +86,7 @@ and [Navid C. Constantinou][] (@navidcy).
61
86
62
87
The code is citable via [zenodo](https://zenodo.org). Please cite as:
63
88
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)
The `FourierFlows.Diffusion` module is written in a way such that switching from CPU to GPU
51
51
is only a matter of calling `FourierFlows.Diffusion.Problem()` with `dev=GPU()`. All physics
52
52
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