Skip to Content.
Sympa Menu

charm - Re: [charm] Charm++ runtime problem

charm AT lists.cs.illinois.edu

Subject: Charm++ parallel programming system

List archive

Re: [charm] Charm++ runtime problem


Chronological Thread 
  • From: Haowei Huang <huangh AT in.tum.de>
  • To: gzheng AT illinois.edu
  • Cc: charm AT cs.illinois.edu
  • Subject: Re: [charm] Charm++ runtime problem
  • Date: Sun, 1 Aug 2010 21:16:15 +0200
  • List-archive: <http://lists.cs.uiuc.edu/pipermail/charm>
  • List-id: CHARM parallel programming system <charm.cs.uiuc.edu>

 
   Thanks a lot. But if multiple A array elements want to access multiple elements in the other B array at the same through parameter marshalling, are there any requirement for the attributes of entry method of A array and B array? I met runtime error when each element of A wants to access different elements of B only once at the same time. It seems that this kind of operation is not thread safe. How can we guarantee the atomicity of each point to point communication between chares?

2010/8/1 Gengbin Zheng <zhenggb AT gmail.com>

In Charm++, after you send a message, you can not reuse that buffer. Charm++ runtime will free the send message.
Here, your messageToB points to "local information". Charm++ runtime owns messageToB after you call getValue, and it will free that buffer when send completes. You need to create a new messageToB message every time when sending it.

Gengbin

On Sun, Aug 1, 2010 at 9:10 AM, Haowei Huang <huangh AT in.tum.de> wrote:
Hi phil,

     I want to create a point-to-point communication between two chares each of which is an element of a chare array. For example,
     chare A {
         ....
         void requestMsg{
              messageToB = local information;
              arrayB[i].getValue(Msg1*messageToB);
         }
        
         void comsumingMsg(Msg2*msgFromB){
          
             //dealing with msgFromB;
      
         }
     }

     chare B {
          
          void getValue(Msg1*message){

                arrayA[j].comsumingMsg(Msg2*messageToA);

         }
    }

     However, I always get such runtime error "Reason: Message being re-sent. Aborting... "  Do you have any idea about it? As far as I know ,this is one of four ways to create point-to-point with return value. How does Charm++ guarantee this communication happens atomically except for using [sync] entry methods? Thank you so much.

--
Haowei Huang
Ph.D. student
Technische Universitaet Muenchen
Institut fuer Informatik, I10
Boltzmannstr. 3
D-85748 Garching
Room 01.06.061
Phone: +49 (89) 289 18477
mailto: huangh AT in.tum.de

_______________________________________________
charm mailing list
charm AT cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/charm







--
Haowei Huang
Ph.D. student
Technische Universitaet Muenchen
Institut fuer Informatik, I10
Boltzmannstr. 3
D-85748 Garching
Room 01.06.061
Phone: +49 (89) 289 18477
mailto: huangh AT in.tum.de



Archive powered by MHonArc 2.6.16.

Top of Page