scieee AI-readable full text Open interactive document viewer

Manual de uso ScaLapack

Contreras, Iván

Full text

La compilaci´on de los ejemplos se hizo con el compilador que se encuentra en / usr / local / Cellar / mpich /4.0.1/ bin / mpif90 La cual proviene de la Instalaci´on de mpich v´ıa Homebrew ivanc@Ivans -Mac - mini GGMMC % cd / root ivanc@Ivans -Mac - mini GGMMC % tar -xzvf scalapack . tgz Renombre el directorio hacia donde fue extraido, de scalapack-1.8.0 a SCALAPACK Ejecute los siguientes comandos : ivanc@Ivans -Mac -mini GGMMC % cd SCALAPACK ivanc@Ivans -Mac - mini GGMMC % cp SLmake . inc . example SLmake . inc Edite SLmake.inc y haga los siguientes cambios: BLACSdir = / usr / local / lib USEMPI = -DUsingMpiBlacs SMPLIB = BLACSFINIT = $( BLACSdir )/ blacsF77init_MPI -$( PLAT )-$( BLACSDBGLVL ). a BLACSCINIT = $( BLACSdir )/ blacsCinit_MPI -$(PLAT )-$( BLACSDBGLVL ). a BLACSLIB = $( BLACSdir )/ blacs_MPI -$( PLAT )-$( BLACSDBGLVL ). a TESTINGdir = $( home )/ TESTING ( BLACSdir )/ blacs_PVM -$( PLAT )-$( BLACSDBGLVL ). a TESTINGdir = $( HOME )/ pvm3 /bin /$( PLAT ) F77 = mpif77 F77LOADFLAGS = CC = mpicc CCLOADFLAGS = BLASLIB = / usr / local / atlas / lib / libf77blas . a /usr / local / atlas /lib / libatlas . a LAPACKLIB = / usr / local / lib / lapack_LINUX . a Ejecute los siguientes comandos ivanc@Ivans -Mac - mini GGMMC % cd / root/ SCALAPACK ivanc@Ivans -Mac -mini GGMMC % make ivanc@Ivans -Mac -mini GGMMC % make exe ivanc@Ivans -Mac -mini GGMMC % make example Para Ejecutar las pruebas ejecute los siguientes comandos para poder correr los c´odigos de ejemplo : cd / root / SCALAPACK / TESTING mpirun -np 5 ./ xdlu ./ LU .dat mpirun -np 5 ./ xdllt ./ LLT . dat etc ... And finally install the ScaLAPACK library by: chmod 555 / root / SCALAPACK / libscalapack .a cp / root / SCALAPACK / libscalapack . a /usr / local / lib Ahora s´ı puede ejecutar las pruebas cd / root / SCALAPACK / TESTING mpirun -np 5 ./ xdlu ./ LU .dat mpirun -np 5 ./ xdllt ./ LLT . dat 1 Funcionamiento de la biblioteca Scalapack en cómputo en paralelo con memoria distribuida. Se describe el mapeo preciso que asocia una entrada de la matriz, por sus índices globales, con las coordenadas del procesador que la posee así como su posición local en la memoria de ese procesador. BLACS Las operaciones básicas del Álgebra Lineal contenidas en dicha biblioteca Operaciones de Nivel 1 vector - vector Operaciones de Nivel 2 matriz - vector Operaciones de Nivel 3 matriz - matriz Requieren de estructuras de datos especiales para aprovechar las rutinas especificadas. Matrices densas Para matrices densas, los datos se distribuyen de acuerdo con el esquema de capas de datos cíclico por bloques en dos dimensiones. Dada una matriz » — — — — – ap1q 11 ap1q 12 ¨ ¨ ¨ ap1q 1n ap1q 21 ap1q 22 ¨ ¨ ¨ ap1q 2n . . .. . ..... . . ap1q n1ap1q n2¨ ¨ ¨ ap1q nn fi ffi ffi ffi ffi fl (1) Está se distribuirá siguiendo el algoritmo Block-Cycling para seguir con la aplicación del método de eliminación Gaussiana, el cual reduce la matriz en submatrices cuadradas de acuerdo con el siguiente esquema: » — — — — — — — — — – ap1q 11 ap1q 11 ¨¨¨ ¨¨¨ ¨¨¨ ap1q 11 0ap2q 22 ap2q 2n . . ..... . . 0¨ ¨ ¨ 0apkq kk ¨ ¨ ¨ apkq kn . . .. . .. . .. . . 0¨ ¨ ¨ 0apkq nk ¨ ¨ ¨ apkq nn fi ffi ffi ffi ffi ffi ffi ffi ffi ffi fl (2) Organización lógica de los procesadores en una malla bidimensional en la que se identifica cada procesador con una posición de la malla. 1 Distribución de los bloques de la matriz entre los procesadores. Cada bloque es asignado a un procesador siguiendo el algoritmo de repartición cíclico. En este ejemplo se tienen 4 procesadores , una matriz de 16 ˆ 16 con bloques de 2ˆ2 Elementos fundamentales (Ejemplo con un arreglo una dimensión) Supongamos que se tiene un arreglo de longitud N que será almacenado en P procesadores. Por convención, las entradas del arreglo están numeradas de 1 a N mientras que los procesadores están numerados de 0 a P-1. Primero, el arreglo se divide en bloques de tamaño NB. Cuando N no es divisible entre NB sin residuo, el último bloque contendrá ese residuo , es decir mod(N,NB) entradas en lugar de NB. Por convención, estos bloques son numerados desde 0 y son distribuidos entre los procesadores como un mazo de cartas. En otras palabras , si asumimos que el procesador 0 recibe el primer bloque, entonces el k-esimo bloque es asignado al procesador con coordenadas mod(k,P). Los bloques asignados al mismo procesador son almacenados en localidades de memoria contigua. La fórmula para hacer el mapeo es 2 I“kNB `x“ plP `pq ˚ NB `x(3) Donde I es el índice global en el arreglo, l es es la coordenada local del bloque en el cual reside esta entrada, p es la coordenada de el proceso perteneciente a ese bloque y x es la coordenada en el bloque donde se encuentra la entrada con índice Idel arreglo global. Con base en lo anterior se pueden establecer los siguientes despejes para calcular los valores correspondientes de manera independiente. p“ rpI´1q{NBsmodP, l “ rpI´1q{pP˚NBqs (4) x“modpI´1, NBq ` 1(5) Fórmulas Mapeo de lo global a lo local de acuerdo con la organización lógica de los procesadores. Nnúmero de entradas de la matriz Pnúmero de procesadores PryPcNúmero de renglones y columnas de la malla pr,pccoordenadas del procesador en la malla. NB yMB partición en bloques de la matriz. pI, Jqson las entradas en la matriz global En el caso de una matriz, si está se parte en NB ˆMB bloques y el primer bloque es asignado al procesador con coordenadas pRSCR, CSRCq se aplican las fórmulas para la entrada pI, Jq . Esta se localizará en el procesador con coordenadas pPr, Pcqen el bloque local pl, mqen la posición px, yq. Además p“SRC ` ppI´1q{NBqqmodP (6) l“ ppI´1q{pP˚NBqq (7) x“modpI´1, NBq ` 1(8) Coordenadas del el procesaros donde está almacenado el primer bloque de la matriz. pl, mq “ ppI´1q{pPr˚MBqq,ppJ´1q{pPc˚NBqq ppr, pcq “ ppRSRC`ppI´ 1 q{MBqqmodPr,pCSRC`ppJ´ 1 q{NBqqmodPc px, yq“pmodpI´1, MBq ` 1, modpJ´1, NBq ` 1q La estructura de la matriz se divide en bloques que se reparten entre los procesadores siguiendo el algoritmo cíclico quedando particionada y distribuida de la siguiente manera: 3 Referencias [1] Dongarra J.,Foster, I.,Torczon L., Gropp W., "Sourcebook of Parallel Computing". Morgan Kaufmann Publishers, 2003. 4