Sammendrag av hovedfagsoppgaven "Global Arrays over SCI - Enveis
kommunikasjon i clustere" av Kai-Robert Bjørnstad
Enkelte applikasjonstyper og algoritmer vanskelig å
implementere over MPI-grensesnittet. MPI-standarden
fordrer en tosidig kommunikasjonsmodell hvor både
sender og mottaker eksplisitt må delta i
kommunikasjonen. Enveis kommunikasjon baserer seg på
deltakelse kun fra senderprosessen ved utveksling av
data (typisk kommunikasjonsmetode for SMP maskiner).
Algoritmer og grensesnitt (f.eks. SHMEM) er utviklet
for maskiner hvor prosessorene har et delt adresserom.
Hovedforskjellen på enveis og tosidig kommunikasjon
ligger i hvilken programmeringsmodell som tilbys, mao.
hvordan applikasjonsprogrammereren må forholde seg til
kommunikasjon mellom prosesser.
Clustere har i utgangspunktet ikke et delt adresserom,
noe som skaper problemer ved envis kommunikasjon. Som
et resultat har man på mange måter forsøkt å skape en
illusjon av shared memory ved hjelp av både hardware
og/eller programvare, et såkalt DSM (Distributed Shared
Memory). I denne sammenheng har et bibliotek kalt
Global Arrays (GA) blitt utviklet. GA er implementert
over kommunikasjonsbiblioteket ARMCI (Aggregate Remote
Memory Copy Interface).
ARMCI er et portabelt kommunikasjonsbibliotek med fokus
på implementasjon av effektive enveis
kommunikasjonsoperasjoner i clustere og i shared
memory-maskiner. Grensesnittet er ikke standardisert,
men benyttes likefullt av flere applikasjoner, f.eks.
NWCHEM og GAMESS-UK (gjennom GA). ARMCI likner på mange
måter SHMEM-grensesnittet for enveis kommunikasjon.
Forskjellen ligger i at ARMCI fokuserer på overføring
av ikke-sekvensielle (strided) datastrukturer.
En viktig del av datakommunikasjon er å gjøre denne så
effektiv som mulig. Det fokuseres på å benytte minst
mulig tid på kommunikasjon (overhead) og mest mulig på
prosessering/regning. Med dette som utganspunkt
undersøkes det i oppgaven mulighetene for å la ARMCI
kunne kommunisere over høyhastighetsnettverket SCI. Som
et utgangspunkt skisserer oppgaven tre hovedmetoder for
implementasjon; ARMCI over SCI via TCP/IP, MPI og
SCI-driver. Prosjektet er basert på Scali AS sin
programvare pakke (med ScaFun og ScaMPI) SSP (Scali
Software Package).
Det har blir vist at bruk av TCP/IP-implementasjoner
som ScaIP over SCI introduserer en høy overhead og gir
dårligere ytelse enn allerede eksisterende
ARMCI-implementasjoner over Gigabit Ethernet. Det er
videre utviklet en ARMCI-implementasjon utelukkende
over en tosidig meldingsutvekslingsstandard, MPI. Denne
kan benyttes over SCI ved hjelp av MPI-implementasjonen
ScaMPI.
ARMCI har også blitt implementert direkte over SCI ved
hjelp av ScaFun. Denne implementasjonen ser ut til å ha
størst potensiale når det kommer til selve
datakommunikasjonen og bruk av zero- eller one-copy
protokoller. Likefullt er faller implementasjonen i
denne oppgaven på den høye overheaden forbundet med
SCI-interrupter. Ved bruk av Hyper-Threading-teknologi
fra Intel og en nødvendig thread-safe
MPI-implementasjon, blir det vist en minimal
introduksjon av overhead gjennom bruk av MPI og
samtidig høy portabilitet