4 Replies Latest reply on Feb 17, 2011 2:52 PM by Hayder

    Communication model

    Hayder
      Hello,
      I am new in the SCC, and I have questions about communication between the cores.
      1. Can a core execute more than one send and receive operations (message) simultaneously?
      2. Can a core identify the signal from another sender, while it receiving data from an original sender? if yes How?
      Thanks
      Hayder Al-Khalissi
      TU-Braunschweig
        • 1. Re: Communication model
          tedk

          What I see people doing is running a SPMD model ... the same program running on the cores. RCCE_send() is a blocking call, so you issue one at a time. RCCE_recv() is also a blocking call. It returns when the message arrives. You can use RCCE_recv_test() instead of RCCE_recv(). RCCE_recv_test() returns right away. It has an additional parameter that becomes 1 when the message arrives.

           

          I'm not sure what you mean by while receiving. I see people running one process on a core. You specify the core from which you want to receive in the recv call.

           

          Here's the output form a very simple test program. I attached the program.

          tekubasx@marc101:/shared/tekubasx/NCM$ rccerun -nue 3 -f rc.hosts hello
          pssh -h PSSH_HOST_FILE.2447 -t -1 -p 3 /shared/tekubasx/NCM/mpb.2447 < /dev/null
          [1] 16:45:15 [SUCCESS] rck00
          [2] 16:45:15 [SUCCESS] rck01
          [3] 16:45:15 [SUCCESS] rck02
          pssh -h PSSH_HOST_FILE.2447 -t -1 -P -p 3 /shared/tekubasx/NCM/hello 3 0.533 00 01 02 < /dev/null
          rck00: Core 0: hello from RCCE ... I am 1.0.13.x
          rck01: Core 1: hello from RCCE ... I am 1.0.13.x
          Core 1: Hello from Core 0

           

          Core 1: Hello from Core 2

           

          rck02: Core 2: hello from RCCE ... I am 1.0.13.x
          [1] 16:46:17 [SUCCESS] rck00
          [2] 16:46:17 [SUCCESS] rck01
          [3] 16:46:17 [SUCCESS] rck02
          tekubasx@marc101:/shared/tekubasx/NCM$

          1 of 1 people found this helpful
          • 2. Re: Communication model
            Hayder
            Hi Ted,
            Thanks for your reply.  I will explain (while it receiving).
            If core_0 send message to core_2, and core_1 want to send message to core_2 at the same time or during a core_2 received message from core_0,  can a core_2 take a signal from the secondary sender (core_1)?
            Hayder
            • 3. Re: Communication model
              tedk

              As an example you have cores 0 and 1 sending mesages to core 2. What does core 2 do?

               

              Receives are blocking. So if core 2 does a blocking receive on a message form Core 0, it's blocked until that message arrives. If instead you want to service the message from core 2, you can use use RCE_recv_test(). These are non-blocking receives. What they do is set a supplied variable to 1 when the message is ready.

               

              This seems pretty basic. Is there an aspect to your question that I'm missing?

              1 of 1 people found this helpful
              • 4. Re: Communication model
                Hayder

                Thank you very much. I have understood that.

                The collective communication requires communication schedule, don't it?