Dear Bill, Dear All,

after using MPIR successfully for some time, I am looking for a faster 
execution of my code and though of a parallel version. Is there a way to do 
it? 

I tried OpenMP by doing the following: In a toy example, I included 
<omp.h>, gcc’ed with "–fopenmp", and along the following non-MPIR code: 

 

                int i, nloops, thread_id=0, N = 1000000;

 

                #pragma omp parallel private(thread_id, nloops)                 
                         


                {                                             

                               nloops=0; 

 

                #pragma omp for            

                               for (i=0; i<N; i++) {

                                               nloops++;                        
   


                               }

                               thread_id = omp_get_thread_num();

                               printf("Thread %d performed %d iterations of 
the loop.\n", thread_id, nloops );

                }

 

which resulted in the output:

Thread 3 performed 250000 iterations of the loop.

Thread 0 performed 250000 iterations of the loop.

Thread 2 performed 250000 iterations of the loop.

Thread 1 performed 250000 iterations of the loop.

 

I then tried an MPIR version:

                int i, nloops, thread_id=0, N = 1000000; 

                mpf_t a, b; mpf_inits(a, b, 0);

 

                #pragma omp parallel private(thread_id, nloops, a, b)           
                      


                {                                             

                                mpf_set_d(a, 0.0);

                               mpf_set_d(b, 1.0);

 

                #pragma omp for            

                               for (i=0; i<N; i++) {

                                                mpf_add(a, a, b);

                               }

                               thread_id = omp_get_thread_num();

                               gmp_printf("Thread %d performed %.*Ff 
iterations of the loop.\n", thread_id, 10, a );

                }

                mpf_clears(a, b, 0);

 

which compiled without errors but resulted in an error (“program … stopped 
working during execution”) at runtime. 

Is it at all possible to run it in parallel with MPIR – and is there a 
mistake in the implementation? 

Tests: It runs through without error if the “mpf_add” inside the “#pragma 
for” loop is erased and b is set not after but before the “#pragma omp 
parallel” statement (but not if the “mpf_add” command is erased and b is 
declared as above).

I am using gcc and MinGW on a 64-bit (2 cores) Windows 7 machine.


Thanks and best regards!

 

-- 
You received this message because you are subscribed to the Google Groups 
"mpir-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/mpir-devel.
For more options, visit https://groups.google.com/d/optout.

Reply via email to