libflame  12600
FLA_Cntl.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) 2011, 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 // Shared definitions
00034 
00035 typedef struct FLA_Blocksize_s
00036 {
00037     dim_t s;
00038     dim_t d;
00039     dim_t c;
00040     dim_t z;
00041 } fla_blocksize_t;
00042 
00043 #define FLA_SUBPROBLEM                  0
00044 #define FLA_UNBLOCKED_EXTERN           10
00045 #define FLA_BLOCKED_EXTERN             13
00046 
00047 #define FLA_UNB_VAR_OFFSET             40
00048 #define FLA_OPT_VAR_OFFSET             80
00049 #define FLA_BLK_VAR_OFFSET            120
00050 #define FLA_BLF_VAR_OFFSET            160
00051 
00052 #define FLA_UNBLOCKED_VARIANT1        (FLA_UNB_VAR_OFFSET+1)
00053 #define FLA_UNBLOCKED_VARIANT2        (FLA_UNB_VAR_OFFSET+2)
00054 #define FLA_UNBLOCKED_VARIANT3        (FLA_UNB_VAR_OFFSET+3)
00055 #define FLA_UNBLOCKED_VARIANT4        (FLA_UNB_VAR_OFFSET+4)
00056 #define FLA_UNBLOCKED_VARIANT5        (FLA_UNB_VAR_OFFSET+5)
00057 #define FLA_UNBLOCKED_VARIANT6        (FLA_UNB_VAR_OFFSET+6)
00058 #define FLA_UNBLOCKED_VARIANT7        (FLA_UNB_VAR_OFFSET+7)
00059 #define FLA_UNBLOCKED_VARIANT8        (FLA_UNB_VAR_OFFSET+8)
00060 #define FLA_UNBLOCKED_VARIANT9        (FLA_UNB_VAR_OFFSET+9)
00061 #define FLA_UNBLOCKED_VARIANT10       (FLA_UNB_VAR_OFFSET+10)
00062 
00063 #define FLA_UNB_OPT_VARIANT1          (FLA_OPT_VAR_OFFSET+1)
00064 #define FLA_UNB_OPT_VARIANT2          (FLA_OPT_VAR_OFFSET+2)
00065 #define FLA_UNB_OPT_VARIANT3          (FLA_OPT_VAR_OFFSET+3)
00066 #define FLA_UNB_OPT_VARIANT4          (FLA_OPT_VAR_OFFSET+4)
00067 #define FLA_UNB_OPT_VARIANT5          (FLA_OPT_VAR_OFFSET+5)
00068 #define FLA_UNB_OPT_VARIANT6          (FLA_OPT_VAR_OFFSET+6)
00069 #define FLA_UNB_OPT_VARIANT7          (FLA_OPT_VAR_OFFSET+7)
00070 #define FLA_UNB_OPT_VARIANT8          (FLA_OPT_VAR_OFFSET+8)
00071 #define FLA_UNB_OPT_VARIANT9          (FLA_OPT_VAR_OFFSET+9)
00072 #define FLA_UNB_OPT_VARIANT10         (FLA_OPT_VAR_OFFSET+10)
00073 
00074 #define FLA_BLOCKED_VARIANT1          (FLA_BLK_VAR_OFFSET+1)
00075 #define FLA_BLOCKED_VARIANT2          (FLA_BLK_VAR_OFFSET+2)
00076 #define FLA_BLOCKED_VARIANT3          (FLA_BLK_VAR_OFFSET+3)
00077 #define FLA_BLOCKED_VARIANT4          (FLA_BLK_VAR_OFFSET+4)
00078 #define FLA_BLOCKED_VARIANT5          (FLA_BLK_VAR_OFFSET+5)
00079 #define FLA_BLOCKED_VARIANT6          (FLA_BLK_VAR_OFFSET+6)
00080 #define FLA_BLOCKED_VARIANT7          (FLA_BLK_VAR_OFFSET+7)
00081 #define FLA_BLOCKED_VARIANT8          (FLA_BLK_VAR_OFFSET+8)
00082 #define FLA_BLOCKED_VARIANT9          (FLA_BLK_VAR_OFFSET+9)
00083 #define FLA_BLOCKED_VARIANT10         (FLA_BLK_VAR_OFFSET+10)
00084 #define FLA_BLOCKED_VARIANT11         (FLA_BLK_VAR_OFFSET+11)
00085 #define FLA_BLOCKED_VARIANT12         (FLA_BLK_VAR_OFFSET+12)
00086 #define FLA_BLOCKED_VARIANT13         (FLA_BLK_VAR_OFFSET+13)
00087 #define FLA_BLOCKED_VARIANT14         (FLA_BLK_VAR_OFFSET+14)
00088 #define FLA_BLOCKED_VARIANT15         (FLA_BLK_VAR_OFFSET+15)
00089 #define FLA_BLOCKED_VARIANT16         (FLA_BLK_VAR_OFFSET+16)
00090 #define FLA_BLOCKED_VARIANT17         (FLA_BLK_VAR_OFFSET+17)
00091 #define FLA_BLOCKED_VARIANT18         (FLA_BLK_VAR_OFFSET+18)
00092 #define FLA_BLOCKED_VARIANT19         (FLA_BLK_VAR_OFFSET+19)
00093 #define FLA_BLOCKED_VARIANT20         (FLA_BLK_VAR_OFFSET+20)
00094 
00095 #define FLA_BLK_FUS_VARIANT1          (FLA_BLF_VAR_OFFSET+1)
00096 #define FLA_BLK_FUS_VARIANT2          (FLA_BLF_VAR_OFFSET+2)
00097 #define FLA_BLK_FUS_VARIANT3          (FLA_BLF_VAR_OFFSET+3)
00098 #define FLA_BLK_FUS_VARIANT4          (FLA_BLF_VAR_OFFSET+4)
00099 #define FLA_BLK_FUS_VARIANT5          (FLA_BLF_VAR_OFFSET+5)
00100 #define FLA_BLK_FUS_VARIANT6          (FLA_BLF_VAR_OFFSET+6)
00101 #define FLA_BLK_FUS_VARIANT7          (FLA_BLF_VAR_OFFSET+7)
00102 #define FLA_BLK_FUS_VARIANT8          (FLA_BLF_VAR_OFFSET+8)
00103 #define FLA_BLK_FUS_VARIANT9          (FLA_BLF_VAR_OFFSET+9)
00104 #define FLA_BLK_FUS_VARIANT10         (FLA_BLF_VAR_OFFSET+10)
00105 
00106 #define FLA_Cntl_matrix_type( cntl )  cntl->matrix_type
00107 #define FLA_Cntl_blocksize( cntl )    cntl->blocksize
00108 #define FLA_Cntl_variant( cntl )      cntl->variant
00109 
00110 void FLA_Cntl_obj_free( void* cntl );
00111 
00112 
00113 // Include the control tree definitions for each class of operation.
00114 #include "FLA_Cntl_blas1.h"
00115 #include "FLA_Cntl_blas2.h"
00116 #include "FLA_Cntl_blas3.h"
00117 #include "FLA_Cntl_lapack.h"
00118