task_m.f90 Source File


This file depends on

sourcefile~~task_m.f90~~EfferentGraph sourcefile~task_m.f90 task_m.f90 sourcefile~payload_m.f90 payload_m.f90 sourcefile~task_m.f90->sourcefile~payload_m.f90

Files dependent on this one

sourcefile~~task_m.f90~~AfferentGraph sourcefile~task_m.f90 task_m.f90 sourcefile~vertex_m.f90 vertex_m.f90 sourcefile~vertex_m.f90->sourcefile~task_m.f90 sourcefile~dag_m.f90 dag_m.f90 sourcefile~dag_m.f90->sourcefile~vertex_m.f90 sourcefile~runner_m.f90 runner_m.f90 sourcefile~runner_m.f90->sourcefile~dag_m.f90

Contents

Source Code


Source Code

module task_m
  !! Define an abstract interface to tasks that the scheduler
  !! image assigns and that a compute image executes.
  use payload_m, only: payload_t
  implicit none

  private
  public :: task_t

  type, abstract :: task_t
    !! encapsulate task work
  contains
    procedure(execute_i), deferred :: execute
  end type

  abstract interface

    function execute_i(self, arguments) result(output)
      !! complete the assigned task
      import :: task_t, payload_t
      implicit none
      class(task_t), intent(in)   :: self
      type(payload_t), intent(in) :: arguments(:)
      type(payload_t)             :: output
    end function

  end interface
end module task_m