aboutsummaryrefslogtreecommitdiffstats
path: root/R
diff options
context:
space:
mode:
Diffstat (limited to 'R')
-rw-r--r--R/lossdistrib.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/R/lossdistrib.c b/R/lossdistrib.c
index 2ce51452..77ea335c 100644
--- a/R/lossdistrib.c
+++ b/R/lossdistrib.c
@@ -79,7 +79,7 @@ void lossdistrib_blas(double *p, int *np, double *w, double *S, int *N, int *def
int bound;
double pbar;
int one = 1;
-
+ openblas_set_num_threads(1);
lu = 1./(*N-1);
qtemp = calloc(*N, sizeof(double));
q[0] = 1;
@@ -99,7 +99,6 @@ void lossdistrib_blas(double *p, int *np, double *w, double *S, int *N, int *def
daxpy_(&bound, &p2, qtemp, &one, q+d2, &one);
M += d2;
}
-
/* correction for weight loss */
if(M > *N){
sum = 0;
@@ -116,7 +115,7 @@ void lossdistrib_Z(double *p, int *np, double *w, double *S, int *N, int *defaul
int i, j;
double* pshocked = malloc(sizeof(double) * (*np) * (*nZ));
-#pragma omp parallel for private(j)
+ #pragma omp parallel for private(j)
for(i = 0; i < *nZ; i++){
for(j = 0; j < *np; j++){
pshocked[j + (*np) * i] = shockprob(p[j], rho[j], Z[i], 0);
@@ -261,10 +260,9 @@ 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), sizeof(double));
@@ -475,10 +473,9 @@ 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;
@@ -569,7 +566,7 @@ void shockprobvec2(double p, double rho, double* Z, int nZ, double *q){
/* return a two column vectors with shockprob in the first column
and dshockprob in the second column*/
int i;
-#pragma omp parallel for
+ #pragma omp parallel for
for(i = 0; i < nZ; i++){
q[i] = shockprob(p, rho, Z[i], 0);
q[i + nZ] = dshockprob(p, rho, Z[i]);