Browse Source

native: fixed bug converting enum to char

la-knuth
Marcus Cuda 16 years ago
parent
commit
4c856982f1
  1. 34
      src/NativeWrappers/ACML/blas.c

34
src/NativeWrappers/ACML/blas.c

@ -2,6 +2,7 @@
#include "wrapper_common.h"
enum CBLAS_TRANSPOSE {CblasNoTrans=111, CblasTrans=112, CblasConjTrans=113, CblasConjNoTrans=114};
char getTransChar(TRANSPOSE);
DLLEXPORT void s_axpy(const int n, const float alpha, float x[], float y[]){
saxpy(n, alpha, x, 1, y, 1);
@ -54,27 +55,44 @@ DLLEXPORT doublecomplex z_dot_product(int n, doublecomplex x[], doublecomplex y[
DLLEXPORT void s_matrix_multiply(const enum TRANSPOSE transA, const enum TRANSPOSE transB, const int m, const int n, const int k, float alpha, float x[], float y[], float beta, float c[]){
int lda = transA == CblasNoTrans ? m : k;
int ldb = transB == CblasNoTrans ? k : n;
sgemm(transA, transB, m, n, k, alpha, x, lda, y, ldb, beta, c, m);
char transAchar = getTransChar(transA);
char transBchar = getTransChar(transB);
sgemm(transAchar, transBchar, m, n, k, alpha, x, lda, y, ldb, beta, c, m);
}
DLLEXPORT void d_matrix_multiply(const enum TRANSPOSE transA, const enum TRANSPOSE transB, const int m, const int n, const int k, double alpha, double x[], double y[], double beta, double c[]){
int lda = transA == CblasNoTrans ? m : k;
int ldb = transB == CblasNoTrans ? k : n;
dgemm(transA, transB, m, n, k, alpha, x, lda, y, ldb, beta, c, m);
char transAchar = getTransChar(transA);
char transBchar = getTransChar(transB);
dgemm(transAchar, transBchar, m, n, k, alpha, x, lda, y, ldb, beta, c, m);
}
DLLEXPORT void c_matrix_multiply(const enum TRANSPOSE transA, const enum TRANSPOSE transB, const int m, const int n, const int k, complex alpha, complex x[], complex y[], complex beta, complex c[]){
int lda = transA == CblasNoTrans ? m : k;
int ldb = transB == CblasNoTrans ? k : n;
cgemm(transA, transB, m, n, k, &alpha, x, lda, y, ldb, &beta, c, m);
char transAchar = getTransChar(transA);
char transBchar = getTransChar(transB);
cgemm(transAchar, transBchar, m, n, k, &alpha, x, lda, y, ldb, &beta, c, m);
}
DLLEXPORT void z_matrix_multiply(const enum TRANSPOSE transA, const enum TRANSPOSE transB, const int m, const int n, const int k, doublecomplex alpha, doublecomplex x[], doublecomplex y[], doublecomplex beta, doublecomplex c[]){
int lda = transA == CblasNoTrans ? m : k;
int ldb = transB == CblasNoTrans ? k : n;
zgemm(transA, transB, m, n, k, &alpha, x, lda, y, ldb, &beta, c, m);
char transAchar = getTransChar(transA);
char transBchar = getTransChar(transB);
zgemm(transAchar, transBchar, m, n, k, &alpha, x, lda, y, ldb, &beta, c, m);
}
char getTransChar(enum TRANSPOSE trans){
char cTrans;
switch( trans ){
case CblasNoTrans : cTrans = 'N';
break;
case CblasTrans : cTrans = 'T';
break;
case CblasConjTrans : cTrans = 'C';
break;
}
return cTrans;
}

Loading…
Cancel
Save