Skip to content

Commit 0ae078c

Browse files
committed
attempt to fix OSX compilation error
1 parent 0cc166a commit 0ae078c

File tree

10 files changed

+376
-351
lines changed

10 files changed

+376
-351
lines changed

lib/fff/fff_base.c

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,6 @@ unsigned int fff_nbytes(fff_datatype type)
4444
}
4545

4646

47-
void fff_import_external_func(void* func_ptr, int k)
48-
{
49-
FFF_EXTERNAL_FUNC[k] = func_ptr;
50-
return;
51-
}
52-
5347
int fff_is_integer(fff_datatype type)
5448
{
5549
int ok = 0;

lib/fff/fff_base.h

Lines changed: 0 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -153,53 +153,6 @@ extern "C" {
153153
} fff_datatype;
154154

155155

156-
/* Global array of external function pointers */
157-
void* FFF_EXTERNAL_FUNC[29];
158-
typedef enum {
159-
FFF_BLAS_DDOT=0,
160-
FFF_BLAS_DNRM2=1,
161-
FFF_BLAS_DASUM=2,
162-
FFF_BLAS_IDAMAX=3,
163-
FFF_BLAS_DSWAP=4,
164-
FFF_BLAS_DCOPY=5,
165-
FFF_BLAS_DAXPY=6,
166-
FFF_BLAS_DSCAL=7,
167-
FFF_BLAS_DROT=8,
168-
FFF_BLAS_DROTG=9,
169-
FFF_BLAS_DROTMG=10,
170-
FFF_BLAS_DROTM=11,
171-
FFF_BLAS_DGEMV=12,
172-
FFF_BLAS_DTRMV=13,
173-
FFF_BLAS_DTRSV=14,
174-
FFF_BLAS_DSYMV=15,
175-
FFF_BLAS_DGER=16,
176-
FFF_BLAS_DSYR=17,
177-
FFF_BLAS_DSYR2=18,
178-
FFF_BLAS_DGEMM=19,
179-
FFF_BLAS_DSYMM=20,
180-
FFF_BLAS_DTRMM=21,
181-
FFF_BLAS_DTRSM=22,
182-
FFF_BLAS_DSYRK=23,
183-
FFF_BLAS_DSYR2K=24,
184-
FFF_LAPACK_DGETRF=25,
185-
FFF_LAPACK_DPOTRF=26,
186-
FFF_LAPACK_DPOTRS=27,
187-
FFF_LAPACK_DGESDD=28,
188-
FFF_LAPACK_DGEQRF=29
189-
} fff_external_func_key;
190-
191-
/*
192-
Lapack functions:
193-
dgetrf : LU decomp
194-
dpotrf: Cholesky decomp
195-
dpotrs: solve linear system using Cholesky decomp
196-
dgesdd: SVD decomp
197-
dgeqrf: QR decomp
198-
*/
199-
200-
/* Import function */
201-
extern void fff_import_external_func(void* func_ptr, int k);
202-
203156
/*!
204157
\brief Return the byte length of a given data type
205158
\param type input data type

lib/fff/fff_blas.c

Lines changed: 37 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33

44
#include <math.h>
55

6-
#define FNAME FFF_FNAME
76

87
/* TODO : add tests for dimension compatibility */
98

@@ -19,6 +18,16 @@
1918
#define SWAP_SIDE(Side) ( (Side)==(CblasRight) ? "L" : "R" )
2019

2120

21+
/* Global array of external function pointers */
22+
void* fff_blas_func[25];
23+
24+
/* Import function */
25+
void fff_import_blas_func(void* func_ptr, int k)
26+
{
27+
fff_blas_func[k] = func_ptr;
28+
return;
29+
}
30+
2231

2332
/****** BLAS 1 ******/
2433

@@ -30,7 +39,7 @@ double fff_blas_ddot (const fff_vector * x, const fff_vector * y)
3039
int incy = (int) y->stride;
3140
double (*ddot)(int* n, double* dx, int* incx, double* dy, int* incy);
3241

33-
ddot = FFF_EXTERNAL_FUNC[FFF_BLAS_DDOT];
42+
ddot = fff_blas_func[FFF_BLAS_DDOT];
3443

3544
if ( n != y->size )
3645
return 1;
@@ -45,7 +54,7 @@ double fff_blas_dnrm2 (const fff_vector * x)
4554
int incx = (int) x->stride;
4655
double (*dnrm2)(int* n, double* x, int* incx);
4756

48-
dnrm2 = FFF_EXTERNAL_FUNC[FFF_BLAS_DNRM2];
57+
dnrm2 = fff_blas_func[FFF_BLAS_DNRM2];
4958

5059
return( (*dnrm2)(&n, x->data, &incx) );
5160
}
@@ -57,7 +66,7 @@ double fff_blas_dasum (const fff_vector * x)
5766
int incx = (int) x->stride;
5867
double (*dasum)(int* n, double* dx, int* incx);
5968

60-
dasum = FFF_EXTERNAL_FUNC[FFF_BLAS_DASUM];
69+
dasum = fff_blas_func[FFF_BLAS_DASUM];
6170

6271
return( (*dasum)(&n, x->data, &incx) );
6372
}
@@ -74,7 +83,7 @@ CBLAS_INDEX_t fff_blas_idamax (const fff_vector * x)
7483
int incx = (int) x->stride;
7584
int (*idamax)(int* n, double* dx, int* incx);
7685

77-
idamax = FFF_EXTERNAL_FUNC[FFF_BLAS_IDAMAX];
86+
idamax = fff_blas_func[FFF_BLAS_IDAMAX];
7887

7988
return( (CBLAS_INDEX_t)((*idamax)(&n, x->data, &incx) - 1) );
8089
}
@@ -88,7 +97,7 @@ int fff_blas_dswap (fff_vector * x, fff_vector * y)
8897
int (*dswap)(int* n, double* dx, int* incx,
8998
double* dy, int* incy);
9099

91-
dswap = FFF_EXTERNAL_FUNC[FFF_BLAS_DSWAP];
100+
dswap = fff_blas_func[FFF_BLAS_DSWAP];
92101

93102
if ( n != y->size )
94103
return 1;
@@ -105,7 +114,7 @@ int fff_blas_dcopy (const fff_vector * x, fff_vector * y)
105114
int (*dcopy)(int* n, double* dx, int* incx,
106115
double* dy, int* incy);
107116

108-
dcopy = FFF_EXTERNAL_FUNC[FFF_BLAS_DCOPY];
117+
dcopy = fff_blas_func[FFF_BLAS_DCOPY];
109118

110119
if ( n != y->size )
111120
return 1;
@@ -125,7 +134,7 @@ int fff_blas_daxpy (double alpha, const fff_vector * x, fff_vector * y)
125134
if ( n != y->size )
126135
return 1;
127136

128-
daxpy = FFF_EXTERNAL_FUNC[FFF_BLAS_DAXPY];
137+
daxpy = fff_blas_func[FFF_BLAS_DAXPY];
129138

130139
return( (*daxpy)(&n, &alpha, x->data, &incx, y->data, &incy) );
131140
}
@@ -138,7 +147,7 @@ int fff_blas_dscal (double alpha, fff_vector * x)
138147
int (*dscal)(int* n, double* da, double* dx,
139148
int* incx);
140149

141-
dscal = FFF_EXTERNAL_FUNC[FFF_BLAS_DSCAL];
150+
dscal = fff_blas_func[FFF_BLAS_DSCAL];
142151

143152
return( (*dscal)(&n, &alpha, x->data, &incx) );
144153
}
@@ -156,7 +165,7 @@ int fff_blas_drotg (double a[], double b[], double c[], double s[])
156165
int (*drotg)(double* da, double* db, double* c__,
157166
double* s);
158167

159-
drotg = FFF_EXTERNAL_FUNC[FFF_BLAS_DROTG];
168+
drotg = fff_blas_func[FFF_BLAS_DROTG];
160169

161170
return( (*drotg)(a, b, c, s) );
162171
}
@@ -170,7 +179,7 @@ int fff_blas_drot (fff_vector * x, fff_vector * y, double c, double s)
170179
int (*drot)(int* n, double* dx, int* incx,
171180
double* dy, int* incy, double* c__, double* s);
172181

173-
drot = FFF_EXTERNAL_FUNC[FFF_BLAS_DROT];
182+
drot = fff_blas_func[FFF_BLAS_DROT];
174183

175184
if ( n != y->size )
176185
return 1;
@@ -186,7 +195,7 @@ int fff_blas_drotmg (double d1[], double d2[], double b1[], double b2, double P[
186195
int (*drotmg)(double* dd1, double* dd2, double*
187196
dx1, double* dy1, double* dparam);
188197

189-
drotmg = FFF_EXTERNAL_FUNC[FFF_BLAS_DROTMG];
198+
drotmg = fff_blas_func[FFF_BLAS_DROTMG];
190199

191200
return( (*drotmg)(d1, d2, b1, &b2, P) );
192201
}
@@ -201,7 +210,7 @@ int fff_blas_drotm (fff_vector * x, fff_vector * y, const double P[])
201210
int (*drotm)(int* n, double* dx, int* incx,
202211
double* dy, int* incy, double* dparam);
203212

204-
drotm = FFF_EXTERNAL_FUNC[FFF_BLAS_DROTM];
213+
drotm = fff_blas_func[FFF_BLAS_DROTM];
205214

206215
if ( n != y->size )
207216
return 1;
@@ -230,7 +239,7 @@ int fff_blas_dgemv (CBLAS_TRANSPOSE_t TransA, double alpha,
230239
alpha, double* a, int* lda, double* x, int* incx,
231240
double* beta, double* y, int* incy);
232241

233-
dgemv = FFF_EXTERNAL_FUNC[FFF_BLAS_DGEMV];
242+
dgemv = fff_blas_func[FFF_BLAS_DGEMV];
234243

235244
return( (*dgemv)(trans, &m, &n,
236245
&alpha,
@@ -261,7 +270,7 @@ int fff_blas_dtrmv (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Di
261270
int (*dtrmv)(char *uplo, char *trans, char *diag, int* n,
262271
double* a, int* lda, double* x, int* incx);
263272

264-
dtrmv = FFF_EXTERNAL_FUNC[FFF_BLAS_DTRMV];
273+
dtrmv = fff_blas_func[FFF_BLAS_DTRMV];
265274

266275
return( (*dtrmv)(uplo, trans, diag, &n,
267276
A->data, &lda,
@@ -289,7 +298,7 @@ int fff_blas_dtrsv (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Di
289298
int (*dtrsv)(char *uplo, char *trans, char *diag, int* n,
290299
double* a, int* lda, double* x, int* incx);
291300

292-
dtrsv = FFF_EXTERNAL_FUNC[FFF_BLAS_DTRSV];
301+
dtrsv = fff_blas_func[FFF_BLAS_DTRSV];
293302

294303
return( (*dtrsv)(uplo, trans, diag, &n,
295304
A->data, &lda,
@@ -316,7 +325,7 @@ int fff_blas_dsymv (CBLAS_UPLO_t Uplo,
316325
double* a, int* lda, double* x, int* incx, double
317326
*beta, double* y, int* incy);
318327

319-
dsymv = FFF_EXTERNAL_FUNC[FFF_BLAS_DSYMV];
328+
dsymv = fff_blas_func[FFF_BLAS_DSYMV];
320329

321330
return( (*dsymv)(uplo, &n,
322331
&alpha,
@@ -339,7 +348,7 @@ int fff_blas_dger (double alpha, const fff_vector * x, const fff_vector * y, fff
339348
double* x, int* incx, double* y, int* incy,
340349
double* a, int* lda);
341350

342-
dger = FFF_EXTERNAL_FUNC[FFF_BLAS_DGER];
351+
dger = fff_blas_func[FFF_BLAS_DGER];
343352

344353
return( (*dger)(&m, &n,
345354
&alpha,
@@ -364,7 +373,7 @@ int fff_blas_dsyr (CBLAS_UPLO_t Uplo, double alpha, const fff_vector * x, fff_ma
364373
int (*dsyr)(char *uplo, int* n, double* alpha,
365374
double* x, int* incx, double* a, int* lda);
366375

367-
dsyr = FFF_EXTERNAL_FUNC[FFF_BLAS_DSYR];
376+
dsyr = fff_blas_func[FFF_BLAS_DSYR];
368377

369378
return( (*dsyr)(uplo, &n,
370379
&alpha,
@@ -392,7 +401,7 @@ int fff_blas_dsyr2 (CBLAS_UPLO_t Uplo, double alpha,
392401
double* x, int* incx, double* y, int* incy,
393402
double* a, int* lda);
394403

395-
dsyr2 = FFF_EXTERNAL_FUNC[FFF_BLAS_DSYR2];
404+
dsyr2 = fff_blas_func[FFF_BLAS_DSYR2];
396405

397406
return( (*dsyr2)(uplo, &n,
398407
&alpha,
@@ -435,7 +444,7 @@ int fff_blas_dgemm (CBLAS_TRANSPOSE_t TransA, CBLAS_TRANSPOSE_t TransB,
435444
double* b, int* ldb, double* beta, double* c__,
436445
int* ldc);
437446

438-
dgemm = FFF_EXTERNAL_FUNC[FFF_BLAS_DGEMM];
447+
dgemm = fff_blas_func[FFF_BLAS_DGEMM];
439448

440449
return( (*dgemm)(transb, transa, &m, &n, &k, &alpha,
441450
B->data, &ldb,
@@ -465,7 +474,7 @@ int fff_blas_dsymm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo,
465474
double* alpha, double* a, int* lda, double* b,
466475
int* ldb, double* beta, double* c__, int* ldc);
467476

468-
dsymm = FFF_EXTERNAL_FUNC[FFF_BLAS_DSYMM];
477+
dsymm = fff_blas_func[FFF_BLAS_DSYMM];
469478

470479
return ( (*dsymm)(side, uplo, &m, &n,
471480
&alpha,
@@ -500,7 +509,7 @@ int fff_blas_dtrmm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Tran
500509
int* m, int* n, double* alpha, double* a, int*
501510
lda, double* b, int* ldb);
502511

503-
dtrmm = FFF_EXTERNAL_FUNC[FFF_BLAS_DTRMM];
512+
dtrmm = fff_blas_func[FFF_BLAS_DTRMM];
504513

505514
return( (*dtrmm)(side, uplo, transa, diag, &m, &n,
506515
&alpha,
@@ -535,7 +544,7 @@ int fff_blas_dtrsm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Tran
535544
int* m, int* n, double* alpha, double* a, int*
536545
lda, double* b, int* ldb);
537546

538-
dtrsm = FFF_EXTERNAL_FUNC[FFF_BLAS_DTRSM];
547+
dtrsm = fff_blas_func[FFF_BLAS_DTRSM];
539548

540549
return( (*dtrsm)(side, uplo, transa, diag, &m, &n,
541550
&alpha,
@@ -565,7 +574,7 @@ int fff_blas_dsyrk (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans,
565574
double* alpha, double* a, int* lda, double* beta,
566575
double* c__, int* ldc);
567576

568-
dsyrk = FFF_EXTERNAL_FUNC[FFF_BLAS_DSYRK];
577+
dsyrk = fff_blas_func[FFF_BLAS_DSYRK];
569578

570579
return( (*dsyrk)(uplo, trans, &n, &k,
571580
&alpha,
@@ -597,7 +606,7 @@ int fff_blas_dsyr2k (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans,
597606
double* alpha, double* a, int* lda, double* b,
598607
int* ldb, double* beta, double* c__, int* ldc);
599608

600-
dsyr2k = FFF_EXTERNAL_FUNC[FFF_BLAS_DSYR2K];
609+
dsyr2k = fff_blas_func[FFF_BLAS_DSYR2K];
601610

602611
return( (*dsyr2k)(uplo, trans, &n, &k,
603612
&alpha,
@@ -606,3 +615,5 @@ int fff_blas_dsyr2k (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans,
606615
&beta,
607616
C->data, &ldc) );
608617
}
618+
619+

lib/fff/fff_blas.h

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,35 @@ extern "C" {
2626
typedef enum {CblasNonUnit=131, CblasUnit=132} CBLAS_DIAG_t;
2727
typedef enum {CblasLeft=141, CblasRight=142} CBLAS_SIDE_t;
2828

29+
typedef enum {
30+
FFF_BLAS_DDOT=0,
31+
FFF_BLAS_DNRM2=1,
32+
FFF_BLAS_DASUM=2,
33+
FFF_BLAS_IDAMAX=3,
34+
FFF_BLAS_DSWAP=4,
35+
FFF_BLAS_DCOPY=5,
36+
FFF_BLAS_DAXPY=6,
37+
FFF_BLAS_DSCAL=7,
38+
FFF_BLAS_DROT=8,
39+
FFF_BLAS_DROTG=9,
40+
FFF_BLAS_DROTMG=10,
41+
FFF_BLAS_DROTM=11,
42+
FFF_BLAS_DGEMV=12,
43+
FFF_BLAS_DTRMV=13,
44+
FFF_BLAS_DTRSV=14,
45+
FFF_BLAS_DSYMV=15,
46+
FFF_BLAS_DGER=16,
47+
FFF_BLAS_DSYR=17,
48+
FFF_BLAS_DSYR2=18,
49+
FFF_BLAS_DGEMM=19,
50+
FFF_BLAS_DSYMM=20,
51+
FFF_BLAS_DTRMM=21,
52+
FFF_BLAS_DTRSM=22,
53+
FFF_BLAS_DSYRK=23,
54+
FFF_BLAS_DSYR2K=24
55+
} fff_blas_func_key;
56+
57+
2958
/* Import function */
3059
extern void fff_blas_import_func(void* func_ptr, int k);
3160

0 commit comments

Comments
 (0)