aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--R/lossdistrib.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/R/lossdistrib.c b/R/lossdistrib.c
index ecf16abf..96d0a3fb 100644
--- a/R/lossdistrib.c
+++ b/R/lossdistrib.c
@@ -11,6 +11,7 @@ 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);
extern void openblas_set_num_threads(int);
+void omp_set_num_threads(int);
void lossdistrib(double *p, int *np, double *w, double *S, int *N, int *defaultflag, double *q);
@@ -425,8 +426,7 @@ void lossdistrib_prepay_joint(double *dp, double *pp, int *ndp, double *w,
q[0] = 1;
Mx=1;
My=1;
- /* only use one thread, performance is horrible if use multiple threads */
- openblas_set_num_threads(1);
+
for(k=0; k<(*ndp); k++){
y1 = (1-S[k]) * w[k]/lu;
y2 = w[k]/lu;
@@ -515,6 +515,8 @@ void lossdistrib_prepay_joint_blas(double *dp, double *pp, int *ndp, double *w,
q[0] = 1;
Mx=1;
My=1;
+ /* only use one thread, performance is horrible if use multiple threads */
+ openblas_set_num_threads(1);
for(k=0; k<(*ndp); k++){
y1 = (1-S[k]) * w[k]/lu;
y2 = w[k]/lu;
@@ -666,6 +668,7 @@ void lossdistrib_prepay_joint_Z(double *dp, double *pp, int *ndp, double *w,
double beta = 0;
int one = 1;
+ omp_set_num_threads(4);
#pragma omp parallel for private(j)
for(i = 0; i < *nZ; i++){
for(j = 0; j < *ndp; j++){