Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .github/linkspector.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
dirs:
- .
useGitIgnore: true
# Ignore URLs that sometimes fail due to timeouts on slow responses or
# unauthorised accesses
ignorePatterns:
- pattern: '^https://mybinder.org/v2/gh/stfc/psyclone'
- pattern: '^https://codecov.io/gh/stfc/PSyclone'
- pattern: '^https://code.metoffice.gov.uk/svn'
replacementPatterns:
- pattern: '^https:\/\/(psyclone.*\.readthedocs\.io\/en)\/stable$'
replacement: 'https://$1/latest'
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/linkcheck.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,5 @@ jobs:
reporter: github-pr-check
fail_on_error: true
config_file: '.github/linkspector.yml'
filter_mode: nofilter
show_stats: true
13 changes: 7 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,18 +20,18 @@ DSLs following the PSyKAl model developed in the
[GungHo project](https://www.metoffice.gov.uk/research/foundation/dynamics/next-generation).

PSyclone is currently used to support the [LFRic mixed finite-element PSyKAl
DSL](https://psyclone.readthedocs.io/en/latest/lfric.html)
DSL](https://psyclone.readthedocs.io/en/latest/user_guide/lfric.html)
for the [UK MetOffice's next generation modelling
system](https://www.metoffice.gov.uk/research/modelling-systems/lfric/) and
the [GOcean finite-difference PSyKAl
DSL](https://psyclone.readthedocs.io/en/latest/gocean1p0.html) for a [prototype
DSL](https://psyclone.readthedocs.io/en/latest/user_guide/gocean1p0.html) for a [prototype
2D ocean modelling system](https://gtr.ukri.org/projects?ref=NE%2FL01209X%2F1).
It is also used to [insert GPU offloading
directives](https://psyclone.readthedocs.io/en/latest/nemo.html) into existing
directives](https://psyclone.readthedocs.io/en/latest/tutorials_and_examples/nemo_examples.html) into existing
directly-addressed MPI applications such as the
[NEMO ocean model](https://www.nemo-ocean.eu/).

For more detailed information see the [PSyclone Documentation](http://psyclone.readthedocs.io).
For more detailed information see the [PSyclone Documentation](http://psyclone.readthedocs.io/en/latest).

# Installation #

Expand Down Expand Up @@ -60,8 +60,9 @@ PSyclone is also available in the
[Spack](https://packages.spack.io/package.html?name=py-psyclone) package
managers.

For more information about the installation process see
[this section of the User Guide](https://psyclone.readthedocs.io/en/latest/system_specific_setup.html).
For more information about the installation process see the
[Getting Going](https://psyclone.readthedocs.io/en/latest/user_guide/getting_going.html).
section of the User Guide.

<!--- TODO #2627
# Try it on Binder #
Expand Down
2 changes: 1 addition & 1 deletion examples/gocean/eg5/value_range_check/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ invalid numbers (Infinity).
## Running
In order to activate the value range checking, you need to
specify the value range for variables as outlined here:
https://psyclone.readthedocs.io/en/latest/psy_data.html#value-range-check
https://psyclone.readthedocs.io/en/latest/user_guide/psy_data.html#value-range-check

```
$ PSYVERIFY__main__init__b_fld=2:3 ./value_range_check
Expand Down
3 changes: 2 additions & 1 deletion examples/lfric/eg14/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ more detail in the directory
``<PSYCLONEHOME>/examples/lfric/eg17/full_example``.

The script ``acc_parallel.py`` applies various OpenACC transformations
to all kernels. See the PSyclone User Guide for [details](https://psyclone.readthedocs.io/en/stable/examples.html#example-14-openacc).
to all kernels. See the PSyclone User Guide for [details](
https://psyclone.readthedocs.io/en/latest/tutorials_and_examples/lfric_examples.html#example-14-openacc).

## Compilation

Expand Down
4 changes: 2 additions & 2 deletions examples/lfric/eg17/full_example_extract/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@ directory ``../full_example``.
This example applies the PSyData extraction transformations to the
two invoke statements, the first initialising two fields, the second
doing some computations.
See the [PSyKE](https://psyclone.readthedocs.io/en/stable/psyke.html)
See the [PSyKE](https://psyclone.readthedocs.io/en/latest/user_guide/psyke.html)
chapter of the PSyclone documentation for details about this transformation.

## Compilation

A simple makefile is provided to compile the example. It can use one of
three extraction libraries, as outlined in the
[PSyKE extraction libraries](https://psyclone.readthedocs.io/en/stable/psyke.html#extraction-libraries) section.
[PSyKE extraction libraries](https://psyclone.readthedocs.io/en/latest/user_guide/psyke.html#extraction-libraries) section.

By default, the stand-alone binary version will be used,
but you can set the ``TYPE`` environment variable to either ``ascii``
Expand Down
2 changes: 1 addition & 1 deletion examples/lfric/scripts/KGOs/lfric_psyclone.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ REPRODUCIBLE_REDUCTIONS = false
# Amount to pad the local summation array when REPRODUCIBLE_REDUCTIONS is true
REPROD_PAD_SIZE = 8
PSYIR_ROOT_NAME = psyir_tmp
VALID_PSY_DATA_PREFIXES = profile, extract, read_only_verify, nan_test
VALID_PSY_DATA_PREFIXES = profile, extract, read_only_verify, value_range_check

# Specify number of OpenCL devices per node. When combining OpenCL with MPI,
# the mpirun/mpiexec ranks_per_node parameter must match this number.
Expand Down
2 changes: 1 addition & 1 deletion examples/lfric/scripts/KGOs/lfric_psyclone_no_annexed.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ REPRODUCIBLE_REDUCTIONS = false
# Amount to pad the local summation array when REPRODUCIBLE_REDUCTIONS is true
REPROD_PAD_SIZE = 8
PSYIR_ROOT_NAME = psyir_tmp
VALID_PSY_DATA_PREFIXES = profile, extract, read_only_verify, nan_test
VALID_PSY_DATA_PREFIXES = profile, extract, read_only_verify, value_range_check

# Specify number of OpenCL devices per node. When combining OpenCL with MPI,
# the mpirun/mpiexec ranks_per_node parameter must match this number.
Expand Down
2 changes: 1 addition & 1 deletion examples/nemo/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ Contains:
## Scripts

Contains the scripts used to process the NEMO code base and to add profiling
instrumentation (https://psyclone.readthedocs.io/en/stable/profiling.html)
instrumentation (https://psyclone.readthedocs.io/en/latest/user_guide/profiling.html)
and OpenACC or OpenMP directives:

1. `process_nemo.py` is a driver script that allows the user to specify
Expand Down
24 changes: 12 additions & 12 deletions lib/README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Wrapper Libraries for Use with PSyclone

This directory contains [PSyData-API-based](
https://psyclone.readthedocs.io/en/stable/psy_data.html) wrapper libraries.
https://psyclone.readthedocs.io/en/latest/user_guide/psy_data.html) wrapper libraries.
They enable PSyclone to provide transformations that will insert callbacks
to an external library at runtime. These callbacks allow third-party libraries
to access data structures at specified locations in the code for different
Expand All @@ -13,11 +13,11 @@ The wrapper libraries for the supported use cases are listed

Wrapper libraries can be accessed from a clone of PSyclone repository
or a PSyclone [installation](
https://psyclone.readthedocs.io/en/stable/getting_going.html). In a
https://psyclone.readthedocs.io/en/latest/user_guide/getting_going.html). In a
PSyclone installation the libraries may be found in ``share/psyclone/lib``
under your Python (or PSyclone, depending on the ``pip install`` options)
installation, see ["Getting Going"](
https://psyclone.readthedocs.io/en/stable/getting_going.html)
https://psyclone.readthedocs.io/en/latest/user_guide/getting_going.html)
for possible locations.

If working with wrapper libraries from a PSyclone installation, it
Expand All @@ -32,7 +32,7 @@ dependencies, see [below](#compilation) for more information.

The file ``psy_data_base.jinja`` contains a Jinja template that can be used
by the [PSyData-API-based](
https://psyclone.readthedocs.io/en/stable/psy_data.html) wrapper libraries.
https://psyclone.readthedocs.io/en/latest/user_guide/psy_data.html) wrapper libraries.
Full documentation on using this template is provided in the PSyclone
[Developer Guide](
https://psyclone.readthedocs.io/en/latest/developer_guide/psy_data.html#jinja). The
Expand All @@ -51,10 +51,10 @@ rely on a file compiled in this directory.
Contains code for extracting kernel data - i.e. all input and output
parameters of a kernel invocation.

### [``nan_test``](./nan_test) directory
Comment thread
arporter marked this conversation as resolved.
### [``value_range_check``](./value_range_check) directory

Contains PSyData-API-based libraries for checking that input and output
parameters of kernels are valid numbers (i.e. not ``NaN`` or infinity).
values of kernels are within valid ranges (i.e. not ``NaN`` or infinity).

### [``profiling``](./profiling) directory

Expand All @@ -80,23 +80,23 @@ Fortran compiler (``gfortran``), i.e. simply running ``make`` will build a
wrapper library with the version of ``gfortran`` available in a user's
environment. The compilation flags vary from one library to another (they
are usually set to debugging). As for the compilation of the [API examples](
https://psyclone.readthedocs.io/en/latest/examples.html#compilation), these
https://psyclone.readthedocs.io/en/latest/tutorials_and_examples/examples_intro.html#compilation), these
flags can be set to a different compiler. For instance,

```shell
F90=ifort F90FLAGS="-g -check bounds" make
```

Similar to compilation of the [examples](
https://psyclone.readthedocs.io/en/latest/examples.html#compilation), the
https://psyclone.readthedocs.io/en/latest/tutorials_and_examples/examples_intro.html#compilation), the
compiled library can be removed by running ``make clean``. There is also
the ``allclean`` target that removes the compiled wrapper library as well
as the compiled infrastructure library that the wrapper may
[depend on](#dependencies).

The compilation of wrapper libraries was tested with the Gnu and Intel
Fortran compilers, see [here](
https://psyclone.readthedocs.io/en/latest/examples.html#supported-compilers)
https://psyclone.readthedocs.io/en/latest/tutorials_and_examples/examples_intro.html#supported-compilers)
for the full list. Please let the PSyclone developers know if you have
problems using a compiler that has been tested or if you are working
with a different compiler.
Expand All @@ -112,13 +112,13 @@ is by default set to the relative path to the top-level `lib` directory.
libraries are compiled in a clone of PSyclone repository or in a PSyclone
[installation](#installation).

Compilation of ``extract``, ``nan_test``, ``read_only`` and some of the
Compilation of ``extract``, ``values_ragne_check``, ``read_only`` and some of the
profiling wrapper libraries depends on infrastructure libraries relevant
to the API they are used for. [GOcean API](
https://psyclone.readthedocs.io/en/stable/gocean1p0.html) uses the
https://psyclone.readthedocs.io/en/latest/user_guide/gocean1p0.html) uses the
[``dl_esm_inf`` library](https://github.com/stfc/dl_esm_inf) and
[LFRic API](
https://psyclone.readthedocs.io/en/latest/lfric.html)
https://psyclone.readthedocs.io/en/latest/user_guide/lfric.html)
uses the LFRic infrastructure (see the linked documentation on how to
access and use the LFRic code). The locations of the respective
infrastructure libraries can be configured with the variables
Expand Down
2 changes: 1 addition & 1 deletion lib/extract/README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Kernel Extraction Library

This directory contains files related to [writing (extracting)](
https://psyclone.readthedocs.io/en/stable/psyke.html) input and output
https://psyclone.readthedocs.io/en/latest/user_guide/psyke.html) input and output
parameters of instrumented code regions.

For now the parameter extraction is only implemented to write out the
Expand Down
6 changes: 3 additions & 3 deletions lib/extract/ascii/dl_esm_inf/README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# Stand-alone ASCII Kernel Extraction Library for GOcean

This wrapper library is used to [write (extract)](
https://psyclone.readthedocs.io/en/stable/psyke.html)
https://psyclone.readthedocs.io/en/latest/user_guide/psyke.html)
input and output parameters of instrumented code regions to an [ASCII file](
https://psyclone.readthedocs.io/en/stable/psyke.html#extraction_libraries)
https://psyclone.readthedocs.io/en/latest/user_guide/psyke.html#extraction_libraries)
using the [``dl_esm_inf`` library](https://github.com/stfc/dl_esm_inf).
A stand-alone driver can then be used to rerun this specific code region and
verify the results (or compare performance). This version of the extraction
Expand All @@ -19,7 +19,7 @@ https://github.com/stfc/PSyclone/tree/master/examples/gocean/eg5/extract).
## Dependencies

This library uses the [PSyData API](
https://psyclone.readthedocs.io/en/stable/psy_data.html) to interface with
https://psyclone.readthedocs.io/en/latest/user_guide/psy_data.html) to interface with
the application. The following dependencies must be available:

- The [GOcean](https://psyclone.readthedocs.io/en/latest/user_guide/gocean1p0.html)
Expand Down
10 changes: 5 additions & 5 deletions lib/extract/ascii/generic/README.md
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
# Stand-alone Kernel Extraction Library for generic Fortran code

This wrapper library is used to [write (extract)](
https://psyclone.readthedocs.io/en/stable/psyke.html)
https://psyclone.readthedocs.io/en/latest/user_guide/psyke.html)
input and output parameters of instrumented code regions to an [ASCII file](
https://psyclone.readthedocs.io/en/stable/psyke.html#extraction_libraries).
https://psyclone.readthedocs.io/en/latest/user_guide/psyke.html#extraction_libraries).
A stand-alone driver can then be used to rerun this specific code region and
verify the results (or compare performance).

A full, stand-alone and runnable example can be found in
[``examples/nemo/eg7/``](
https://github.com/stfc/PSyclone/tree/master/examples/nemo/eg7).
[``examples/nemo/eg5/``](
https://github.com/stfc/PSyclone/tree/master/examples/nemo/eg5).

## Dependencies

This library uses the [PSyData API](
https://psyclone.readthedocs.io/en/stable/psy_data.html) to interface with
https://psyclone.readthedocs.io/en/latest/user_guide/psy_data.html) to interface with
the application. The following dependencies must be available:

- The ExtractAsciiBase (``extract_ascii_base.jinja``)
Expand Down
8 changes: 4 additions & 4 deletions lib/extract/ascii/lfric/README.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
# Kernel Extraction Library for LFRic

This wrapper library [writes (extracts)](
https://psyclone.readthedocs.io/en/stable/psyke.html) input and output
https://psyclone.readthedocs.io/en/latest/user_guide/psyke.html) input and output
parameters of instrumented code regions to a stand-alone
[binary file](https://psyclone.readthedocs.io/en/stable/psyke.html#extraction_libraries)
[binary file](https://psyclone.readthedocs.io/en/latest/user_guide/psyke.html#extraction_libraries)
using the LFRic infrastructure library. A stand-alone driver can then be
used to rerun this specific code region and verify the results (or
compare performance).

## Dependencies

This library uses the [PSyData API](
https://psyclone.readthedocs.io/en/stable/psy_data.html) to interface with
https://psyclone.readthedocs.io/en/latest/user_guide/psy_data.html) to interface with
the application. The following dependencies must be available:

- The LFRic infrastructure library. A pared-down version of LFRic
Expand All @@ -20,7 +20,7 @@ the application. The following dependencies must be available:
https://github.com/stfc/PSyclone/tree/master/examples/lfric/eg17), however
it is not included in the PSyclone [installation](
./../../../README.md#installation). See the [LFRic API](
https://psyclone.readthedocs.io/en/stable/dynamo0p3.html) documentation
https://psyclone.readthedocs.io/en/latest/user_guide/lfric.html) documentation
for information on how to obtain access to the LFRic code.

- The ExtractAsciiBase (``extract_ascii_base.jinja``) and PSyData
Expand Down
6 changes: 3 additions & 3 deletions lib/extract/binary/dl_esm_inf/README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# Stand-alone Kernel Extraction Library for GOcean

This wrapper library is used to [write (extract)](
https://psyclone.readthedocs.io/en/stable/psyke.html)
https://psyclone.readthedocs.io/en/latest/user_guide/psyke.html)
input and output parameters of instrumented code regions to a [binary file](
https://psyclone.readthedocs.io/en/stable/psyke.html#extraction_libraries)
https://psyclone.readthedocs.io/en/latest/user_guide/psyke.html#extraction_libraries)
using the [``dl_esm_inf`` library](https://github.com/stfc/dl_esm_inf).
A stand-alone driver can then be used to rerun this specific code region and
verify the results (or compare performance).
Expand All @@ -15,7 +15,7 @@ https://github.com/stfc/PSyclone/tree/master/examples/gocean/eg5/extract).
## Dependencies

This library uses the [PSyData API](
https://psyclone.readthedocs.io/en/stable/psy_data.html) to interface with
https://psyclone.readthedocs.io/en/latest/user_guide/psy_data.html) to interface with
the application. The following dependencies must be available:

- The [GOcean](https://psyclone.readthedocs.io/en/latest/user_guide/gocean1p0.html)
Expand Down
6 changes: 3 additions & 3 deletions lib/extract/binary/generic/README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# Stand-alone Kernel Extraction Library for generic Fortran code

This wrapper library is used to [write (extract)](
https://psyclone.readthedocs.io/en/stable/psyke.html)
https://psyclone.readthedocs.io/en/latest/user_guide/psyke.html)
input and output parameters of instrumented code regions to a [binary file](
https://psyclone.readthedocs.io/en/stable/psyke.html#extraction_libraries).
https://psyclone.readthedocs.io/en/latest/user_guide/psyke.html#extraction_libraries).
A stand-alone driver can then be used to rerun this specific code region and
verify the results (or compare performance).

Expand All @@ -14,7 +14,7 @@ https://github.com/stfc/PSyclone/tree/master/examples/nemo/eg5).
## Dependencies

This library uses the [PSyData API](
https://psyclone.readthedocs.io/en/stable/psy_data.html) to interface with
https://psyclone.readthedocs.io/en/latest/user_guide/psy_data.html) to interface with
the application. The following dependencies must be available:

- The ExtractBinary (``extract_binary_base.jinja``) and PSyData
Expand Down
8 changes: 4 additions & 4 deletions lib/extract/binary/lfric/README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# Kernel Extraction Library for LFRic

This wrapper library [writes (extracts)](
https://psyclone.readthedocs.io/en/stable/psyke.html) input and output
https://psyclone.readthedocs.io/en/latest/user_guide/psyke.html) input and output
parameters of instrumented code regions to a stand-alone
[binary file](https://psyclone.readthedocs.io/en/stable/psyke.html#extraction_libraries)
[binary file](https://psyclone.readthedocs.io/en/latest/user_guide/psyke.html#extraction_libraries)
using the LFRic infrastructure library. A stand-alone driver can then be
used to rerun this specific code region and verify the results (or
compare performance).
Expand All @@ -14,7 +14,7 @@ compilation tests.
## Dependencies

This library uses the [PSyData API](
https://psyclone.readthedocs.io/en/stable/psy_data.html) to interface with
https://psyclone.readthedocs.io/en/latest/user_guide/psy_data.html) to interface with
the application. The following dependencies must be available:

- The LFRic infrastructure library. A pared-down version of LFRic
Expand All @@ -23,7 +23,7 @@ the application. The following dependencies must be available:
https://github.com/stfc/PSyclone/tree/master/examples/lfric/eg17), however
it is not included in the PSyclone [installation](
./../../../README.md#installation). See the [LFRic API](
https://psyclone.readthedocs.io/en/latest/lfric.html) documentation
https://psyclone.readthedocs.io/en/latest/user_guide/lfric.html) documentation
for information on how to obtain access to the LFRic code.

- The ExtractBinary (``extract_binary_base.jinja``) and PSyData
Expand Down
6 changes: 3 additions & 3 deletions lib/extract/netcdf/README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# Kernel Extraction Library Using NetCDF

This directory contains files related to [writing (extracting)](
https://psyclone.readthedocs.io/en/stable/psyke.html) input and output
https://psyclone.readthedocs.io/en/latest/user_guide/psyke.html) input and output
parameters of instrumented code regions to a [NetCDF file](
https://psyclone.readthedocs.io/en/stable/psyke.html#netcdf-extraction-example).
https://psyclone.readthedocs.io/en/latest/user_guide/psyke.html#netcdf-extraction-example).
There is a [PSyData base class](
https://psyclone.readthedocs.io/en/latest/developer_guide/psy_data.html#psydata-base-class)
as a Jinja template that can be used to simplify the creation of API-specific
Expand Down Expand Up @@ -40,7 +40,7 @@ Contains the NetCDF-extract, PSyData-API-based, wrapper library for the

Contains the NetCDF-extract, PSyData-API-based, wrapper library for the
[LFRic API](
https://psyclone.readthedocs.io/en/latest/lfric.html).
https://psyclone.readthedocs.io/en/latest/user_guide/lfric.html).

<!--
## Licence
Expand Down
Loading