BLACS

De Wiki de Calcul Québec
Aller à : Navigation, rechercher
Autres langues :anglais 100% • ‎français 100%

Sommaire

Description

BLACS (Basic Linear Algebra Communication Subprograms) est une bibliothèque pour la distribution en mémoire de matrices pleines et la communication d'éléments de ces matrices. Cette distribution est faite sur une grille bidimensionnelle. La bibliothèque BLACS est construite sur la bibliothèque MPI, il est donc possible de l'utiliser sur des systèmes à mémoire distribuée avec des réseaux InfiniBand ou Ethernet.

Généralement, un programmeur n'a qu'à faire que quelques appels à la bibliothèque BLACS. Celle-ci est toutefois requise pour l'utilisation de ScaLAPACK et peut être requise par PARPACK, dépendamment de son installation.

La documentation et la version de base de la bibliothèque sont disponibles en ligne sur le site de Netlib.

Implémentations disponibles

Intel Math Kernel Library

Math Kernel Library contient une version complète de BLACS.

Exemple

Voici un exemple écrit en langage Fortran 90 pour la communication de partie d'une matrice distribuée sur deux cœurs à l'aide de BLACS.

Fichier : ex_blacs.f90
! communicate: general matrix
program ex_blacs
  ! creat 2 grids: 2x1: (0,1), (1,2)
  implicit none
  include "mpif.h"
 
	INTEGER		:: iproc, nprocs, info
 
	INTEGER		:: nprow, npcol
	INTEGER		:: icntxt
	INTEGER		:: myrow, mycol
 
	integer	:: i, rdest, cdest
!--------------------------------------
	call blacs_pinfo(iproc, nprocs)
		NPCOL = INT( sqrt( float(nprocs) ) )
		NPROW = nprocs / NPCOL
 
	call blacs_get(0, 0, icntxt)
 
	CALL blacs_gridinit( icntxt, 'COL', NPROW, NPCOL )
 
	call blacs_gridinfo(icntxt, nprow, npcol, myrow, mycol)  
	write(6,'(A,3I3)') 'iproc,myrow,mycol===',iproc,myrow,mycol
 
	do i = 0, nprocs-1
		CALL blacs_pcoord( icntxt, i, RDEST, CDEST )
		if( iproc==0 ) print*,'iproc(',i,')==',RDEST, CDEST
	enddo
 
end program


Pour compiler l'exemple en utilisant le paquet Math Kernel Library, vous aurez besoin d'une commande de compilation qui ressemble à ce qui suit :

[nom@serveur $] mpif90 ex_blacs.f90 -lmkl_blacs_openmpi_lp64 -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread -lm


Outils personnels
Espaces de noms

Variantes
Actions
Navigation
Ressources de Calcul Québec
Outils
Partager