dplace(3)
dplace_file, dplace_line, libdplace - a library interface to dplace
As shipped in IRIX 6.5. First release of IRIX 6.5.
NAME dplace_file, dplace_line, libdplace - a library interface to dplace C SYNOPSIS void dplace_file( char *filename); void dplace_line( char *line); FORTRAN SYNOPSIS CHARACTER*n string CALL dplace_file( string) CALL dplace_line( string) DESCRIPTION These library routines provide high level access to a subset of the memory management and control mechanisms of IRIX. Dynamic dplace(1) functionality is provided from within a user's program. The first form takes a filename as an argument and all commands within the file are processed. The second form operates on a single command. Error's are handled in the same way as dplace(1); the program exits and a diagnostic message is printed to standard error. The library can be used with or without using dplace(1). EXAMPLE CODE Here is a fragment of FORTRAN code CHARACTER*128 s np = mp_numthreads() WRITE(s,*) 'memories ',np,' in cube' CALL dplace_line(s) WRITE(s,*) 'threads ',np CALL dplace_line(s) DO i=0, np-1 WRITE(s,*) 'run thread',i,' on memory',i CALL dplace_line(s) head = %loc( a( 1+i*(n/np) ) ) tail = %loc( a( (i+1)*(n/np) ) ) WRITE(s,*) 'place range',head,' to',tail,' on memory',i CALL dplace_line(s) END DO DO i=0, np-1 WRITE(s,*) 'move thread',i,' to memory',np-1-i CALL dplace_line(s) END DO DO i=0, np-1 head = %loc( a( 1+i*(n/np) ) ) tail = %loc( a( (i+1)*(n/np) ) ) WRITE(s,*) 'migrate range',head,' to',tail,' to memory',np-1-i CALL dplace_line(s) END DO and here is a C language code fragment: main(){ /* C example code */ ... dplace_file("initial_placement_file"); ... ... data initialization,sprocs etc. ... for(i=0;i<nthreads;i++){ sprintf(cmd,"run thread %d on memory %d\n",i,i/2); dplace_line(cmd); ... sprintf(cmd,"migrate range %d to %d to memory %d\n" ,&a[i*size],&a[(i+1)size-1],i/2); dplace_line(cmd); ... } } When linking C or FORTRAN programs, the flag -ldplace will automatically invokes the correct libdplace library. FILES /usr/lib/libdplace.so /usr/lib64/libdplace.so /usr/lib32/libdplace.so DEPENDENCIES These procedures are only available on NUMA systems. In order to avoid conflicts with Fortran's libmp, it is advisable to set the environment variable _DSM_OFF to disable libmp's NUMA functionality before running programs that are linked with libdplace. SEE ALSO dplace(1), dplace(5)