DSM 2006
Dynamic list scheduling of threads
- n clusters
Universidade do Vale do Rio dos Sinos Programa Interdisciplinar de Pós Graduação em Computação Aplicada
- G. G. H. Cavalheiro, E. D. Benitez,
- D. S. Peranconi, E. Moschetta
Dynamic list scheduling of threads on clusters G. G. H. Cavalheiro, - - PowerPoint PPT Presentation
Dynamic list scheduling of threads on clusters G. G. H. Cavalheiro, E. D. Benitez, D. S. Peranconi, E. Moschetta Universidade do Vale do Rio dos Sinos Programa Interdisciplinar de Ps Graduao em Computao Aplicada DSM 2006 Overview
DSM 2006
DSM 2006
DSM 2006
Program Sequential SMP Cluster NOW
DSM 2006
DSM 2006
DSM 2006
Programming interface
Performance portability
multithreading
Generic architecture HW/OS dependent modules
Active Messages
DSM 2006
DSM 2006
DSM 2006
DSM 2006
List of ready athreads
getAnyReadyWork()
DSM 2006
getTheWork(id)
Graph of ready athreads
getAnyReadyWork()
DSM 2006
int athread_create( athread_t *th, athread_attr_t *attrib, void *(*func) (void *), void *in );
int athread_join( athread_t th, void **res );
void *foo( void *in ) { ... return out; }
DSM 2006
void* foo(void* x) { ... } void* bar(void* p) { Task_A t1 = create(foo,a); Task_B t2 = create(fuu,b); ... join(t1,r1) Task_C join(t2,r2) Task_D return &something; }
(executing bar)
(Executing foo)
(code executed between two synchronizations)
DSM 2006
DSM 2006
DSM 2006
Starts a new independent flow Helps the execution
DSM 2006
DSM 2006
SearchFrom( NULL, TOP, RIGHT, HORIZ )
SearchFrom( jid, HERE, RIGHT, HORIZ )
void* tree( void* n ) { if( n > 2 ) { t1 = create( tree, *n-1 ); t2 = create( tree, *n-2 ); doSomething( ... ); join(t1,&r1); join(t2,&r2); } else doSomething( ... ); return &something; }
DSM 2006
Depth Concurrency level on the program VPs Parallel execution support
DSM 2006
VPs Parallel execution support per node Time (seconds)
DSM 2006
DSM 2006
gersonc@anahy.org, anahy@anahy.org