From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from pigeon.gentoo.org ([208.92.234.80] helo=lists.gentoo.org) by finch.gentoo.org with esmtp (Exim 4.60) (envelope-from ) id 1RKiyi-0005SG-VK for garchives@archives.gentoo.org; Mon, 31 Oct 2011 03:56:05 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 4C61921C040 for ; Mon, 31 Oct 2011 03:56:04 +0000 (UTC) Received: from mail2.ticino.com (mail2.ticino.com [195.190.166.67]) by robin.gentoo.org (8.13.5/8.13.5) with ESMTP id j92KGloC018011 for ; Sun, 2 Oct 2005 20:16:47 GMT X-Spam-Score: 1 Received: from [10.0.0.3] (unverified [62.48.114.50]) by mail2 (Rockliffe SMTPRA 6.1.22) with ESMTP id for ; Sun, 2 Oct 2005 22:25:37 +0200 Message-ID: <43404030.6000005@ticino.com> Date: Sun, 02 Oct 2005 22:16:48 +0200 From: Luca Guglielmetti User-Agent: Mozilla Thunderbird 1.0.6 (X11/20050726) X-Accept-Language: en-us, en Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-docs-it@gentoo.org Reply-to: gentoo-docs-it@lists.gentoo.org MIME-Version: 1.0 To: gentoo_doc_it Subject: [gentoo-docs-it] aggiornamento hpc-howto.xml X-Enigmail-Version: 0.92.0.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="------------enigA66143B3B9512805D3D75A68" X-Archives-Salt: e9ed336d-32dd-4df4-b732-e9d4be9c60f3 X-Archives-Hash: d8d3fab2afa7ad8c6f9d4b2002e1a1fb This is an OpenPGP/MIME signed message (RFC 2440 and 3156) --------------enigA66143B3B9512805D3D75A68 Content-Type: multipart/mixed; boundary="------------040400030700040002070400" This is a multi-part message in MIME format. --------------040400030700040002070400 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit file: hpc-howto.xml versione: 1.1 revisione: 1.4 ciao Guglie --------------040400030700040002070400 Content-Type: text/xml; name="hpc-howto.xml" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline; filename="hpc-howto.xml" High Performance Computing on Gentoo Linux Marc St-Pierre Benoit Morin Jean-Francois Richard Olivier Crete Donnie Berkholz Luca Guglielmetti Questo documento =C3=A8 stato scritto degli sviluppatori dell'Adelie Linu= x R&D Center <http://www.adelielinux.com> come guida all'installazione di= Gentoo Linux in un sistema di computing ad alta performance (HPC). 1.1 2003-08-01 Introduzione

Gentoo Linux =C3=A8 una speciale distribuzione di Linux che pu=C3=B2 esse= re facilmente ottimizzata e personalizzata per qualsiasi applicazione o necessit=C3=A0.= L'estrema velocit=C3=A0, la grande configurabilit=C3=A0 e l'ottima collaborazione f= ra gli sviluppatori e gli utenti sono i grandi punti di forza di gentoo.

Grazie a portage, Gentoo Linux pi=C3=B9 diventare un server sicuro, una w= orkstation per lo sviluppo, una postazione desktop professionale, una piattaforma di= gioco, un sistema embedded o - come spiega questa guida - un sistema di computin= g ad alta performance. Le varie personalizzazioni di Gentoo Linux sono quasi infinite, perci=C3=B2 il sistema viene anche definito una metadistr= ibuzione.

Questa guida spiega come installare un sistema basato su Gentoo in un sis= tema di computing al alta performance. Passo dopo passo spiega quali pacchetti so= no necessari e come configurarli correttamente.

Se non sei ancora in possesso di Gentoo Linux puoi procurartene una copia= dal sito web http://www.gentoo.org e puoi aiutarti durante l'installazione = con la documentazione.

Configurazione di Gentoo Linux per un Cluster
Ottimizzaz=C3=AEoni raccomandate In questa sezione ci sono riferimenti al manuale di Gentoo Linux

Durante l'installazione di Gentoo bisogna attivare alcune variabili USE i= n /etc/make.conf. Noi raccomandiamo di disattivare tutte le va= riabili predefinite (confronta /etc/make.profile/make.defaults) mett= endo un segno meno in /etc/make.conf. Malgrado questo potreste avere= bisogno di attivare USE variabili come x86, 3dnow, gpm, mmx, sse, ncurses, pam e tcp= d. Per maggiori informazioni vi consigliamo perci=C3=B2 la documentazione sulle = USE flags.

USE=3D"-oss 3dnow -apm -arts -avi -berkdb -crypt -cups -encode -gdbm
-gif gpm -gtk -imlib -java -jpeg -kde -gnome -libg++ -libwww -mikmod
mmx -motif -mpeg ncurses -nls -oggvorbis -opengl pam -pdflib -png
-python -qt -qtmt -quicktime -readline -sdl -slang -spell -ssl
-svga tcpd -truetype -X -xml2 -xmms -xv -zlib"

o pi=C3=B9 semplicemente

USE=3D"-* 3dnow gpm mmx ncurses pam sse tcpd"
La FLAG tcpd aumenta la sicurezza di pacchetti come xinetd.

Nelle sezioni 7 e 9 (Configurazione del Kernel e Installazione degli stru= menti di sistema) per ragioni di stabilit=C3=A0 raccomandiamo l'installazione di v= anilla-sources, la versione ufficiale del kernel (quella di http://www.kernel.org/), anche se necessitate di feautures speciali, come xfs.

# emerge -p syslog-ng vanilla-sources

Quando in seguito installerete altri pacchetti vi consigliamo di emergere= pure questi:

# emerge -p nfs-utils portmap tcpdump ssmtp iptables xinetd
Communication Layer (TCP/IP Network)

Un cluster necessita di un communication layer ("strato per le comunicazi= one") per connettere i nodi principali ai nodi secondari. Normalmente delle schede = di rete come FastEthernet o GigaEthernet hanno un buon rapporto qualit=C3=A0/prezzo. U= n'altra possibilit=C3=A0 =C3=A8 l'uso di prodotti come Myrinet, QsNet o altri ancora.

Un cluster =C3=A8 composto da due tipi di nodi: master (primari) o slave = (secondari). Normalmente da un solo nodo master e da molti nodi slaves.

Il nodo master =C3=A8 il server del cluster e il suo compito =C3=A8 di co= ordinare i nodi slaves dicendogli che cosa fare. Normalmente ha quindi dei demoni come dhcpd, nf= s, pbs server, e pbs-sched. Il nodo master deve quindi garantire sessioni intera= ttive e accettare esecuzioni di processi.

I nodi slaves invece attendono di ricevere istruzioni (ad esempio via ssh= /rsh) dal nodo master. Il loro unico compito =C3=A8 di elaborare le istruzioni rice= vute, quindi non dovrebbero avere installati servizi inutili.

Ogni nodo dovrebbe avere nel file host (/etc/hosts) gli indi= rizzi di tutti i nodi del cluster.

# Adelie Linux Research & Development Center
# /etc/hosts

127.0.0.1	localhost

192.168.1.100	master.adelie master

192.168.1.1	node01.adelie node01
192.168.1.2	node02.adelie node02

Per configurare la LAN dedicata del vostro cluster editate il file /etc/conf.d/net del server.

# Copyright 1999-2002 Gentoo Technologies, Inc.
# Distributed under the terms of the GNU General Public License, v2 or la=
ter

# Global config file for net.* rc-scripts

# This is basically the ifconfig argument without the ifconfig $iface
#

iface_eth0=3D"192.168.1.100 broadcast 192.168.1.255 netmask 255.255.255.0=
"
# Network Connection to the outside world using dhcp -- configure as requ=
ired for you network
iface_eth1=3D"dhcp"

Infine configurate il demone DHCP del vostro server, in maniera da poter = evitare di dover mantenere manualmente la configurazione della rete su ogni nodo = slave.

# Adelie Linux Research & Development Center
# /etc/dhcp/dhcpd.conf

log-facility local7;
ddns-update-style none;
use-host-decl-names on;

subnet 192.168.1.0 netmask 255.255.255.0 {
        option domain-name "adelie";
        range 192.168.1.10 192.168.1.99;
        option routers 192.168.1.100;

        host node01.adelie {
		# MAC address of network card on node 01
                hardware ethernet 00:07:e9:0f:e2:d4;
                fixed-address 192.168.1.1;
        }
        host node02.adelie {
		# MAC address of network card on node 02
                hardware ethernet 00:07:e9:0f:e2:6b;
                fixed-address 192.168.1.2;
        }
}
NFS/NIS

Il Netsork File System (NFS) =C3=A8 stato sviluppato per permettere a del= le macchine di montare una partizione del disco su una macchina in rete, come se fosse r= ealmente un suo disco. Ci=C3=B2 permette quindi di condividere velocemente e simultan= eamente dei files nella rete.

Ci sono anche altri sistemi che hanno funzionalit=C3=A0 simili a NFS e ch= e possono essere usati in un cluster. Il File System Andrew dell' IBM, recentemente rilasciato open-source, = ha un meccanismo di file-sharing con alcuni miglioramenti per la sicurezza e le= prestazioni. Il File System Coda =C3=A8= ancora in fase di sviluppo, ma =C3=A8 stato progettato per lavorare ottimamente con clients= disconnessi. Molte delle feautures del file system Coda saranno probabilmente introdot= te nella prossima release di NFS (Version 4). Attualmente NFS ha i vantaggi di essere maturo, standardizzato, molto con= osciuto e supportato molto bene da diverse piattaforme.

# emerge -p nfs-utils portmap
# emerge nfs-utils portmap

Configura e installa un kernel che supporti NFS v3 in tutti i nodi:

CONFIG_NFS_FS=3Dy
CONFIG_NFSD=3Dy
CONFIG_SUNRPC=3Dy
CONFIG_LOCKD=3Dy
CONFIG_NFSD_V3=3Dy
CONFIG_LOCKD_V4=3Dy

Nel server modifica il file /etc/hosts.allow per accettare l= e connessioni dai nodi slaves. Se la LAN del tuo cluster =C3=A8 su 192.168.= 1.0/24 il file hosts.allow dovrebbe essere simile a questo:

portmap:192.168.1.0/255.255.255.0

Modifica il file /etc/exports del server per esportare una d= irectory di lavoro (/home va molto bene in questo caso).

/home/	*(rw)

Aggiungi nfs al runlevel come default sul server:

# rc-update add nfs default

Per montare sui nodi slaves il filesystem nfs del nodo master dovete modi= ficare il file /etc/fstab dei vostri nodi slaves. Dovete quindi agg= iungere una linea simile a questa:

master:/home/	/home	nfs	rw,exec,noauto,nouser,async	0 0

Dovete anche fare in modo che i nodi slaves montino il filesystem ntfs:

# rc-update add nfsmount default
RSH/SSH

SSH =C3=A8 un protocollo per effettuare login remoti e altri operazioni i= n una rete insicura, ma maniera sicura. Infatti OpenSSH usa la crittografia a chiave= pubblica per garantire un'autenticazione e una comunicazione sicura. Prima di configur= are ssh bisogna generare una chiave pubblica, che sar=C3=A0 poi condivisa con il = sistema remoto, e una chiave privata che sar=C3=A0 conosciuta solo dal sistema locale.

Per un uso pulito di ssh devono essere usate le chiavi pubbliche/private.= Ci=C3=B2 va fatto con due passaggi:

  • Generare la chiave pubblica e quella privata
  • Copiare la chiave pubblica su tutti i nodi slaves

Per un'autenticazione basata sugli utenti, bisogna eseguire qualcosa del = genere:

# ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/root/.ssh/id_dsa): /root/.ssh/id_ds=
a
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.
The key fingerprint is:
f1:45:15:40:fd:3c:2d:f7:9f:ea:55:df:76:2f:a4:1f root@master


ATTENZIONE! Se hai gi=C3=A0 un file "authorized_keys" usa quello, non dar=
e il seguente
comando.


# scp /root/.ssh/id_dsa.pub node01:/root/.ssh/authorized_keys
root@master's password:
id_dsa.pub   100%  234     2.0MB/s   00:00

# scp /root/.ssh/id_dsa.pub node02:/root/.ssh/authorized_keys
root@master's password:
id_dsa.pub   100%  234     2.0MB/s   00:00
Host keys deve avere una password vuota. RSA =C3=A8 richiesto solamente p= er l'autenticazione basata sugli hosts.

Per l'autenticazione basata sugli hosts devi modificare il file /etc/ssh/shosts.equiv.

node01.adelie
node02.adelie
master.adelie

Sono necessarie anche alcune modifiche al file /etc/ssh/sshd_config= .

# $OpenBSD: sshd_config,v 1.42 2001/09/20 20:57:51 mouring Exp $
# This sshd was compiled with PATH=3D/usr/bin:/bin:/usr/sbin:/sbin

# This is the sshd server system-wide configuration file.  See sshd(8)
# for more information.

# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key

Se la tua applicazione richiede comunicazioni via RSH =C3=A8 necessario e= mergere net-misc/netkit-rsh e sys-apps/xinetd.

# emerge -p xinetd
# emerge xinetd
# emerge -p netkit-rsh
# emerge netkit-rsh

Adesso configura il demone rsh editando il file /etc/xinet.d/rsh.

# Adelie Linux Research & Development Center
# /etc/xinetd.d/rsh

service shell
{
        socket_type     =3D stream
        protocol        =3D tcp
        wait            =3D no
        user            =3D root
        group           =3D tty
        server          =3D /usr/sbin/in.rshd
        log_type        =3D FILE /var/log/rsh
        log_on_success  =3D PID HOST USERID EXIT DURATION
        log_on_failure  =3D USERID ATTEMPT
        disable         =3D no
}

Modifica anche il file /etc/hosts.allow per autorizzare le c= onnessioni rsh.

# Adelie Linux Research & Development Center
# /etc/hosts.allow

in.rshd:192.168.1.0/255.255.255.0

O potete semplicemente avere fiducia nella vostra LAN:

# Adelie Linux Research & Development Center
# /etc/hosts.allow    =20

ALL:192.168.1.0/255.255.255.0

Per finire configura l'autenticazione degli host editando il file /= etc/hosts.equiv.

# Adelie Linux Research & Development Center
# /etc/hosts.equiv

master
node01
node02

E imposta il runlevel di xinetd su default:

# rc-update add xinetd default
NTP

Il Network Time Protocol (NTP) =C3=A8 usato per sincronizzare l'ora di un= computer (client o server) con quella di un altro server o di un altra macchina ch= e ha un orologio, ad esempio una radio, un ricevitore satellitare o un modem. Generalmente la precisione in una rete LAN =C3=A8 di un millisecondo e in= una rete WAN =C3=A8 di una decina di millisecondi utilizzando ad esempio UTC (Coor= dinated Universal Time) con un GPS (Global Positioning Service). Solitamente le configurazi= oni di NTP utilizzano molti servers ridondanti e diversi percorsi della rete = per raggiungere un'ottima precisione e un'ottima attendibilit=C3=A0.

Scegli un server NTP geograficamente abbastanza vicino a te da questa l= ista di servers NTP pubblici e configura i tuoi files /etc/conf.d/ntp= e /etc/conf.d/ntp del tuo nodo master.

# Copyright 1999-2002 Gentoo Technologies, Inc.
# Distributed under the terms of the GNU General Public License v2
# /etc/conf.d/ntpd

# NOTES:
#  - NTPDATE variables below are used if you wish to set your
#    clock when you start the ntp init.d script
#  - make sure that the NTPDATE_CMD will close by itself ...
#    the init.d script will not attempt to kill/stop it
#  - ntpd will be used to maintain synchronization with a time
#    server regardless of what NTPDATE is set to
#  - read each of the comments above each of the variable

# Comment this out if you dont want the init script to warn
# about not having ntpdate setup
NTPDATE_WARN=3D"n"

# Command to run to set the clock initially
# Most people should just uncomment this line ...
# however, if you know what you're doing, and you
# want to use ntpd to set the clock, change this to 'ntpd'
NTPDATE_CMD=3D"ntpdate"

# Options to pass to the above command
# Most people should just uncomment this variable and
# change 'someserver' to a valid hostname which you
# can aquire from the URL's below
NTPDATE_OPTS=3D"-b ntp1.cmc.ec.gc.ca"

##
# A list of available servers is available here:
# http://www.eecis.udel.edu/~mills/ntp/servers.html
# Please follow the rules of engagement and use a
# Stratum 2 server (unless you qualify for Stratum 1)
##

# Options to pass to the ntpd process that will *always* be run
# Most people should not uncomment this line ...
# however, if you know what you're doing, feel free to tweak
#NTPD_OPTS=3D""

Modifica il file /etc/ntp.conf del nodo master in maniera da impostare una fonte esterna per la sincronizzazione:

# Adelie Linux Research & Development Center
# /etc/ntp.conf

# Synchronization source #1
server ntp1.cmc.ec.gc.ca
restrict ntp1.cmc.ec.gc.ca
# Synchronization source #2
server ntp2.cmc.ec.gc.ca
restrict ntp2.cmc.ec.gc.ca
stratum 10
driftfile /etc/ntp.drift.server
logfile  /var/log/ntp
broadcast 192.168.1.255
restrict default kod
restrict 127.0.0.1
restrict 192.168.1.0 mask 255.255.255.0

E imposta in tutti i nodi slaves, come fonte per la sincronizzazione, il = tuo nodo master.

# 1999-2002 Gentoo Technologies, Inc.
# Distributed under the terms of the GNU General Public License v2
# /etc/conf.d/ntpd

NTPDATE_WARN=3D"n"
NTPDATE_CMD=3D"ntpdate"
NTPDATE_OPTS=3D"-b master"
# Adelie Linux Research & Development Center
# /etc/ntp.conf

# Synchronization source #1
server master
restrict master
stratum 11
driftfile /etc/ntp.drift.server
logfile  /var/log/ntp
restrict default kod
restrict 127.0.0.1

Per finire aggiungi ntpd al runlevel di tutti i nodi:

# rc-update add ntpd default
Ora quando la differenza fra l'orologio della fonte e quello locale sar=C3= =A0 troppo grande NTP sincronizzer=C3=A0 l'orologio locale.
IPTABLES

Per configurare un firewall sul vostro cluster dovete installare iptables= =2E

# emerge -p iptables
# emerge iptables

Configurazione del kernel richiesta:

CONFIG_NETFILTER=3Dy
CONFIG_IP_NF_CONNTRACK=3Dy
CONFIG_IP_NF_IPTABLES=3Dy
CONFIG_IP_NF_MATCH_STATE=3Dy
CONFIG_IP_NF_FILTER=3Dy
CONFIG_IP_NF_TARGET_REJECT=3Dy
CONFIG_IP_NF_NAT=3Dy
CONFIG_IP_NF_NAT_NEEDED=3Dy
CONFIG_IP_NF_TARGET_MASQUERADE=3Dy
CONFIG_IP_NF_TARGET_LOG=3Dy

Le regole che questo tipo di firewall necessita sono:

# Adelie Linux Research & Development Center
# /var/lib/iptbles/rule-save

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -s 192.168.1.0/255.255.255.0 -i eth1 -j ACCEPT
-A INPUT -s 127.0.0.1 -i lo -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -j LOG
-A INPUT -j REJECT --reject-with icmp-port-unreachable
COMMIT
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A POSTROUTING -s 192.168.1.0/255.255.255.0 -j MASQUERADE
COMMIT

Infine aggiungi anche iptables al runlevel di tutti i nodi:

# rc-update add iptables default
HPC Tools
OpenPBS

Il Portable Batch System (PBS) =C3=A8 un sistema flessibile per la gestio= ne delle code di batch; originariamente =C3=A8 stato sviluppato dalla NASA. Funziona bene = con networked e sistemi UNIX multi-piattaforma, come clusters, workstations, supercompute= rs e molti sistemi paralleli. Attualmente =C3=A8 la Altair Grid Technologies che con= tinua lo sviluppo di PBS.

# emerge -p openpbs
L'ebuild di OpenPBS al momento non imposta correttamente i permessi nelle= directories var usate da OpenPBS.

Prima di iniziare a usare OpenPBS sono necessarie alcune configurazioni p= articolari. I files da personalizzare sono:

  • /etc/pbs_environment
  • /var/spool/PBS/server_name
  • /var/spool/PBS/server_priv/nodes
  • /var/spool/PBS/mom_priv/config
  • /var/spool/PBS/sched_priv/sched_config

Questo =C3=A8 un esempio di sched_config:

#
# Create queues and set their attributes.
#
#
# Create and define queue upto4nodes
#
create queue upto4nodes
set queue upto4nodes queue_type =3D Execution
set queue upto4nodes Priority =3D 100
set queue upto4nodes resources_max.nodect =3D 4
set queue upto4nodes resources_min.nodect =3D 1
set queue upto4nodes enabled =3D True
set queue upto4nodes started =3D True
#
# Create and define queue default
#
create queue default
set queue default queue_type =3D Route
set queue default route_destinations =3D upto4nodes
set queue default enabled =3D True
set queue default started =3D True
#
# Set server attributes.
#
set server scheduling =3D True
set server acl_host_enable =3D True
set server default_queue =3D default
set server log_events =3D 511
set server mail_from =3D adm
set server query_other_jobs =3D True
set server resources_default.neednodes =3D 1
set server resources_default.nodect =3D 1
set server resources_default.nodes =3D 1
set server scheduler_iteration =3D 60

Per mandare un processo (job) a OpenPBS, il comando qsub =C3=A8 us= ato con alcuni parametri opzionali. Ad esempio "-l" permette di specificare le richieste= necessarie, "-j" permette il redirect degli errori e degli standard out e "-m" manda = un e-mail all'inizio (b), alla fine (e) e all'interruzione (a) del lavoro.


manda la richiesta a OpenpPBS di eseguire myscript in 2 nodi

# qsub -l nodes=3D2 -j oe -m abe myscript

Normalmente le istruzioni sono mandate a OpenPBS sotto forma di scripts. = Se qualche volta aveste bisogno di eseguire delle operazioni manualmente potete rich= iedere una shell interattiva a OpenPBS, con il parametro "-I".

# qsub -I

Per vedere lo stato dei vostri jobs potete usare il comando:

# qstat
Job id  Name  User   Time Use S Queue
------  ----  ----   -------- - -----
2.geist STDIN adelie 0        R upto1nodes
MPICH

Message passing (scambio di messaggi) =C3=A8 una libreria usata frequente= mente in certi tipi di parallel machines, specialmente nelle architetture a memoria distribui= ta. MPICH =C3=A8 un'implementazione di MPI (lo standard per lo scambio di messaggi) distri= buita liberamente.

L'ebuild di mpich scritto da Adelie Linux ha due USE flags: doc e = crypt. doc installa anche la documentazione, mentre cry= pt configura MPICH in modo da usare ssh invece di rsh.

# emerge -p mpich
# emerge mpich

Potreste avere la necessit=C3=A0 di esportare una directory di lavoro per= mpich in tutti i vostri nodi slaves in /etc/exports:

/home	*(rw)

Most massively parallel processors (MPPs) mette a disposizione un modo pe= r fare partire un programma su un determinato numero di processori; quando =C3=A8= possibile mpirun usa questo comando. Al contrario, i clusters di workstations necessitano che ogni processo in= un parallel job sia fatto partire individualmente, malgrado esistano program= mi che aiutano a fare partire questi processi. Ad ogni modo per usare i clus= ter di workstations bisogna avere ancora alcune informazioni, perch=C3=A8 non= sono organizzati come un MPP. Mpich dovrebbe essere installato con una lista di workstations nel file machines.LINUX nella directory /usr/share/MPICH/. Questo file =C3=A8 usato da mpirun per scegliere il processore su = qui fare partire il processo.

Modifica questo file per specificare le macchine del tuo cluster:

# Change this file to contain the machines that you want to use
# to run MPI jobs on.  The format is one host name per line, with either
#    hostname
# or
#    hostname:n
# where n is the number of processors in an SMP.  The hostname should
# be the same as the result from the command "hostname"
master
node01
node02
# node03
# node04
# ...

Puoi usare lo script tstmachines (in /usr/sbin) per assicurarti che puoi fare uso correttamente di tutte le macchine specific= ate precedentemente. Lo script chiama rsh e fa una breve lista della directory; se il test funziona vuole dire che l'accesso al nodo funziona correttamente e che la directory corrente =C3=A8 visibile nel nodo remoto= =2E Se ci sono dei problemi il test dar=C3=A0 degli errori, e sar=C3=A0 necessario = rimediarvi prima di procedere con le prossime istruzioni.

L'unico argomento di tstmachines =C3=A8 il nome dell'architettura,= che =C3=A8 lo stesso nome dell'estensione del file machines. L'esempio seguente testa c= he il programma nella directory corrente pu=C3=B2 essere eseguito da tutte le m= acchine della lista LINUX.

# /usr/local/mpich/sbin/tstmachines LINUX
Se il test va a buon fine non ci sar=C3=A0 nessun optput; se si vuole ved= ere come procede il test si pu=C3=B2 usare l'argomento -v (verbose):
# /usr/local/mpich/sbin/tstmachines -v LINUX

L'output di questo comando sar=C3=A0 qualcosa del genere:

Trying true on host1.uoffoo.edu ...
Trying true on host2.uoffoo.edu ...
Trying ls on host1.uoffoo.edu ...
Trying ls on host2.uoffoo.edu ...
Trying user program on host1.uoffoo.edu ...
Trying user program on host2.uoffoo.edu ...

Se tstmachines trova un problema suggerisce delle possibili ragion= i e soluzioni. Si possono vedere ad esempio questi test seguenti:

  • Si possono fare partire dei processi nelle macchine remote?tstma= chines lancia il comando "true" su ogni macchina del file machines usando la s= hell remota.
  • La directory di lavoro corrente =C3=A8 disponibile correttamente per= tutte le macchine? Consiste nel listare il file che tstmachines crea lanc= iando ls tramite la shell remota.
  • I programmi degli utenti funzionano correttamente nel sistema remoto= ? Controlla che le shared libraries e tutti i componenti necessari siano = stati correttamente installati in tutte le macchine.

Anche questo test =C3=A8 necessario per tutti i tools di sviluppo:

# cd ~
# cp /usr/share/mpich/examples1/hello++.c ~
# make hello++
# mpirun -machinefile /usr/share/mpich/machines.LINUX -np 1 hello++

Per ulteriori informazioni su MPICH consulta la documentazione sul sito http://www-unix.mcs.anl.gov/mpi/mpich/docs/mpichman-chp4/mpichman-ch= p4.htm

LAM

(in arrivo)

OMNI

(in arrivo)

Bibliografia

Il documento originale (in inglese) =C3=A8 pubblicato sul sitoAdelie Linux R&D Centre,=20 ed =C3=A8 stato pubblicato qui grazie al permesso degli autori e del Cyberlogic's Adelie Linux R&= amp;D Centre.

  • http://www.gentoo.org, Gentoo Technologies, Inc.
  • http://www.adelielinux.com,=20 Adelie Linux Research and Development Centre
  • http://nfs.sourceforge.net,=20 Linux NFS Project
  • http://www-unix.mcs.anl.gov/mpi/mpich/,=20 Mathematics and Computer Science Division, Argonne National Laborator= y
  • http://ntp.org
  • http://www.eecis.udel.edu/~mills/,=20 David L. Mills, University of Delaware
  • http://www.ietf.org/html.charters/secsh-charter.html,=20 Secure Shell Working Group, IETF, Internet Society
  • http://www.linuxsecurity.com/, Guardian Digital
  • http://www.openpbs.org/ Altair Grid Technologies, LLC.
=09
--------------040400030700040002070400-- --------------enigA66143B3B9512805D3D75A68 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.1 (GNU/Linux) iD8DBQFDQEA1Zu3DgeMsziwRApWNAJwO5b3K9r1I7rk+FEl1uuXK8+NmjACdGOdU G7ohUixaEig8NuIGDXr1jo8= =/99C -----END PGP SIGNATURE----- --------------enigA66143B3B9512805D3D75A68-- -- gentoo-docs-it@gentoo.org mailing list