roberto.alfieri:pub:mpigrid
Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
Entrambe le parti precedenti la revisioneRevisione precedente | |||
roberto.alfieri:pub:mpigrid [26/02/2010 12:07] – roberto.alfieri | roberto.alfieri:pub:mpigrid [26/02/2010 12:10] (versione attuale) – roberto.alfieri | ||
---|---|---|---|
Linea 1: | Linea 1: | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== MPI/ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== WorkerNodes ==== | ||
+ | |||
+ | == Software environment == | ||
+ | |||
+ | * SL5.x x86_64 | ||
+ | * openMPI >= 1.3 (1.4 would be better) | ||
+ | * MPICH2 | ||
+ | * Gnu C, C++, Fortran (gfortran, g77 , g90?? | ||
+ | * Support for commercial compilers? | ||
+ | * Scientific libraries: | ||
+ | * openMP: multithread library | ||
+ | * HDF5 : Data storing and managing library. | ||
+ | * Blas : Basic Linear Algebra Subprograms | ||
+ | * lapack: Linear Algebra PACKage | ||
+ | * GSL : Gnu Scientific Library | ||
+ | * GMP: Gnu Multiprecision Library | ||
+ | * GLPK: Gnu Linear Programming Kit. | ||
+ | * Fftw3: Fast Fourier Transform Library | ||
+ | * Octave : high-level language for numerical computations | ||
+ | |||
+ | ==Installation example== | ||
+ | < | ||
+ | yum install -y yum-conf-epel.noarch | ||
+ | yum install -y octave hdf5-devel glpk fftw3 | ||
+ | yum install -y libgomp blas-devel gsl-devel gmp-devel | ||
+ | </ | ||
+ | |||
+ | == theophys TAG== | ||
+ | The following is a possible TAG to be published by theophys compliant sites: | ||
+ | GlueHostApplicationSoftwareRunTimeEnvironment: | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== Cluster ==== | ||
+ | |||
+ | == Published TAGs for MPI == | ||
+ | Mpi-start is the way to start MPI jobs: | ||
+ | |||
+ | | ||
+ | |||
+ | Al least openMPI should be installed: | ||
+ | |||
+ | | ||
+ | | ||
+ | |||
+ | Shared home is recommended, | ||
+ | |||
+ | | ||
+ | |||
+ | Remote Start-up of MPI job can be achieved via password-less SSH: | ||
+ | |||
+ | MPI_SSH_HOST_BASED_AUTH | ||
+ | |||
+ | Infiniband is recommended, | ||
+ | |||
+ | MPI-Infiniband | MPI-Ethernet | ||
+ | |||
+ | |||
+ | ==Open Issues== | ||
+ | |||
+ | * Is it possible to publish the actual number | ||
+ | |||
+ | * How is CpuNumber used in the match-making process? | ||
+ | < | ||
+ | At the moment | ||
+ | Temporary solution in the JDL: | ||
+ | CPUNumber=n | ||
+ | other.GlueCEInfoTotalCPUs >= CPUNumber | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== JDL ==== | ||
+ | |||
+ | ==Typical parallel jdl== | ||
+ | |||
+ | JobType = " | ||
+ | CpuNumber = 8 ; | ||
+ | |||
+ | ==multithread support == | ||
+ | |||
+ | SMPGranularity = 8; | ||
+ | WholeNodes = True; | ||
+ | |||
+ | Multithread support is desirable and it should be integrated | ||
+ | in the middleware as soon as possible. | ||
+ | |||
+ | == Open Issues == | ||
+ | |||
+ | * Is it possible to integrate Granularity/ | ||
+ | < | ||
+ | CREAM and BLAH: see https:// | ||
+ | WMS: included in WMS 3.3 | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== Parallel and sequential jobs ==== | ||
+ | |||
+ | VOMS Roles can be used to limit the access to Parallel queues. | ||
+ | |||
+ | == Voms Role = " | ||
+ | The [[https:// | ||
+ | and released by [[https:// | ||
+ | |||
+ | ==Setup example== | ||
+ | < | ||
+ | site-info.def: | ||
+ | PARALLEL_GROUP_ENABLE="/ | ||
+ | |||
+ | / | ||
+ | FQANVOVIEWS=yes | ||
+ | |||
+ | groups.conf: | ||
+ | "/ | ||
+ | |||
+ | voms-proxy-init -voms infngrid:/ | ||
+ | voms-proxy-info -all | ||
+ | >.... | ||
+ | > | ||
+ | > | ||
+ | >... | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== MPI multi-thread jobs ==== | ||
+ | |||
+ | MPI and multi-thread programs can be combined to exploit | ||
+ | the upcoming multicore architectures. | ||
+ | The hybrid mutlithread/ | ||
+ | of N CPUs with a smaller number of MPI processes (N/ | ||
+ | Actually this programming model is not supported in EGEE. | ||
+ | Possible solution: | ||
+ | modify | ||
+ | Example: | ||
+ | SMPGranularity = 8; | ||
+ | WholeNodes = 4; | ||
+ | This syntax would lead to | ||
+ | qsub -l nodes=4: | ||
+ | where ppn is a number >=8. | ||
+ | WholeNodes value should be passed to mpi-start | ||
+ | as the number of MPI processes. | ||
+ | Mpi-start should be modified accordingly. | ||
+ | |||
+ | Mixed mpi/ | ||
+ | MPI implementations. | ||
+ | Thead safety can be easily | ||
+ | |||
+ | < | ||
+ | MPI_Init_thread(& | ||
+ | printf(" | ||
+ | </ | ||
+ | The third parameter (number 3) means a request | ||
+ | of full thread safety support ( MPI_THREAD_MULTIPLE ). | ||
+ | If returned value for prov is 0 thread support is not provided | ||
+ | (MPI_THREAD_SINGLE). | ||
+ | |||
+ | |||
+ | ==== Scheduling ==== | ||
+ | |||
+ | ==objectives== | ||
+ | * Minimize jobs starvation | ||
+ | * Maximize resources exploitation | ||
+ | |||
+ | ==Possible scenario== | ||
+ | MPI sites with at least 2 queues sharing the same pool of WNs: | ||
+ | * **high priority parallel queue** | ||
+ | * accessible only with special Role (Role=parallel ?) | ||
+ | * **Low priority sequential queue** | ||
+ | * preemptable (renice or requeue ?) | ||
+ | * short WallClockTime (less than 6 hours?) | ||
+ | * accessible only with special Role (Role=short ?). | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== Revision history ==== | ||
+ | |||
+ | * 20100225 - R. DePietri, | ||
+ | * 20100210 - C. Aiftimiei, R.Alfieri, M.Bencivenni, | ||