Changeset 133 for proiecte/PPPP/eigenface2/eigenface_p.c
- Timestamp:
- Jan 14, 2010, 4:23:22 AM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
proiecte/PPPP/eigenface2/eigenface_p.c
r132 r133 25 25 z = (float *) malloc(n * sizeof(float)); 26 26 27 /* Fork a team of threads giving them their own copies of variables */ 28 #pragma omp parallel private(nthreads, tid, i, j, ip, iq) shared(tresh, theta, tau, sm, s, h, g, c, b, z, a, n, d, v, nrot) 29 { 30 31 /* Obtain thread number */ 32 tid = omp_get_thread_num(); 33 printf("Hello World from thread = %d\n", tid); 34 35 /* Only master thread does this */ 36 if (tid == 0) 37 { 38 nthreads = omp_get_num_threads(); 39 printf("Number of threads = %d\n", nthreads); 40 } 41 42 43 #pragma omp parallel for 27 //~ #pragma omp parallel private(nthreads, tid) 28 //~ { 29 30 //~ /* Obtain thread number */ 31 //~ tid = omp_get_thread_num(); 32 //~ printf("Hello World from thread = %d\n", tid); 33 34 //~ /* Only master thread does this */ 35 //~ if (tid == 0) 36 //~ { 37 //~ nthreads = omp_get_num_threads(); 38 //~ printf("Number of threads = %d\n", nthreads); 39 //~ }} 40 41 //#pragma omp parallel for 44 42 for (ip=0;ip<n;ip++) { // Initialize to the identity matrix. 45 43 for (iq=0;iq<n;iq++) v[ip*n + iq]=0.0; 46 44 v[ip*n + ip]=1.0; 47 45 } 48 #pragma omp parallel for46 //#pragma omp parallel for 49 47 for (ip=0;ip<n;ip++) { // Initialize b and d to the diagonal of a. 50 48 b[ip]=d[ip]=a[ip*n + ip]; 51 49 z[ip]=0.0; // This vector will accumulate terms of the form t*a[pq] as in equation (11.1.14). 52 50 } 53 }51 54 52 *nrot=0; 55 53 for (i=1;i<=50;i++) { 56 54 sm=0.0; 57 #pragma omp parallel for reduction(+:sm)55 //#pragma omp parallel for reduction(+:sm) 58 56 for (ip=0;ip<n-1;ip++) { // Sum off-diagonal elements. 59 57 for (iq=ip+1;iq<n;iq++) … … 95 93 a[ip*n + iq]=0.0; 96 94 97 #pragma omp parallel for 98 for (j=0;j<=ip-1;j++) { // Case of rotations 1 <= j < p. 99 ROTATE(a,j,ip,j,iq) 95 #pragma omp parallel shared(a,ip,iq, s, tau) private(j) 96 { 97 #pragma omp sections nowait 98 { 99 100 #pragma omp section 101 //#pragma omp parallel for 102 for (j=0;j<=ip-1;j++) { // Case of rotations 1 <= j < p. 103 ROTATE(a,j,ip,j,iq) 104 } 105 106 #pragma omp section 107 for (j=ip+1;j<=iq-1;j++) { // Case of rotations p < j < q. 108 ROTATE(a,ip,j,j,iq) 109 } 110 #pragma omp section 111 for (j=iq+1;j<n;j++) { // Case of rotations q < j <= n. 112 ROTATE(a,ip,j,iq,j) 113 } 114 } 100 115 } 101 #pragma omp parallel for 102 for (j=ip+1;j<=iq-1;j++) { // Case of rotations p < j < q. 103 ROTATE(a,ip,j,j,iq) 104 } 105 #pragma omp parallel for 106 for (j=iq+1;j<n;j++) { // Case of rotations q < j <= n. 107 ROTATE(a,ip,j,iq,j) 108 } 109 #pragma omp parallel for 116 110 117 for (j=0;j<n;j++) { 111 118 ROTATE(v,j,ip,j,iq) 112 119 } 113 114 120 ++(*nrot); 115 121 } … … 117 123 } 118 124 119 #pragma omp parallel for125 //#pragma omp parallel for 120 126 for (ip=0;ip<n;ip++) { 121 127 b[ip] += z[ip]; … … 157 163 float* bf = avg; 158 164 159 #pragma omp parallel for160 165 for( i = 0; i < size.height; i++, bf += avgStep) 166 //#pragma omp parallel for 161 167 for( j = 0; j < size.width; j++ ) 162 168 bf[j] = 0.f; 163 169 164 #pragma omp parallel for170 //#pragma omp parallel for 165 171 for( i = 0; i < nFaces; i++ ) 166 172 { … … 174 180 bf = avg; 175 181 for( i = 0; i < size.height; i++, bf += avgStep) 176 #pragma omp parallel for182 //#pragma omp parallel for 177 183 for( j = 0; j < size.width; j++ ) { 178 184 bf[j] *= m; … … 197 203 uchar *bu2 = faceArr[j]; 198 204 199 #pragma omp parallel for200 205 for( k = 0; k < size.height; 201 206 k++, bu1 += faceStep, bu2 += faceStep, a += avgStep ) 202 207 { 208 //#pragma omp parallel for 203 209 for( l = 0; l < size.width - 3; l += 4 ) 204 210 { … … 221 227 w += (u1 - f) * (u2 - f); 222 228 } 229 223 230 for( ; l < size.width; l++ ) 224 231 { … … 300 307 cvCalcCovarMatrixEx( nFaces, facesArr, 0, 0, NULL, NULL, avg, covarMat ); 301 308 302 printf("\n");303 for ( i = 0; i < nFaces; i++ )304 {305 for ( j = 0; j < nFaces; j++ )306 {307 printf("%f ", covarMat[i*nFaces+j]);308 }309 printf("\n");310 }311 printf("\n");309 //~ printf("\n"); 310 //~ for ( i = 0; i < nFaces; i++ ) 311 //~ { 312 //~ for ( j = 0; j < nFaces; j++ ) 313 //~ { 314 //~ printf("%f ", covarMat[i*nFaces+j]); 315 //~ } 316 //~ printf("\n"); 317 //~ } 318 //~ printf("\n"); 312 319 313 320 ev = (float *) cvAlloc( sizeof( float ) * nFaces * nFaces ); … … 318 325 //JacobiEigens_32f(covarMat, ev, eigVals, nFaces, 0); 319 326 320 for ( j = 0; j < nFaces; j++ )321 {322 printf("%f ", eigVals[j]);323 }324 printf("\n\n");325 326 for ( i = 0; i < nFaces; i++ )327 {328 for ( j = 0; j < nFaces; j++ )329 {330 printf("%f ", ev[i*nFaces+j]);331 }332 printf("\n");333 }334 335 #pragma omp parallel for327 //~ for ( j = 0; j < nFaces; j++ ) 328 //~ { 329 //~ printf("%f ", eigVals[j]); 330 //~ } 331 //~ printf("\n\n"); 332 333 //~ for ( i = 0; i < nFaces; i++ ) 334 //~ { 335 //~ for ( j = 0; j < nFaces; j++ ) 336 //~ { 337 //~ printf("%f ", ev[i*nFaces+j]); 338 //~ } 339 //~ printf("\n"); 340 //~ } 341 342 //#pragma omp parallel for 336 343 for( i = 0; i < iter; i++ ) 337 344 eigVals[i] = (float) (1.0 / sqrt( (double)eigVals[i] )); 338 345 339 346 for( i = 0; i < iter; i++ ) 340 347 { 341 348 float *be = eigs[i]; 342 349 343 #pragma omp parallel for344 for( k = 0; k < size.height; k++, be += avg_step ) 350 //#pragma omp parallel for 351 for( k = 0; k < size.height; k++, be += avg_step ) { 345 352 for( l = 0; l < size.width; l++ ) 346 353 be[l] = 0.0f; 347 } 354 } 355 } 348 356 349 357 for( k = 0; k < nFaces; k++ ) … … 360 368 float *bf = avg_data; 361 369 362 #pragma omp parallel for363 370 for( p = 0; p < size.height; p++, bu += face_step, 364 371 bf += avg_step, be += avg_step ) 365 372 { 373 //#pragma omp parallel for 366 374 for( l = 0; l < size.width - 3; l += 4 ) 367 375 { … … 386 394 } 387 395 388 #pragma omp parallel for396 //#pragma omp parallel for 389 397 for( i = 0; i < iter; i++ ) 390 398 eigVals[i] = 1.f / (eigVals[i] * eigVals[i]);
Note: See TracChangeset
for help on using the changeset viewer.