omp for gradients_X

This commit is contained in:
James Hensman 2015-05-14 17:40:10 +01:00
parent dde8e4136e
commit 9750f79245

View file

@ -1,19 +1,20 @@
void _grad_X(int N, int D, int M, double* X, double* X2, double* tmp, double* grad){ void _grad_X(int N, int D, int M, double* X, double* X2, double* tmp, double* grad){
int n,m,d;
double retnd; double retnd;
//#pragma omp parallel for private(n,d, retnd, m) int n,d,nd,m;
for(d=0;d<D;d++){ #pragma omp parallel for private(nd,n,d, retnd, m)
for(n=0;n<N;n++){ for(nd=0;nd<(D*N);nd++){
retnd = 0.0; n = nd/D;
for(m=0;m<M;m++){ d = nd%D;
retnd += tmp[n*M+m]*(X[n*D+d]-X2[m*D+d]); retnd = 0.0;
} for(m=0;m<M;m++){
grad[n*D+d] = retnd; retnd += tmp[n*M+m]*(X[nd]-X2[m*D+d]);
} }
grad[nd] = retnd;
} }
} //grad_X } //grad_X
void _lengthscale_grads(int N, int M, int Q, double* tmp, double* X, double* X2, double* grad){ void _lengthscale_grads(int N, int M, int Q, double* tmp, double* X, double* X2, double* grad){
int n,m,q; int n,m,q;
double gradq, dist; double gradq, dist;