Skip to content

Latest commit

 

History

History
68 lines (58 loc) · 2.32 KB

README.md

File metadata and controls

68 lines (58 loc) · 2.32 KB

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

Overview

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.

Structure

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.

Downloading, Building, Installing, and Testing

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.