We're going to start from scratch and pull a few things from this repository into a new one under the name Framework for Extensible Asynchronous Task Scheduling (FEATS). We are preserving this repository just as an example of a CMake superbuild of the current dependency projects, most of which will not be used in FEATS.
Task Scheduler is a Fortran 2018 event-driven, asynchronous framework that directs the parallel execution of Fortran subroutines in a manner that respects various task dependencies described in a directed acyclic graph.
Task Scheduler is organized as a CMake superbuild of ExternalProjects depicted in the following dependency tree:
task-scheduler
|--dag
| |
|--yaFyaml
|-- gFTL-shared
|-- gFTL
where
- [daglib] is a directed acyclic graph library,
- yaFyaml is a Fortran YAML API,
- gFTL-shared contains common gFTL containers of Fortran intrinsic types.
- gFTL is the Goddard Fortran Template Library, and
Each of the above packages is its own CMake project
in a git submdodule
of task-scheduler. As such, obtaining a useful copy of the current
repository requires a recursive git clone as shown below.
On Linux, macOS, or Windows Subsystem for Linux, execute the following
commands inside bash
or Z shell or equivalent commands in another shell:
git clone --recursive [email protected]:sourceryinstitute/task-scheduler
mkdir -p task-scheduler/build
cd task-scheduler/build
export FC=gfortran
cmake .. -DCMAKE_INSTALL_PREFIX=${PWD}/install
make -j 8
cd src
ctest
make install
where the -D
argument may be omitted if the user has the write
privileges for the default installation path, which might necessitate
replacing the final line with sudo make install
. If any of the
above steps fails, including if any tests fail, please submit an issue.