Olivier Aumage лет назад: 6
Родитель
Сommit
1056305c34
1 измененных файлов с 46 добавлено и 1 удалено
  1. 46 1
      doc/doxygen_dev/chapters/010_core.doxy

+ 46 - 1
doc/doxygen_dev/chapters/010_core.doxy

@@ -331,10 +331,55 @@ it receives a notification that the context update operation is complete.
 
 \subsection CoreEntitiesDrivers Drivers
 
-TODO
+Each driver defines a set of routines depending on some specific hardware. These
+routines include hardware discovery/initialization, task execution, device
+memory management and data transfers.
+
+While most hardware dependent routines are in source files located in the \c
+/src/drivers subdirectory of the StarPU tree, some can be found elsewhere in the
+tree such as \c src/datawizard/malloc.c for memory allocation routines or the
+subdirectories of \c src/datawizard/interfaces/ for data transfer routines.
+
+The driver ABI defined in the \ref _starpu_driver_ops structure includes the
+following operations:
+
+- \c .init: initialize a driver instance for the calling worker 
+  managing a hardware computing unit compatible with
+  this driver.
+
+- \c .run_once: perform a single driver progress cycle for the calling worker
+  (see \ref CoreEntitiesWorkersOperations).
+
+- \c .deinit: deinitialize the driver instance for the calling worker
+
+- \c .run: executes the following sequence automatically: call \c .init,
+  repeatedly call \c .run_once until the function \ref
+  _starpu_machine_is_running() returns false, call \c .deinit.
+
+The source code common to all drivers is shared in
+<code>src/drivers/driver_common/driver_common.[ch]</code>. This file includes
+services such as grabbing a new task to execute on a worker, managing statistics
+accounting on job startup and completion and updating the worker status
 
 \subsubsection CoreEntitiesDriversMP Master/Slave Drivers
 
+A subset of the drivers corresponds to drivers managing computing units in
+master/slave mode, that is, drivers involving a local master instance managing
+one or more remote slave instances on the targeted device(s). This includes
+devices such as discrete manycore accelerators (e.g. Intel's Knight Corners
+board, for instance), or pseudo devices such as a cluster of cpu nodes driver
+through StarPU's MPI master/slave mode. A driver instance on the master side
+is named the \b source, while a driver instances on the slave side is named
+the \b sink.
+
+A significant part of the work realized on the source and sink sides of
+master/slave drivers is identical among all master/slave drivers, due to the
+similarities in the software pattern. Therefore, many routines are shared among
+all these drivers in the \c src/drivers/mp_common subdirectory. In particular, a
+set of default commands to be used between sources and sinks is defined,
+assuming the availability of some communication channel between them (see enum
+\ref _starpu_mp_command)
+
 TODO
 
 \subsection CoreEntitiesTasksJobs Tasks and Jobs