|
@@ -1130,39 +1130,69 @@ starpu_data_filter.
|
|
@subsection Predefined filter functions
|
|
@subsection Predefined filter functions
|
|
|
|
|
|
@menu
|
|
@menu
|
|
-* Partitioning BCSR Data::
|
|
|
|
-* Partitioning BLAS interface::
|
|
|
|
* Partitioning Vector Data::
|
|
* Partitioning Vector Data::
|
|
-* Partitioning Block Data::
|
|
|
|
|
|
+* Partitioning Matrix Data::
|
|
|
|
+* Partitioning 3D Matrix Data::
|
|
|
|
+* Partitioning BCSR Data::
|
|
@end menu
|
|
@end menu
|
|
|
|
|
|
This section gives a partial list of the predefined partitioning functions.
|
|
This section gives a partial list of the predefined partitioning functions.
|
|
Examples on how to use them are shown in @ref{Partitioning Data}. The complete
|
|
Examples on how to use them are shown in @ref{Partitioning Data}. The complete
|
|
list can be found in @code{starpu_data_filters.h} .
|
|
list can be found in @code{starpu_data_filters.h} .
|
|
|
|
|
|
-@node Partitioning BCSR Data
|
|
|
|
-@subsubsection Partitioning BCSR Data
|
|
|
|
|
|
+@node Partitioning Vector Data
|
|
|
|
+@subsubsection Partitioning Vector Data
|
|
|
|
|
|
-@deftypefun void starpu_canonical_block_filter_bcsr (void *@var{father_interface}, void *@var{child_interface}, {struct starpu_data_filter} *@var{f}, unsigned @var{id}, unsigned @var{nparts})
|
|
|
|
-This partitions a block-sparse matrix into dense matrices.
|
|
|
|
|
|
+@deftypefun void starpu_block_filter_func_vector (void *@var{father_interface}, void *@var{child_interface}, {struct starpu_data_filter} *@var{f}, unsigned @var{id}, unsigned @var{nparts})
|
|
|
|
+Return in @code{*@var{child_interface}} the @var{id}th element of the
|
|
|
|
+vector represented by @var{father_interface} once partitioned in
|
|
|
|
+@var{nparts} chunks of equal size.
|
|
@end deftypefun
|
|
@end deftypefun
|
|
|
|
|
|
-@deftypefun void starpu_vertical_block_filter_func_csr (void *@var{father_interface}, void *@var{child_interface}, {struct starpu_data_filter} *@var{f}, unsigned @var{id}, unsigned @var{nparts})
|
|
|
|
-This partitions a block-sparse matrix into vertical block-sparse matrices.
|
|
|
|
|
|
+@deftypefun void starpu_block_shadow_filter_func_vector (void *@var{father_interface}, void *@var{child_interface}, {struct starpu_data_filter} *@var{f}, unsigned @var{id}, unsigned @var{nparts})
|
|
|
|
+Return in @code{*@var{child_interface}} the @var{id}th element of the
|
|
|
|
+vector represented by @var{father_interface} once partitioned in
|
|
|
|
+@var{nparts} chunks of equal size with a shadow border @code{filter_arg_ptr}, thus getting a vector of size (n-2*shadow)/nparts+2*shadow
|
|
|
|
+
|
|
|
|
+The @code{filter_arg_ptr} field must be the shadow size casted into @code{void*}.
|
|
|
|
+
|
|
|
|
+IMPORTANT: This can only be used for read-only access, as no coherency is
|
|
|
|
+enforced for the shadowed parts.
|
|
|
|
+
|
|
|
|
+A usage example is available in examples/filters/shadow.c
|
|
|
|
+@end deftypefun
|
|
|
|
+
|
|
|
|
+@deftypefun void starpu_vector_list_filter_func (void *@var{father_interface}, void *@var{child_interface}, {struct starpu_data_filter} *@var{f}, unsigned @var{id}, unsigned @var{nparts})
|
|
|
|
+Return in @code{*@var{child_interface}} the @var{id}th element of the
|
|
|
|
+vector represented by @var{father_interface} once partitioned into
|
|
|
|
+@var{nparts} chunks according to the @code{filter_arg_ptr} field of
|
|
|
|
+@code{*@var{f}}.
|
|
|
|
+
|
|
|
|
+The @code{filter_arg_ptr} field must point to an array of @var{nparts}
|
|
|
|
+@code{uint32_t} elements, each of which specifies the number of elements
|
|
|
|
+in each chunk of the partition.
|
|
@end deftypefun
|
|
@end deftypefun
|
|
|
|
|
|
-@node Partitioning BLAS interface
|
|
|
|
-@subsubsection Partitioning BLAS interface
|
|
|
|
|
|
+@deftypefun void starpu_vector_divide_in_2_filter_func (void *@var{father_interface}, void *@var{child_interface}, {struct starpu_data_filter} *@var{f}, unsigned @var{id}, unsigned @var{nparts})
|
|
|
|
+Return in @code{*@var{child_interface}} the @var{id}th element of the
|
|
|
|
+vector represented by @var{father_interface} once partitioned in two
|
|
|
|
+chunks of equal size, ignoring @var{nparts}. Thus, @var{id} must be
|
|
|
|
+@code{0} or @code{1}.
|
|
|
|
+@end deftypefun
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+@node Partitioning Matrix Data
|
|
|
|
+@subsubsection Partitioning Matrix Data
|
|
|
|
|
|
@deftypefun void starpu_block_filter_func (void *@var{father_interface}, void *@var{child_interface}, {struct starpu_data_filter} *@var{f}, unsigned @var{id}, unsigned @var{nparts})
|
|
@deftypefun void starpu_block_filter_func (void *@var{father_interface}, void *@var{child_interface}, {struct starpu_data_filter} *@var{f}, unsigned @var{id}, unsigned @var{nparts})
|
|
-This partitions a dense Matrix along the x dimension, thus getting (y,(x/nparts)
|
|
|
|
|
|
+This partitions a dense Matrix along the x dimension, thus getting (x/nparts,y)
|
|
matrices. If nparts does not divide x, the last submatrix contains the
|
|
matrices. If nparts does not divide x, the last submatrix contains the
|
|
remainder.
|
|
remainder.
|
|
@end deftypefun
|
|
@end deftypefun
|
|
|
|
|
|
@deftypefun void starpu_block_shadow_filter_func (void *@var{father_interface}, void *@var{child_interface}, {struct starpu_data_filter} *@var{f}, unsigned @var{id}, unsigned @var{nparts})
|
|
@deftypefun void starpu_block_shadow_filter_func (void *@var{father_interface}, void *@var{child_interface}, {struct starpu_data_filter} *@var{f}, unsigned @var{id}, unsigned @var{nparts})
|
|
This partitions a dense Matrix along the x dimension, with a shadow border
|
|
This partitions a dense Matrix along the x dimension, with a shadow border
|
|
-@code{filter_arg_ptr}, thus getting (y,((x-2*shadow)/nparts+2*shadow)
|
|
|
|
|
|
+@code{filter_arg_ptr}, thus getting ((x-2*shadow)/nparts+2*shadow,y)
|
|
matrices. If nparts does not divide x-2*shadow, the last submatrix contains the
|
|
matrices. If nparts does not divide x-2*shadow, the last submatrix contains the
|
|
remainder.
|
|
remainder.
|
|
|
|
|
|
@@ -1173,14 +1203,14 @@ A usage example is available in examples/filters/shadow2d.c
|
|
@end deftypefun
|
|
@end deftypefun
|
|
|
|
|
|
@deftypefun void starpu_vertical_block_filter_func (void *@var{father_interface}, void *@var{child_interface}, {struct starpu_data_filter} *@var{f}, unsigned @var{id}, unsigned @var{nparts})
|
|
@deftypefun void starpu_vertical_block_filter_func (void *@var{father_interface}, void *@var{child_interface}, {struct starpu_data_filter} *@var{f}, unsigned @var{id}, unsigned @var{nparts})
|
|
-This partitions a dense Matrix along the y dimension, thus getting (y/nparts),x)
|
|
|
|
|
|
+This partitions a dense Matrix along the y dimension, thus getting (x,y/nparts)
|
|
matrices. If nparts does not divide y, the last submatrix contains the
|
|
matrices. If nparts does not divide y, the last submatrix contains the
|
|
remainder.
|
|
remainder.
|
|
@end deftypefun
|
|
@end deftypefun
|
|
|
|
|
|
@deftypefun void starpu_vertical_block_shadow_filter_func (void *@var{father_interface}, void *@var{child_interface}, {struct starpu_data_filter} *@var{f}, unsigned @var{id}, unsigned @var{nparts})
|
|
@deftypefun void starpu_vertical_block_shadow_filter_func (void *@var{father_interface}, void *@var{child_interface}, {struct starpu_data_filter} *@var{f}, unsigned @var{id}, unsigned @var{nparts})
|
|
This partitions a dense Matrix along the y dimension, with a shadow border
|
|
This partitions a dense Matrix along the y dimension, with a shadow border
|
|
-@code{filter_arg_ptr}, thus getting ((y-2*shadow)/nparts)+2*shadow,x)
|
|
|
|
|
|
+@code{filter_arg_ptr}, thus getting (x,(y-2*shadow)/nparts+2*shadow)
|
|
matrices. If nparts does not divide y-2*shadow, the last submatrix contains the
|
|
matrices. If nparts does not divide y-2*shadow, the last submatrix contains the
|
|
remainder.
|
|
remainder.
|
|
|
|
|
|
@@ -1190,52 +1220,68 @@ enforced for the shadowed parts.
|
|
A usage example is available in examples/filters/shadow2d.c
|
|
A usage example is available in examples/filters/shadow2d.c
|
|
@end deftypefun
|
|
@end deftypefun
|
|
|
|
|
|
-@node Partitioning Vector Data
|
|
|
|
-@subsubsection Partitioning Vector Data
|
|
|
|
|
|
+@node Partitioning 3D Matrix Data
|
|
|
|
+@subsubsection Partitioning 3D Matrix Data
|
|
|
|
|
|
-@deftypefun void starpu_block_filter_func_vector (void *@var{father_interface}, void *@var{child_interface}, {struct starpu_data_filter} *@var{f}, unsigned @var{id}, unsigned @var{nparts})
|
|
|
|
-Return in @code{*@var{child_interface}} the @var{id}th element of the
|
|
|
|
-vector represented by @var{father_interface} once partitioned in
|
|
|
|
-@var{nparts} chunks of equal size.
|
|
|
|
-@end deftypefun
|
|
|
|
|
|
+A usage example is available in examples/filters/shadow3d.c
|
|
|
|
|
|
-@deftypefun void starpu_block_shadow_filter_func_vector (void *@var{father_interface}, void *@var{child_interface}, {struct starpu_data_filter} *@var{f}, unsigned @var{id}, unsigned @var{nparts})
|
|
|
|
-Return in @code{*@var{child_interface}} the @var{id}th element of the
|
|
|
|
-vector represented by @var{father_interface} once partitioned in
|
|
|
|
-@var{nparts} chunks of equal size with a shadow border @code{filter_arg_ptr}, thus getting a vector of size (n-2*shadow)/nparts+2*shadow
|
|
|
|
|
|
+@deftypefun void starpu_block_filter_func_block (void *@var{father_interface}, void *@var{child_interface}, {struct starpu_data_filter} *@var{f}, unsigned @var{id}, unsigned @var{nparts})
|
|
|
|
+This partitions a 3D matrix along the X dimension, thus getting (x/nparts,y,z)
|
|
|
|
+3D matrices. If nparts does not divide x, the last submatrix contains the
|
|
|
|
+remainder.
|
|
|
|
+@end deftypefun
|
|
|
|
|
|
-The @code{filter_arg_ptr} field must be the shadow size casted into @code{void*}.
|
|
|
|
|
|
+@deftypefun void starpu_block_shadow_filter_func_block (void *@var{father_interface}, void *@var{child_interface}, {struct starpu_data_filter} *@var{f}, unsigned @var{id}, unsigned @var{nparts})
|
|
|
|
+This partitions a 3D matrix along the X dimension, with a shadow border
|
|
|
|
+@code{filter_arg_ptr}, thus getting ((x-2*shadow)/nparts+2*shadow,y,z) 3D
|
|
|
|
+matrices. If nparts does not divide x, the last submatrix contains the
|
|
|
|
+remainder.
|
|
|
|
|
|
IMPORTANT: This can only be used for read-only access, as no coherency is
|
|
IMPORTANT: This can only be used for read-only access, as no coherency is
|
|
enforced for the shadowed parts.
|
|
enforced for the shadowed parts.
|
|
|
|
+@end deftypefun
|
|
|
|
|
|
-A usage example is available in examples/filters/shadow.c
|
|
|
|
|
|
+@deftypefun void starpu_vertical_block_filter_func_block (void *@var{father_interface}, void *@var{child_interface}, {struct starpu_data_filter} *@var{f}, unsigned @var{id}, unsigned @var{nparts})
|
|
|
|
+This partitions a 3D matrix along the Y dimension, thus getting (x,y/nparts,z)
|
|
|
|
+3D matrices. If nparts does not divide y, the last submatrix contains the
|
|
|
|
+remainder.
|
|
@end deftypefun
|
|
@end deftypefun
|
|
|
|
|
|
-@deftypefun void starpu_vector_list_filter_func (void *@var{father_interface}, void *@var{child_interface}, {struct starpu_data_filter} *@var{f}, unsigned @var{id}, unsigned @var{nparts})
|
|
|
|
-Return in @code{*@var{child_interface}} the @var{id}th element of the
|
|
|
|
-vector represented by @var{father_interface} once partitioned into
|
|
|
|
-@var{nparts} chunks according to the @code{filter_arg_ptr} field of
|
|
|
|
-@code{*@var{f}}.
|
|
|
|
|
|
+@deftypefun void starpu_vertical_block_shadow_filter_func_block (void *@var{father_interface}, void *@var{child_interface}, {struct starpu_data_filter} *@var{f}, unsigned @var{id}, unsigned @var{nparts})
|
|
|
|
+This partitions a 3D matrix along the Y dimension, with a shadow border
|
|
|
|
+@code{filter_arg_ptr}, thus getting (x,(y-2*shadow)/nparts+2*shadow,z) 3D
|
|
|
|
+matrices. If nparts does not divide y, the last submatrix contains the
|
|
|
|
+remainder.
|
|
|
|
|
|
-The @code{filter_arg_ptr} field must point to an array of @var{nparts}
|
|
|
|
-@code{uint32_t} elements, each of which specifies the number of elements
|
|
|
|
-in each chunk of the partition.
|
|
|
|
|
|
+IMPORTANT: This can only be used for read-only access, as no coherency is
|
|
|
|
+enforced for the shadowed parts.
|
|
@end deftypefun
|
|
@end deftypefun
|
|
|
|
|
|
-@deftypefun void starpu_vector_divide_in_2_filter_func (void *@var{father_interface}, void *@var{child_interface}, {struct starpu_data_filter} *@var{f}, unsigned @var{id}, unsigned @var{nparts})
|
|
|
|
-Return in @code{*@var{child_interface}} the @var{id}th element of the
|
|
|
|
-vector represented by @var{father_interface} once partitioned in two
|
|
|
|
-chunks of equal size, ignoring @var{nparts}. Thus, @var{id} must be
|
|
|
|
-@code{0} or @code{1}.
|
|
|
|
|
|
+@deftypefun void starpu_depth_block_filter_func_block (void *@var{father_interface}, void *@var{child_interface}, {struct starpu_data_filter} *@var{f}, unsigned @var{id}, unsigned @var{nparts})
|
|
|
|
+This partitions a 3D matrix along the Z dimension, thus getting (x,y,z/nparts)
|
|
|
|
+3D matrices. If nparts does not divide z, the last submatrix contains the
|
|
|
|
+remainder.
|
|
|
|
+@end deftypefun
|
|
|
|
+
|
|
|
|
+@deftypefun void starpu_depth_block_shadow_filter_func_block (void *@var{father_interface}, void *@var{child_interface}, {struct starpu_data_filter} *@var{f}, unsigned @var{id}, unsigned @var{nparts})
|
|
|
|
+This partitions a 3D matrix along the Z dimension, with a shadow border
|
|
|
|
+@code{filter_arg_ptr}, thus getting (x,y,(z-2*shadow)/nparts+2*shadow)
|
|
|
|
+3D matrices. If nparts does not divide z, the last submatrix contains the
|
|
|
|
+remainder.
|
|
|
|
+
|
|
|
|
+IMPORTANT: This can only be used for read-only access, as no coherency is
|
|
|
|
+enforced for the shadowed parts.
|
|
@end deftypefun
|
|
@end deftypefun
|
|
|
|
|
|
|
|
+@node Partitioning BCSR Data
|
|
|
|
+@subsubsection Partitioning BCSR Data
|
|
|
|
|
|
-@node Partitioning Block Data
|
|
|
|
-@subsubsection Partitioning Block Data
|
|
|
|
|
|
+@deftypefun void starpu_canonical_block_filter_bcsr (void *@var{father_interface}, void *@var{child_interface}, {struct starpu_data_filter} *@var{f}, unsigned @var{id}, unsigned @var{nparts})
|
|
|
|
+This partitions a block-sparse matrix into dense matrices.
|
|
|
|
+@end deftypefun
|
|
|
|
|
|
-@deftypefun void starpu_block_filter_func_block (void *@var{father_interface}, void *@var{child_interface}, {struct starpu_data_filter} *@var{f}, unsigned @var{id}, unsigned @var{nparts})
|
|
|
|
-This partitions a 3D matrix along the X axis.
|
|
|
|
|
|
+@deftypefun void starpu_vertical_block_filter_func_csr (void *@var{father_interface}, void *@var{child_interface}, {struct starpu_data_filter} *@var{f}, unsigned @var{id}, unsigned @var{nparts})
|
|
|
|
+This partitions a block-sparse matrix into vertical block-sparse matrices.
|
|
@end deftypefun
|
|
@end deftypefun
|
|
|
|
|
|
@node Codelets and Tasks
|
|
@node Codelets and Tasks
|