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 git@github.com: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 installwhere 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.