FLASH_main_prototypes.h

Go to the documentation of this file.
00001 /*
00002    libflame
00003    An object-based infrastructure for developing high-performance
00004    dense linear algebra libraries.
00005 
00006    Copyright (C) 2009, The University of Texas
00007 
00008    libflame is free software; you can redistribute it and/or modify
00009    it under the terms of the GNU Lesser General Public License as
00010    published by the Free Software Foundation; either version 2.1 of
00011    the License, or (at your option) any later version.
00012 
00013    libflame is distributed in the hope that it will be useful, but
00014    WITHOUT ANY WARRANTY; without even the implied warranty of
00015    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
00016    Lesser General Public License for more details.
00017 
00018    You should have received a copy of the GNU Lesser General Public
00019    License along with libflame; if you did not receive a copy, see
00020    http://www.gnu.org/licenses/.
00021 
00022    For more information, please contact us at flame@cs.utexas.edu or
00023    send mail to:
00024 
00025    Field G. Van Zee and/or
00026    Robert A. van de Geijn
00027    The University of Texas at Austin
00028    Department of Computer Sciences
00029    1 University Station C0500
00030    Austin TX 78712
00031 */
00032 
00033 // -----------------------------------------------------------------------------
00034 
00035 FLA_Error    FLASH_Obj_blocksizes_check( FLA_Obj H, dim_t* b_m, dim_t* b_n );
00036 
00037 FLA_Error    FLASH_Obj_create_helper_check( FLA_Bool without_buffer, FLA_Datatype datatype, dim_t m, dim_t n, dim_t depth, dim_t* b_m, dim_t* b_n, FLA_Obj* H );
00038 FLA_Error    FLASH_Obj_create_hierarchy_check( FLA_Datatype datatype, dim_t m, dim_t n, dim_t depth, dim_t* elem_sizes_m, dim_t* elem_sizes_n, FLA_Obj flat_matrix, FLA_Obj* H, unsigned long id, dim_t depth_overall, dim_t* depth_sizes_m, dim_t* depth_sizes_n, dim_t* m_offsets, dim_t* n_offsets );
00039 
00040 FLA_Error    FLASH_Obj_create_conf_to_check( FLA_Trans trans, FLA_Obj H_cur, FLA_Obj* H_new );
00041 
00042 FLA_Error    FLASH_Obj_create_hier_conf_to_flat_check( FLA_Trans trans, FLA_Obj F, dim_t depth, dim_t* blocksizes, FLA_Obj* H );
00043 FLA_Error    FLASH_Obj_create_hier_conf_to_flat_ext_check( FLA_Trans trans, FLA_Obj F, dim_t depth, dim_t* b_m, dim_t* b_n, FLA_Obj* H );
00044 FLA_Error    FLASH_Obj_create_flat_conf_to_hier_check( FLA_Trans trans, FLA_Obj H, FLA_Obj* F );
00045 FLA_Error    FLASH_Obj_create_hier_copy_of_flat_check( FLA_Obj F, dim_t depth, dim_t* blocksizes, FLA_Obj* H );
00046 FLA_Error    FLASH_Obj_create_hier_copy_of_flat_ext_check( FLA_Obj F, dim_t depth, dim_t* b_m, dim_t* b_n, FLA_Obj* H );
00047 FLA_Error    FLASH_Obj_create_flat_copy_of_hier_check( FLA_Obj H, FLA_Obj* F );
00048 
00049 FLA_Error    FLASH_Obj_free_check( FLA_Obj* H );
00050 FLA_Error    FLASH_Obj_free_without_buffer_check( FLA_Obj* H );
00051 FLA_Error    FLASH_Obj_free_hierarchy_check( FLA_Obj* H );
00052 
00053 FLA_Error    FLASH_Obj_attach_buffer_check( void *buffer, dim_t ldim, FLA_Obj* H );
00054 FLA_Error    FLASH_Obj_attach_buffer_hierarchy_check( FLA_Obj F, FLA_Obj* H );
00055 
00056 // -----------------------------------------------------------------------------
00057 
00058 FLA_Error    FLASH_Axpy_submatrix_to_global( FLA_Obj alpha, dim_t m, dim_t n, void* buffer, dim_t ldim, dim_t i, dim_t j, FLA_Obj H );
00059 FLA_Error    FLASH_Axpy_global_to_submatrix( FLA_Obj alpha, dim_t i, dim_t j, FLA_Obj H, dim_t m, dim_t n, void* buffer, dim_t ldim );
00060 FLA_Error    FLASH_Axpy_subobject_to_global( FLA_Obj alpha, FLA_Obj F, dim_t i, dim_t j, FLA_Obj H );
00061 FLA_Error    FLASH_Axpy_global_to_subobject( FLA_Obj alpha, dim_t i, dim_t j, FLA_Obj H, FLA_Obj F );
00062 
00063 FLA_Error    FLASH_Axpy_hierarchy( int direction, FLA_Obj alpha, FLA_Obj F, dim_t i, dim_t j, FLA_Obj* H );
00064 FLA_Error    FLASH_Axpy_hierarchy_r( int direction, FLA_Obj alpha, FLA_Obj F, dim_t i, dim_t j, FLA_Obj* H, FLASH_Obj_queue* queue );
00065 
00066 // -----------------------------------------------------------------------------
00067 
00068 FLA_Error    FLASH_Copy_submatrix_to_global( dim_t m, dim_t n, void* buffer, dim_t ldim, dim_t i, dim_t j, FLA_Obj H );
00069 FLA_Error    FLASH_Copy_global_to_submatrix( dim_t i, dim_t j, FLA_Obj H, dim_t m, dim_t n, void* buffer, dim_t ldim );
00070 FLA_Error    FLASH_Copy_subobject_to_global( FLA_Obj F, dim_t i, dim_t j, FLA_Obj H );
00071 FLA_Error    FLASH_Copy_global_to_subobject( dim_t i, dim_t j, FLA_Obj H, FLA_Obj F );
00072 
00073 FLA_Error    FLASH_Copy_hierarchy( int direction, FLA_Obj F, dim_t i, dim_t j, FLA_Obj* H );
00074 FLA_Error    FLASH_Copy_hierarchy_r( int direction, FLA_Obj F, dim_t i, dim_t j, FLA_Obj* H, FLASH_Obj_queue* queue );
00075 
00076 // -----------------------------------------------------------------------------
00077 
00078 FLA_Datatype FLASH_Obj_datatype( FLA_Obj H );
00079 dim_t        FLASH_Obj_scalar_length( FLA_Obj H );
00080 dim_t        FLASH_Obj_scalar_width( FLA_Obj H );
00081 dim_t        FLASH_Obj_depth( FLA_Obj H );
00082 dim_t        FLASH_Obj_blocksizes( FLA_Obj H, dim_t* b_m, dim_t* b_n );
00083 
00084 FLA_Error    FLASH_Obj_create( FLA_Datatype datatype, dim_t m, dim_t n, dim_t depth, dim_t* blocksizes, FLA_Obj* H );
00085 FLA_Error    FLASH_Obj_create_ext( FLA_Datatype datatype, dim_t m, dim_t n, dim_t depth, dim_t* b_m, dim_t* b_n, FLA_Obj* H );
00086 FLA_Error    FLASH_Obj_create_without_buffer( FLA_Datatype datatype, dim_t m, dim_t n, dim_t depth, dim_t* blocksizes, FLA_Obj* H );
00087 FLA_Error    FLASH_Obj_create_without_buffer_ext( FLA_Datatype datatype, dim_t m, dim_t n, dim_t depth, dim_t* b_m, dim_t* b_n, FLA_Obj* H );
00088 
00089 FLA_Error    FLASH_Obj_create_helper( FLA_Bool without_buffer, FLA_Datatype datatype, dim_t m, dim_t n, dim_t depth, dim_t* b_m, dim_t* b_n, FLA_Obj* H );
00090 FLA_Error    FLASH_Obj_create_hierarchy( FLA_Datatype datatype, dim_t m, dim_t n, dim_t depth, dim_t* elem_sizes_m, dim_t* elem_sizes_n, FLA_Obj flat_matrix, FLA_Obj* H, unsigned long id, dim_t depth_overall, dim_t* depth_sizes_m, dim_t* depth_sizes_n, dim_t* m_offsets, dim_t* n_offsets );
00091 
00092 FLA_Error    FLASH_Obj_create_conf_to( FLA_Trans trans, FLA_Obj H_cur, FLA_Obj* H_new );
00093 FLA_Error    FLASH_Obj_create_hier_conf_to_flat( FLA_Trans trans, FLA_Obj F, dim_t depth, dim_t* blocksizes, FLA_Obj* H );
00094 FLA_Error    FLASH_Obj_create_hier_conf_to_flat_ext( FLA_Trans trans, FLA_Obj F, dim_t depth, dim_t* b_m, dim_t* b_n, FLA_Obj* H );
00095 FLA_Error    FLASH_Obj_create_flat_conf_to_hier( FLA_Trans trans, FLA_Obj H, FLA_Obj* F );
00096 FLA_Error    FLASH_Obj_create_hier_copy_of_flat( FLA_Obj F, dim_t depth, dim_t* blocksizes, FLA_Obj* H );
00097 FLA_Error    FLASH_Obj_create_hier_copy_of_flat_ext( FLA_Obj F, dim_t depth, dim_t* b_m, dim_t* b_n, FLA_Obj* H );
00098 FLA_Error    FLASH_Obj_create_flat_copy_of_hier( FLA_Obj H, FLA_Obj* F );
00099 
00100 void         FLASH_Obj_free( FLA_Obj* H );
00101 void         FLASH_Obj_free_hierarchy( FLA_Obj* H );
00102 void         FLASH_Obj_free_without_buffer( FLA_Obj* H );
00103 
00104 FLA_Error    FLASH_Obj_attach_buffer( void* buffer, dim_t ldim, FLA_Obj* H );
00105 FLA_Error    FLASH_Obj_attach_buffer_hierarchy( FLA_Obj F, FLA_Obj* H );
00106 
00107 FLA_Error    FLASH_Obj_flatten( FLA_Obj H, FLA_Obj F );
00108 FLA_Error    FLASH_Obj_hierarchify( FLA_Obj F, FLA_Obj H );
00109 
00110 void*        FLASH_Obj_extract_buffer( FLA_Obj H );
00111 
00112 FLA_Error    FLASH_Obj_show( char* header, FLA_Obj H, char* elem_format, char* footer );
00113 
00114 void         FLASH_print_struct( FLA_Obj H );
00115 void         FLASH_print_struct_helper( FLA_Obj H, int indent );
00116 
00117 // -----------------------------------------------------------------------------
00118 
00119 void         FLASH_Obj_exec( void* func, FLASH_Obj_queue* queue );
00120 void*        FLASH_Obj_exec_parallel( void* arg );
00121 void         FLASH_Obj_push( int direction, FLA_Obj alpha, FLA_Obj F, FLA_Obj H, FLASH_Obj_queue* queue );
00122 

Generated on Mon Jul 6 05:45:48 2009 for libflame by  doxygen 1.5.9