diff options
| -rw-r--r-- | R/lossdistrib.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/R/lossdistrib.c b/R/lossdistrib.c index 75929d51..65295147 100644 --- a/R/lossdistrib.c +++ b/R/lossdistrib.c @@ -10,7 +10,9 @@ extern int dgemv_(char* trans, int *m, int *n, double* alpha, double* A, int* ld extern double ddot_(int* n, double* dx, int* incx, double* dy, int* incy);
extern int dscal_(int* n, double* da, double* dx, int* incx);
extern int daxpy_(int* n, double* da, double* dx, int* incx, double* dy, int* incy);
+#ifdef UNIX
extern void openblas_set_num_threads(int);
+#endif
void omp_set_num_threads(int);
void lossdistrib(double *p, int *np, double *w, double *S, int *N, int *defaultflag, double *q);
@@ -308,8 +310,10 @@ void lossdistrib_joint_blas(double *p, int *np, double *w, double *S, int *N, in double *qtemp;
int bound;
int one = 1;
+ #ifdef UNIX
/* only use one thread, performance is horrible if use multiple threads */
openblas_set_num_threads(1);
+ #endif
lu = 1./(*N-1);
qtemp = Calloc( (*N) * (*N), double);
@@ -520,8 +524,10 @@ void lossdistrib_prepay_joint_blas(double *dp, double *pp, int *ndp, double *w, q[0] = 1;
Mx=1;
My=1;
+ #ifdef UNIX
/* only use one thread, performance is horrible if use multiple threads */
openblas_set_num_threads(1);
+ #endif
for(k=0; k<(*ndp); k++){
y1 = (1-S[k]) * w[k]/lu;
y2 = w[k]/lu;
|
