On Tuesday, September 07, 2010, Igor Peshansky wrote:
> If you do not get the C++ line numbers in the trace, you can also run your
> program under gdb and set a breakpoint in
> 'x10aux::throwException(x10aux::ref<x10::lang::Throwable>)'.  When you hit
> this breakpoint, go up a frame and you should end up on the C++ line that
> caused the exception to be thrown.  Again, the "//#line" comment above 
> that
> C++ line should point you to the corresponding X10 source line.

Igor,

following your suggestion above, I was able to pin the exception down to the 
following single X10 statement.


                finish ateach (pt in v_src ) {
                   /* ... some lines left out ... */
                    /**
                     *  Scatter the vector v
                     */
                    v_src(pt).copyFrom(j_min(pt),
                                        v,j_min(pt),j_len(pt));
                   /* ... some more lines left out ... */
                }

In this code snippet, we have the following data types.

        static type Array1D = Array[Double]{rank==1}; 
        var v: Array1D;
        global val v_src: DistArray[Array1D]{rank==1};
        
        /**
         * v_src is generated from v by scattering
         * the data across the MPI tasks. The following
         * two distributed arrays describe which parts
         * of v get where.
         */
         global val j_min: DistArray[Int]{rank==1};
         global val j_len: DistArray[Int]{rank==1};

All objects of class DistArray are build on the same distribution.
                val Dv_tmp:Dist = Dist.makeUnique(D.places());

Do you see what is wrong with this copyFrom() ? Actually, the exception is 
thrown only when run on more than one place, and it is thrown when the place 
v_src.dist()(pt) is not v.home(). It somehow smells like a placement error of 
some sort.

BTW, I was using the following statement to start the gdb debugger.

mpiexec -np 2 ddd ./matmul

This gave me a GUI for each MPI task. Do you know whether the PTP parallel 
debugger could be used for this as well ? At least for debugging the C++ code. 
It is also based on gdb, as far as I know.

-- 

Mit freundlichen Grüßen / Kind regards

Dr. Christoph Pospiech
High Performance & Parallel Computing
Phone:  +49-351 86269826
Mobile: +49-171-765 5871
E-Mail: christoph.pospi...@de.ibm.com
-------------------------------------
IBM Deutschland GmbH
Vorsitzender des Aufsichtsrats: Erich Clementi 
Geschäftsführung: Martin Jetter (Vorsitzender), 
Reinhard Reschke, Christoph Grandpierre, 
Klaus Lintelmann, Michael Diemer, Martina Koederitz 
Sitz der Gesellschaft: Ehningen / Registergericht: Amtsgericht Stuttgart, HRB 
14562 WEEE-Reg.-Nr. DE 99369940


------------------------------------------------------------------------------
This SF.net Dev2Dev email is sponsored by:

Show off your parallel programming skills.
Enter the Intel(R) Threading Challenge 2010.
http://p.sf.net/sfu/intel-thread-sfd
_______________________________________________
X10-users mailing list
X10-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/x10-users

Reply via email to