ソースを参照

document the hello world example, @cartouche results into something horrible...

Cédric Augonnet 16 年 前
コミット
f240c7b14b
共有1 個のファイルを変更した51 個の追加2 個の削除を含む
  1. 51 2
      doc/starpu.texi

+ 51 - 2
doc/starpu.texi

@@ -44,6 +44,11 @@ This manual documents the usage of StarPU
 @node Introduction
 @node Introduction
 @chapter Introduction to StarPU
 @chapter Introduction to StarPU
 
 
+@section Motivation
+
+@c DSM
+
+@c explain the notion of codelet and task (ie. g(A, B)
 
 
 @c ---------------------------------------------------------------------
 @c ---------------------------------------------------------------------
 @c Installing StarPU
 @c Installing StarPU
@@ -183,6 +188,11 @@ garanteed to be available until this method has been called.
 @node Codelets and Tasks
 @node Codelets and Tasks
 @section Codelets and Tasks
 @section Codelets and Tasks
 
 
+@c TODO
+@node starpu_task_create
+
+@c Callbacks : what can we put in callbacks ?
+
 @section Extensions
 @section Extensions
 
 
 @subsection CUDA extensions
 @subsection CUDA extensions
@@ -243,6 +253,10 @@ starpu_codelet cl =
 @end cartouche
 @end cartouche
 @end example
 @end example
 
 
+A codelet is a structure that represents a computational kernel. Such a codelet
+may contain an implementation of the same kernel on different architectures
+(eg. CUDA, Cell's SPU, x86, ...).
+
 The ''@code{.nbuffers}'' field specifies the number of data buffers that are
 The ''@code{.nbuffers}'' field specifies the number of data buffers that are
 manipulated by the codelet: here the codelet does not access or modify any data
 manipulated by the codelet: here the codelet does not access or modify any data
 that is controlled by our data management library. Note that the argument
 that is controlled by our data management library. Note that the argument
@@ -309,6 +323,41 @@ int main(int argc, char **argv)
 @end cartouche
 @end cartouche
 @end example
 @end example
 
 
-@c the task is executed on the device/accelerator but the callback is always
-@c executed on the CPUs
+Before submitting any tasks to StarPU, @code{starpu_init} must be called. The
+@code{NULL} arguments specifies that we use default configuration. Tasks cannot
+be submitted after the termination of StarPU by a call to
+@code{starpu_shutdown}.
+
+In the example above, a task structure is allocated by a call to
+@code{starpu_task_create}. This function only allocate and fills the
+corresponding structure with the default settings (@xref{starpu_task_create}),
+but it does not submit the task to StarPU.
+
+@c not really clear ;)
+The ''@code{.cl}'' field is a pointer to the codelet which the task will
+execute: in other words, the codelet structure describes which computational
+kernel should be offloaded on the different architectures, and the task
+structure is a wrapper containing a codelet and the piece of data on which the
+codelet should operate.
+
+The optional ''@code{.cl_arg}'' field is a pointer to a buffer (of size
+@code{.cl_arg_size}) with some parameters for some parameters for the kernel
+described by the codelet. For instance, if a codelet implements a computational
+kernel that multiplies its input vector by a constant, the constant could be
+specified by the means of this buffer.
+
+Once a task has been executed, an optional callback function can be called.
+While the computational kernel could be offloaded on various architectures, the
+callback function is always executed on a CPU. The ''@code{.callback_arg}''
+pointer is passed as an argument of the callback. The prototype of a callback
+function must be:
+@example
+void (*callback_function)(void *);
+@end example
+
+If the @code{.synchronous} field is non-null, task submission will be
+synchronous: the @code{starpu_submit_task} function will not return until the
+task was executed. Note that the @code{starpu_shutdown} method does not
+guaranty that asynchronous tasks have been executed before it returns.
+
 @bye
 @bye