Ignore:
Timestamp:
Jan 14, 2010, 4:23:22 AM (14 years ago)
Author:
(none)
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • proiecte/PPPP/eigenface2/eigenface_p.c

    r132 r133  
    2525        z = (float *) malloc(n * sizeof(float));
    2626       
    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
    4442        for (ip=0;ip<n;ip++) {                                                                  // Initialize to the identity matrix.
    4543                for (iq=0;iq<n;iq++) v[ip*n + iq]=0.0;
    4644                        v[ip*n + ip]=1.0;
    4745        }
    48         #pragma omp parallel for
     46        //#pragma omp parallel for
    4947        for (ip=0;ip<n;ip++) {                                                          // Initialize b and d to the diagonal of a.
    5048                b[ip]=d[ip]=a[ip*n + ip];                                                                                                               
    5149                z[ip]=0.0;                                                                              // This vector will accumulate terms of the form t*a[pq] as in equation (11.1.14).
    5250        }
    53         }       
     51               
    5452        *nrot=0;
    5553        for (i=1;i<=50;i++) {
    5654                sm=0.0;
    57         #pragma omp parallel for reduction(+:sm)
     55        //#pragma omp parallel for reduction(+:sm)
    5856                for (ip=0;ip<n-1;ip++) {                                                        // Sum off-diagonal elements.
    5957                        for (iq=ip+1;iq<n;iq++)
     
    9593                                        a[ip*n + iq]=0.0;
    9694                                       
    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                                                }
    100115                                        }
    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                                       
    110117                                        for (j=0;j<n;j++) {
    111118                                                ROTATE(v,j,ip,j,iq)
    112119                                        }
    113                                        
    114120                                        ++(*nrot);
    115121                                }
     
    117123                }
    118124               
    119                 #pragma omp parallel for
     125                //#pragma omp parallel for
    120126                for (ip=0;ip<n;ip++) {
    121127                        b[ip] += z[ip];
     
    157163        float* bf = avg;
    158164       
    159         #pragma omp parallel for
    160165        for( i = 0; i < size.height; i++, bf += avgStep)
     166                //#pragma omp parallel for
    161167                for( j = 0; j < size.width; j++ )
    162168                        bf[j] = 0.f;
    163169       
    164         #pragma omp parallel for
     170        //#pragma omp parallel for
    165171        for( i = 0; i < nFaces; i++ )
    166172        {
     
    174180        bf = avg;
    175181        for( i = 0; i < size.height; i++, bf += avgStep)
    176                 #pragma omp parallel for
     182                //#pragma omp parallel for
    177183                for( j = 0; j < size.width; j++ ) {
    178184                        bf[j] *= m;
     
    197203                        uchar *bu2 = faceArr[j];
    198204
    199                         #pragma omp parallel for
    200205                        for( k = 0; k < size.height;
    201206                             k++, bu1 += faceStep, bu2 += faceStep, a += avgStep )
    202207                        {
     208                                //#pragma omp parallel for
    203209                                for( l = 0; l < size.width - 3; l += 4 )
    204210                                {
     
    221227                                        w += (u1 - f) * (u2 - f);
    222228                                }
     229                               
    223230                                for( ; l < size.width; l++ )
    224231                                {
     
    300307        cvCalcCovarMatrixEx( nFaces,  facesArr, 0, 0, NULL, NULL, avg, covarMat );
    301308       
    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");
    312319       
    313320        ev = (float *) cvAlloc( sizeof( float ) * nFaces * nFaces );
     
    318325        //JacobiEigens_32f(covarMat, ev, eigVals, nFaces, 0);
    319326               
    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 for
     327        //~ 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
    336343        for( i = 0; i < iter; i++ )
    337344                eigVals[i] = (float) (1.0 / sqrt( (double)eigVals[i] ));
    338345       
    339346        for( i = 0; i < iter; i++ )
    340     {
     347        {
    341348                float *be = eigs[i];
    342349
    343                 #pragma omp parallel for
    344                 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 ) {
    345352                        for( l = 0; l < size.width; l++ )
    346353                                be[l] = 0.0f;
    347     }
     354                }
     355        }
    348356
    349357    for( k = 0; k < nFaces; k++ )
     
    360368                        float *bf = avg_data;
    361369
    362                         #pragma omp parallel for
    363370                        for( p = 0; p < size.height; p++, bu += face_step,
    364371                                bf += avg_step, be += avg_step )
    365372                        {
     373                                //#pragma omp parallel for
    366374                                for( l = 0; l < size.width - 3; l += 4 )
    367375                                {
     
    386394        }
    387395       
    388         #pragma omp parallel for
     396        //#pragma omp parallel for
    389397        for( i = 0; i < iter; i++ )
    390398                eigVals[i] = 1.f / (eigVals[i] * eigVals[i]);
Note: See TracChangeset for help on using the changeset viewer.