DSPRelated.com
Forums

Re: Problem with multiprocessor system

Started by Steve Holle April 1, 2005
Are you using an ICE? In VDSP++ using our ICE, I was able to daisy-chain
the JTAG debug port and set up a session with multiple processors and it is
them possible to examine the common memory, to start and halt all DSPs
simultaneously. On our system, each processor was assigned a unique number
but otherwise ran identical code independently, except for some shared
data. If you are talking about a true multiprocessing environment, that is
completely out of my area of expertise. Do you have a compiler that will
compile for a multiprocessing environment? I don't know whether VDSP can
create that kind of program or not. If each processor was performing one
part of a calculation on common data it could probably all be performed in
shared memory. Coordination and timing might be interesting.

At 07:52 PM 3/31/2005, harsha sb sb wrote:

>Hi steve,
>
>I am using the multiprocessor system of 3 processor and created one shared
>memory space for all the 3 processor which is in SDRAM(External memory).
>
>I have 10 big global arrays which i have stored in the shared.doj whish is
>in shared memory system. and i have assigned this gloabl arrays as to
>preceeding with pm keyword
>When i load my program the arrays are loaded into all the 3 processors
>PMDA memory section.
>
>My question is can i select the each processors PMDA memory section and
>place 2 gloabl buffers in each pmda section of all the processor and use
>these 6 global buffers as a shared to each processors??
>If i want to assign this whats the i have to do ??
>
>can anybody explain me please..
>
>Thanks
>Harsha S >On Thu, 31 Mar 2005 Steve Holle wrote :
> >
> >To answer your question intelligently we will need some information.
> >1) Are you trying to run 3 independent processors with communications
> >between them?
> >2) How are you loading your code?
> >3) Do you have one code set that loads in all processors?
> >4) How are the processors linked together?
> >5) Are you using shared memory?
> >6) What compiler and IDE are you using?
> >
> >At 03:03 AM 3/31/2005, harsha sb sb wrote:
> >
> >
> > >
> > >Hi all,
> > >
> > >I am using 3 ADSP-21160 processors which are mapped to some board.
> > >
> > >How do i run the code on multiprocessor.?
> > >if i have a 2 for loops which are independent of each other then how can i
> > >tell the both processor to execute each one for loop?
> > >
> > >Please help me in this regrds,
> > >
> > >
> > >Thanks
> > >
> > >Harsha S
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> >
> >Steve Holle
> >Link Communications, Inc.
> >1035 Cerise Rd.
> >Billings, MT 59101
> >sholle@shol...
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> ><http://clients.rediff.com/signature/track_sig.asp>
>[]
>

Steve Holle
Link Communications, Inc.
1035 Cerise Rd.
Billings, MT 59101
sholle@shol...


Hi steve,

Ya its right i can able to do all the things what ever you explained. but problem is like this

If i want execute same code on all the 3 processor then how do i schedule all the 3 processor to execute that code ?

Like what i explained in previous mail ..
i explain here with smal code

for(i=0;i<1000;i++)
{
  for(j=0;j<1000;j++)
  {
    callfunc(i,j);
  }
}

now this code is put in all the 3 processors and i would like to execute this function passing elements like...
Processor  1 should execute the function with parameters i=0,j=0..  processor 2 should execute my callfunc with parameters as i =0,j=1 processor 3 should execute with parametsr as i =0;j=2 , like this now 1 processor execute with next vlue .. so like this can i schedule all the processor is it possible ? if yes can please explain me ..

2. In my code i need to intialize the pointers in the array of structures example below.

struct share{
int *ptr1;
int *ptr2;
int *ptr3;
}share1[1000];

now the
ptr1 points to Internal memory space 0x00054000 of processor p1 and ptr2 points to internal memory space of 0x00054000 of proccessor p2  ptr3 points to internal memory space of 0x00054000 of proccessor p3, so like this i need to initialize at the start of my code.
how do i initialize the pointers ? (how should i write loop in program)
(I guess can i assign like this ptr1 as 0x154000 or i can just give the processor ID number and  internal memory address if its like this i mean how i can do this?)

Please don't feel that its too big mail ...
Becouse i am totally new to this ADSP and that tooo multiprocessors management...

I hope i explained my problem properly.

Please help me in this . Thanks
Harsha S
  On Fri, 01 Apr 2005 Steve Holle wrote :
>
>Are you using an ICE?  In VDSP++ using our ICE, I was able to daisy-chain
>the JTAG debug port and set up a session with multiple processors and it is
>them possible to examine the common memory, to start and halt all DSPs
>simultaneously.  On our system, each processor was assigned a unique number
>but otherwise ran identical code independently, except for some shared
>data.  If you are talking about a true multiprocessing environment, that is
>completely out of my area of expertise.  Do you have a compiler that will
>compile for a multiprocessing environment?  I don't know whether VDSP can
>create that kind of program or not.  If each processor was performing one
>part of a calculation on common data it could probably all be performed in
>shared memory.  Coordination and timing might be interesting.
>
>At 07:52 PM 3/31/2005, harsha sb sb wrote:
>
> >Hi steve,
> >
> >I am using the multiprocessor system of 3 processor and created one shared
> >memory space for all the 3 processor which is in SDRAM(External memory).
> >
> >I have 10 big global arrays which i have stored in the shared.doj whish is
> >in shared memory system. and i have assigned this gloabl arrays as to
> >preceeding with pm keyword
> >When i load my program the arrays are loaded into all the 3 processors
> >PMDA memory section.
> >
> >My question is can i select the each processors PMDA memory section and
> >place 2 gloabl buffers in each pmda section of all the processor and use
> >these 6 global buffers as a shared to each processors??
> >If i want to assign this whats the i have to do ??
> >
> >can anybody explain me please..
> >
> >Thanks
> >Harsha S
> >
> >
> >
> >
> >
> >On Thu, 31 Mar 2005 Steve Holle wrote :
> > >
> > >To answer your question intelligently we will need some information.
> > >1) Are you trying to run 3 independent processors with communications
> > >between them?
> > >2) How are you loading your code?
> > >3) Do you have one code set that loads in all processors?
> > >4) How are the processors linked together?
> > >5) Are you using shared memory?
> > >6) What compiler and IDE are you using?
> > >
> > >At 03:03 AM 3/31/2005, harsha sb sb wrote:
> > >
> > >
> > > >
> > > >Hi all,
> > > >
> > > >I am using 3 ADSP-21160 processors which are mapped to some board.
> > > >
> > > >How do i run the code on multiprocessor.?
> > > >if i have a 2 for loops which are independent of each other then how can i
> > > >tell the both processor to execute each one for loop?
> > > >
> > > >Please help me in this regrds,
> > > >
> > > >
> > > >Thanks
> > > >
> > > >Harsha S
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > >
> > >Steve Holle
> > >Link Communications, Inc.
> > >1035 Cerise Rd.
> > >Billings, MT  59101
> > >s...@link-comm.com
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> >
> >
> ><http://clients.rediff.com/signature/track_sig.asp>
> >[]
> >
>
>Steve Holle
>Link Communications, Inc.
>1035 Cerise Rd.
>Billings, MT  59101
>s...@link-comm.com ><*> To visit your group on the web, go to:
>    http://groups.yahoo.com/group/adsp/
>
><*> To unsubscribe from this group, send an email to:
>    a...@yahoogroups.com
>
><* >
>


I think what you want is a multiprocessing compiler that will allocate
resources and take care of scheduling. With that said, in the example you
gave, if the calculation at the center of the loop does not require any of
the results of the previous calculations, it would be a simple matter to
initialize I to the DSP ID (0, 1, 2) and each DSP could step through the
loop independently. As an example, each DSP could run a loop similar to :

for ( int i = 1, i < 1000 ; i++ )
{
for ( int j = ID ; j < 1000 ; j+ = 3 )
{
callfunc ( i, j ) ;
}
}

All you would have to coordinate would be the beginning and end of the
loop. Now if, as I suspect, callfunc requires data from previous callfunc
calls, the you must synchronize each call to callfunc on each processor to
insure the results are available. In other words, DSP ID 0 must complete
it's iteration before DSP ID 1 which must complete it's iteration before
DSP ID 2.

Does this make sense?

At 08:41 PM 4/1/2005, harsha sb sb wrote:

>Hi steve,
>
>Ya its right i can able to do all the things what ever you explained. but
>problem is like this
>
>If i want execute same code on all the 3 processor then how do i schedule
>all the 3 processor to execute that code ?
>
>Like what i explained in previous mail ..
>i explain here with smal code
>
>for(i=0;i<1000;i++)
>{
> for(j=0;j<1000;j++)
> {
> callfunc(i,j);
> }
>}
>
>now this code is put in all the 3 processors and i would like to execute
>this function passing elements like...
>Processor 1 should execute the function with parameters
>i=0,j=0.. processor 2 should execute my callfunc with parameters as i
>=0,j=1 processor 3 should execute with parametsr as i =0;j=2 , like this
>now 1 processor execute with next vlue .. so like this can i schedule all
>the processor is it possible ? if yes can please explain me ..
>
>2. In my code i need to intialize the pointers in the array of structures
>example below.
>
>struct share{
>int *ptr1;
>int *ptr2;
>int *ptr3;
>}share1[1000];
>
>now the
>ptr1 points to Internal memory space 0x00054000 of processor p1 and ptr2
>points to internal memory space of 0x00054000 of proccessor p2 ptr3
>points to internal memory space of 0x00054000 of proccessor p3, so like
>this i need to initialize at the start of my code.
>how do i initialize the pointers ? (how should i write loop in program)
>(I guess can i assign like this ptr1 as 0x154000 or i can just give the
>processor ID number and internal memory address if its like this i mean
>how i can do this?)
>
>Please don't feel that its too big mail ...
>Becouse i am totally new to this ADSP and that tooo multiprocessors
>management...
>
>I hope i explained my problem properly.
>
>Please help me in this . >Thanks
>Harsha S >
>On Fri, 01 Apr 2005 Steve Holle wrote :
> >
> >Are you using an ICE? In VDSP++ using our ICE, I was able to daisy-chain
> >the JTAG debug port and set up a session with multiple processors and it is
> >them possible to examine the common memory, to start and halt all DSPs
> >simultaneously. On our system, each processor was assigned a unique number
> >but otherwise ran identical code independently, except for some shared
> >data. If you are talking about a true multiprocessing environment, that is
> >completely out of my area of expertise. Do you have a compiler that will
> >compile for a multiprocessing environment? I don't know whether VDSP can
> >create that kind of program or not. If each processor was performing one
> >part of a calculation on common data it could probably all be performed in
> >shared memory. Coordination and timing might be interesting.
> >
> >At 07:52 PM 3/31/2005, harsha sb sb wrote:
> >
> > >Hi steve,
> > >
> > >I am using the multiprocessor system of 3 processor and created one shared
> > >memory space for all the 3 processor which is in SDRAM(External memory).
> > >
> > >I have 10 big global arrays which i have stored in the shared.doj whish is
> > >in shared memory system. and i have assigned this gloabl arrays as to
> > >preceeding with pm keyword
> > >When i load my program the arrays are loaded into all the 3 processors
> > >PMDA memory section.
> > >
> > >My question is can i select the each processors PMDA memory section and
> > >place 2 gloabl buffers in each pmda section of all the processor and use
> > >these 6 global buffers as a shared to each processors??
> > >If i want to assign this whats the i have to do ??
> > >
> > >can anybody explain me please..
> > >
> > >Thanks
> > >Harsha S
> > >
> > >
> > >
> > >
> > >
> > >On Thu, 31 Mar 2005 Steve Holle wrote :
> > > >
> > > >To answer your question intelligently we will need some information.
> > > >1) Are you trying to run 3 independent processors with communications
> > > >between them?
> > > >2) How are you loading your code?
> > > >3) Do you have one code set that loads in all processors?
> > > >4) How are the processors linked together?
> > > >5) Are you using shared memory?
> > > >6) What compiler and IDE are you using?
> > > >
> > > >At 03:03 AM 3/31/2005, harsha sb sb wrote:
> > > >
> > > >
> > > > >
> > > > >Hi all,
> > > > >
> > > > >I am using 3 ADSP-21160 processors which are mapped to some board.
> > > > >
> > > > >How do i run the code on multiprocessor.?
> > > > >if i have a 2 for loops which are independent of each other then
> how can i
> > > > >tell the both processor to execute each one for loop?
> > > > >
> > > > >Please help me in this regrds,
> > > > >
> > > > >
> > > > >Thanks
> > > > >
> > > > >Harsha S
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > >
> > > >Steve Holle
> > > >Link Communications, Inc.
> > > >1035 Cerise Rd.
> > > >Billings, MT 59101
> > > >sholle@shol...
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > >
> > >
> > ><http://clients.rediff.com/signature/track_sig.asp>
> > >[]
> > >
> >
> >Steve Holle
> >Link Communications, Inc.
> >1035 Cerise Rd.
> >Billings, MT 59101
> >sholle@shol...
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> ><http://clients.rediff.com/signature/track_sig.asp>
>[]
>

Steve Holle
Link Communications, Inc.
1035 Cerise Rd.
Billings, MT 59101
sholle@shol...