Re: [Myrinet] A problem with GM/MCP event-driven mechanism!
Vijay Lakamraju <[email protected]>
| Newsgroups | gmane.network.myrinet.general |
|---|---|
| Message-ID | <[email protected]> |
> 1.If the SDMA engine enqueues a send for the SEND engine, The L_send__start_sending_chunk_0/1
> runs continuesly using the following code:
> smp = gm.send_chunk[LZERO].smp;
> #if GM_ENABLE_CRC32
> smh = gm.send_chunk[LZERO].smh;
> #endif
> sml = gm.send_chunk[LZERO].smlt;
> It seems that the SDMA just stores the send mesg in send_chunk[0]/[1] and sets the
> smp/smlt,but it doesn't clear the gm.send_chunk[LZERO].smp/smlt. Then the mesg stored
> in send_chunk[0]/[1] are send each time L_send__start_sending_chunk called (that is,the sml
> is set) ? It seems impossible, but what's the problem ?
>
Take a look at the way part of the gm_event_index table is set up.
/* send events */
if (i & SEND_INT_BIT && i & SENDING)
{
GM_SET_EVENT_INDEX_FOR_STATE (FINISH_SEND_EVENT, i);
continue;
}
This would mean that after the L_send__start_sending_chunk event is
called, the corresponding L_send__finish_sending_chunk event is
called. And in L_send__finish_sending_chunk(), the two line of code
NOTICE_NOT (SENDING);
NOTICE (FREE_SEND_CHUNK);
ensure that L_send__start_sending_chunk_0/1() is NOT called without
the send chunk's smp/smlt being initialized properly.
> 2. It's said that when the GM_STATE is set using NOTICE_NO(SEND_PENDING), the START_SEND_EVENT
> cann't happen, and so the L_send__start_sending_chunk_0/1 couldn't be called.
> But in our program, after the GM_STATE is set using NOTICE_NO(SEND_PENDING) when the ACK
> mesg is received, the START_SEND_EVENT still happens and L_send__start_sending_chunk_0/1
> still called. Then what's the problem ?
>
Have you traced the various events that are called after the
NOTICE_NO(SEND_PENDING) is executed? I believe there might a event
being called which toggles back the SEND_PENDING bit with
TOGGLE_STATE (gm_free_send_chunk_cnt * SEND_PENDING);
hope that helps,
Vijay
--
Architecture & Real-time Systems (ARTS) Lab,
310 Knowles Engineering Bldg,
UMass Amherst 01003
Tel: (413)-545-0715 (O)
Fax: (413)-545-1993