Changeset 18 for include/config-blas.h

Show
Ignore:
Timestamp:
04/28/07 20:58:32 (2 years ago)
Author:
pernet
Message:

Introduction of the field Modular<float> and the corresponding specializations using the float BLAS.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • include/config-blas.h

    r1 r18  
    11/* -*- mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ 
    2 /* linbox/algorithms/lifting-container-base.h 
     2/* config-blas.h 
    33 * Copyright (C) 2005  Pascal Giorgi 
    4  * 
     4 *               2007  Clement Pernet 
    55 * Written by Pascal Giorgi <pgiorgi@uwaterloo.ca> 
    66 * 
     
    5151        // level 2 routines 
    5252        void dgemv_ (const char*, const int*, const int*, const double*, const double*, const int*, const double*, const int*, const double*, double*, const int*); 
     53        void sgemv_ (const char*, const int*, const int*, const float*, const float*, const int*, const float*, const int*, const float*, float*, const int*); 
    5354        void dger_  (const int*, const int*, const double*, const double*, const int*, const double*, const int*, double*, const int*); 
    5455 
    5556        // level 3 routines 
    5657        void dtrsm_ (const char*, const char*, const char*, const char*, const int*, const int*, const double*, const double*, const int*, double*, const int*); 
     58        void strsm_ (const char*, const char*, const char*, const char*, const int*, const int*, const float*, const float*, const int*, float*, const int*); 
    5759        void dtrmm_ (const char*, const char*, const char*, const char*, const int*, const int*, const double*, const double*, const int*, double*, const int*); 
     60        void strmm_ (const char*, const char*, const char*, const char*, const int*, const int*, const float*, const float*, const int*, float*, const int*); 
     61        void sgemm_ (const char*, const char*, const int*, const int*, const int*, const float*, const float*, const int*, const float*, const int*, const float*, float*, const int*); 
    5862        void dgemm_ (const char*, const char*, const int*, const int*, const int*, const double*, const double*, const int*, const double*, const int*, const double*, double*, const int*); 
    5963} 
     
    128132                        dgemv_ ( EXT_BLAS_TRANSPOSE(TransA), &M, &N, &alpha, A, &lda, X, &incX, &beta, Y, &incY); 
    129133        } 
     134        void cblas_sgemv(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, const int M, const int N, const float alpha,  
     135                         const float *A, const int lda, const float *X, const int incX, const float beta, float *Y, const int incY) 
     136        { 
     137                if (Order == CblasRowMajor) 
     138                        sgemv_ ( EXT_BLAS_TRANSPOSE_tr(TransA), &N, &M, &alpha, A, &lda, X, &incX, &beta, Y, &incY); 
     139                else 
     140                        sgemv_ ( EXT_BLAS_TRANSPOSE(TransA), &M, &N, &alpha, A, &lda, X, &incX, &beta, Y, &incY); 
     141        } 
    130142   
    131143        void cblas_dger(const enum CBLAS_ORDER Order, const int M, const int N, const double alpha, const double *X, const int incX, 
     
    151163                        dtrsm_ ( EXT_BLAS_SIDE(Side), EXT_BLAS_UPLO(Uplo), EXT_BLAS_TRANSPOSE(TransA), EXT_BLAS_DIAG(Diag), &M, &N, &alpha, A, &lda, B, &ldb); 
    152164        } 
     165        void cblas_strsm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, 
     166                         const enum CBLAS_DIAG Diag, const int M, const int N, const float alpha, const float *A, const int lda, 
     167                         float *B, const int ldb) 
     168        {   
     169                if (Order == CblasRowMajor)  
     170                        strsm_ ( EXT_BLAS_SIDE_tr(Side), EXT_BLAS_UPLO_tr(Uplo), EXT_BLAS_TRANSPOSE(TransA), EXT_BLAS_DIAG(Diag), &N, &M, &alpha, A, &lda, B, &ldb);  
     171                else 
     172                        strsm_ ( EXT_BLAS_SIDE(Side), EXT_BLAS_UPLO(Uplo), EXT_BLAS_TRANSPOSE(TransA), EXT_BLAS_DIAG(Diag), &M, &N, &alpha, A, &lda, B, &ldb); 
     173        } 
    153174   
    154175        void cblas_dtrmm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, 
     
    160181                else 
    161182                        dtrmm_ ( EXT_BLAS_SIDE(Side), EXT_BLAS_UPLO(Uplo), EXT_BLAS_TRANSPOSE(TransA), EXT_BLAS_DIAG(Diag), &M, &N, &alpha, A, &lda, B, &ldb); 
     183        } 
     184        void cblas_strmm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, 
     185                         const enum CBLAS_DIAG Diag, const int M, const int N, const float alpha, const float *A, const int lda, 
     186                         float *B, const int ldb) 
     187        {   
     188                if (Order == CblasRowMajor) 
     189                        strmm_ ( EXT_BLAS_SIDE_tr(Side), EXT_BLAS_UPLO_tr(Uplo), EXT_BLAS_TRANSPOSE(TransA), EXT_BLAS_DIAG(Diag), &N, &M, &alpha, A, &lda, B, &ldb); 
     190                else 
     191                        strmm_ ( EXT_BLAS_SIDE(Side), EXT_BLAS_UPLO(Uplo), EXT_BLAS_TRANSPOSE(TransA), EXT_BLAS_DIAG(Diag), &M, &N, &alpha, A, &lda, B, &ldb); 
    162192        } 
    163193   
     
    170200                else 
    171201                        dgemm_ ( EXT_BLAS_TRANSPOSE(TransA), EXT_BLAS_TRANSPOSE(TransB), &M, &N, &K, &alpha, A, &lda, B, &ldb, &beta, C, &ldc); 
     202        } 
     203        void cblas_sgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_TRANSPOSE TransB, const int M, const int N, 
     204                         const int K, const float alpha, const float *A, const int lda, const float *B, const int ldb, 
     205                         const float beta, float *C, const int ldc)  
     206        {    
     207                if (Order == CblasRowMajor) 
     208                        sgemm_ ( EXT_BLAS_TRANSPOSE(TransB), EXT_BLAS_TRANSPOSE(TransA), &N, &M, &K, &alpha, B, &ldb, A, &lda, &beta, C, &ldc); 
     209                else 
     210                        sgemm_ ( EXT_BLAS_TRANSPOSE(TransA), EXT_BLAS_TRANSPOSE(TransB), &M, &N, &K, &alpha, A, &lda, B, &ldb, &beta, C, &ldc); 
    172211        } 
    173212 
     
    226265        void cblas_dgemv(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, const int M, const int N, const double alpha,  
    227266                         const double *A, const int lda, const double *X, const int incX, const double beta, double *Y, const int incY); 
     267 
     268        void cblas_sgemv(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, const int M, const int N, const float alpha,  
     269                         const float *A, const int lda, const float *X, const int incX, const float beta, float *Y, const int incY); 
    228270   
    229271        void cblas_dger(const enum CBLAS_ORDER Order, const int M, const int N, const double alpha, const double *X, const int incX, 
     
    237279                         double *B, const int ldb); 
    238280   
     281        void cblas_strsm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, 
     282                         const enum CBLAS_DIAG Diag, const int M, const int N, const float alpha, const float *A, const int lda, 
     283                         float *B, const int ldb); 
     284   
    239285        void cblas_dtrmm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, 
    240286                         const enum CBLAS_DIAG Diag, const int M, const int N, const double alpha, const double *A, const int lda, 
    241287                         double *B, const int ldb); 
    242288   
     289        void cblas_strmm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, 
     290                         const enum CBLAS_DIAG Diag, const int M, const int N, const float alpha, const float *A, const int lda, 
     291                         float *B, const int ldb); 
     292   
    243293        void cblas_dgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_TRANSPOSE TransB, const int M, const int N, 
    244294                         const int K, const double alpha, const double *A, const int lda, const double *B, const int ldb, 
    245295                         const double beta, double *C, const int ldc) ; 
     296        void cblas_sgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_TRANSPOSE TransB, const int M, const int N, 
     297                         const int K, const float alpha, const float *A, const int lda, const float *B, const int ldb, 
     298                         const float beta, float *C, const int ldc) ; 
    246299 
    247300        // LAPACK routines