25 procedure(method0),
nopass,
pointer:: method => null()
29 procedure,
nopass:: method0
30 procedure,
nopass:: method1
31 procedure,
nopass:: method2
32 procedure,
nopass:: method3
33 procedure,
nopass:: method4
34 procedure,
nopass:: method5
36 integer,
save:: verbose=0
37 integer,
save:: method=0
38 logical,
save:: test=.false.
39 real(8):: test_seconds=30.
48 SUBROUTINE init (self)
51 namelist /dispatcher_params/ method, verbose, test, test_seconds
53 call trace%begin (
'dispatcher_t%init')
55 read (io%input, dispatcher_params, iostat=iostat)
56 write (io%output, dispatcher_params)
60 self%method => method0
63 self%method => method1
65 self%method => method2
67 self%method => method3
69 self%method => method4
71 self%method => method5
73 self%method => method6
75 call io%abort (
'unknown method in dispatcher_mod')
80 task_mesg%method = method
87 SUBROUTINE execute (self, task_list)
90 class(
list_t),
pointer:: list
91 class(link_t),
pointer:: link
93 call trace%begin (
'dispatcher_t%execute')
94 task_list%method = method
95 task_list%dispatcher = .true.
100 call task_list%reset_status (check=.true.)
101 call task_list%init_task_list_pointers (task_list)
106 call self%method (task_list)
108 END SUBROUTINE execute
114 io%do_output = .false.
117 io%job_seconds = test_seconds
118 END SUBROUTINE set_io
123 SUBROUTINE method0 (task_list)
126 task_list%method = method
127 if (test)
call set_io
128 call dispatcher0%execute (task_list, test)
129 END SUBROUTINE method0
132 SUBROUTINE method1 (task_list)
134 if (test)
call set_io
135 call dispatcher1%execute (task_list, test)
136 END SUBROUTINE method1
139 SUBROUTINE method2 (task_list)
141 if (test)
call set_io
142 call dispatcher2%execute (task_list, test)
143 END SUBROUTINE method2
146 SUBROUTINE method3 (task_list)
148 if (test)
call set_io
149 call dispatcher3%execute (task_list, test)
150 END SUBROUTINE method3
153 SUBROUTINE method4 (task_list)
155 if (test)
call set_io
156 call dispatcher4%execute (task_list, test)
157 END SUBROUTINE method4
160 SUBROUTINE method5 (task_list)
162 if (test)
call set_io
163 call dispatcher5%execute (task_list, test)
164 END SUBROUTINE method5
167 SUBROUTINE method6 (task_list)
169 if (test)
call set_io
170 call dispatcher6%execute (task_list, test)
171 END SUBROUTINE method6
Do not use a dispatcher, but call task_listexecute, which relies on threads handling a ready queue...
Module with list handling for generic class task_t objects.
Interface from gpatch_mod to a choice of binary data I/O methods, controlled by the iomethod text str...
Execute a task list. Since only the master thread is calling check_mpi(), we need to make sure that i...
Message handling for task lists. Some of the methods are only used by dispatcher0_t, so should perhaps be moved over to that file.
Task list data type, with methods for startup and updates. Message handling is inherited from the tas...
Execute a task list. Since only the master thread is calling check_mpi(), we need to make sure that i...
Dispatcher method that relies on all threads maintaining a "ready queue", with tasks ready for updati...
Dispatcher method that relies on all threads maintaining a "ready queue", with tasks ready for updati...
A simple task dispatcher, which handles a list of tasks that may be started as background OpenMP task...
Dispatcher method that relies on all threads maintaining a "ready queue", with tasks ready for updati...