NAMD uitvoeren met Microsoft HPC Pack op Linux-rekenknooppunten in Azure
Belangrijk
Klassieke VM's worden op 1 maart 2023 buiten gebruik gesteld.
Als u IaaS-resources van ASM gebruikt, dient u de migratie uiterlijk 1 maart 2023 te voltooien. U wordt aangeraden al eerder over te schakelen om te kunnen profiteren van de vele functieverbeteringen in Azure Resource Manager.
Zie Uw IaaS-resources vóór 1 maart 2023 naar Azure Resource Manager migreren voor meer informatie.
In dit artikel wordt beschreven hoe u een HPC-workload (High Performance Computing) van Linux kunt uitvoeren op virtuele Azure-machines. Hier stelt u een Microsoft HPC Pack-cluster op Azure in met Linux-rekenknooppunten en voert u een NAMD-simulatie uit om de structuur van een groot biomoleculaire systeem te berekenen en te visualiseren.
Notitie
Azure heeft twee verschillende implementatiemodellen voor het maken en werken met resources: Resource Manager en klassiek. In dit artikel komen beide modellen aan de orde, maar u wordt aangeraden voor de meeste nieuwe implementaties het Resource Manager-model te gebruiken.
- NAMD (voor nanoscale Moleculair Dynamics-programma) is een parallel moleculair dynamics pakket dat is ontworpen voor high-performance simulatie van grote biomoleculaire systemen die tot miljoenen atomen bevatten. Voorbeelden van deze systemen zijn virussen, celstructuren en grote eiwitten. NAMD wordt geschaald naar honderden kernen voor typische simulaties en tot meer dan 500.000 kernen voor de grootste simulaties.
- Microsoft HPC Pack biedt functies voor het uitvoeren van grootschalige HPC en parallelle toepassingen in clusters van on-premises computers of virtuele Azure-machines. HpC Pack is oorspronkelijk ontwikkeld als oplossing voor Windows HPC-workloads en biedt nu ondersteuning voor het uitvoeren van Linux HPC-toepassingen op virtuele Linux-rekenknooppunten die zijn geïmplementeerd in een HPC Pack-cluster. Zie Aan de slag met Linux-rekenknooppunten in een HPC Pack-cluster in Azure voor een inleiding.
Vereisten
- HPC Pack-cluster met Linux-rekenknooppunten: implementeer een HPC Pack-cluster met Linux-rekenknooppunten in Azure met behulp van een Azure Resource Manager-sjabloon of een Azure PowerShell-script. Zie Aan de slag met Linux-rekenknooppunten in een HPC Pack-cluster in Azure voor de vereisten en stappen voor beide opties. Als u de optie powerShell-scriptimplementatie kiest, raadpleegt u het voorbeeldconfiguratiebestand in de voorbeeldbestanden aan het einde van dit artikel. Dit bestand configureert een HPC Pack-cluster op basis van Azure dat bestaat uit een Windows Server 2012 R2-hoofdknooppunt en vier grote CentOS 6.6-rekenknooppunten. Pas dit bestand zo nodig aan voor uw omgeving.
- NAMD-software en zelfstudiebestanden - NAMD-software voor Linux downloaden vanaf de NAMD-site (registratie vereist). Dit artikel is gebaseerd op NAMD-versie 2.10 en maakt gebruik van het Linux-x86_64 -archief (64-bits Intel/AMD met Ethernet). Download ook de NAMD-zelfstudiebestanden. De downloads zijn .tar-bestanden en u hebt een Windows-hulpprogramma nodig om de bestanden op het hoofdknooppunt van het cluster te extraheren. Als u de bestanden wilt extraheren, volgt u de instructies verderop in dit artikel.
- VMD (optioneel): als u de resultaten van uw NAMD-taak wilt bekijken, downloadt en installeert u het moleculaire visualisatieprogramma VMD op een computer van uw keuze. De huidige versie is 1.9.2. Zie de VMD-downloadsite om aan de slag te gaan.
Wederzijdse vertrouwensrelatie tussen rekenknooppunten instellen
Voor het uitvoeren van een taak tussen knooppunten op meerdere Linux-knooppunten moeten de knooppunten elkaar vertrouwen (door rsh of ssh). Wanneer u het HPC Pack-cluster maakt met het Microsoft HPC Pack IaaS-implementatiescript, wordt automatisch een permanente wederzijdse vertrouwensrelatie ingesteld voor het beheerdersaccount dat u opgeeft. Voor niet-beheerders die u in het domein van het cluster maakt, moet u tijdelijke wederzijdse vertrouwensrelatie tussen de knooppunten instellen wanneer een taak aan hen wordt toegewezen. Vernietig vervolgens de relatie nadat de taak is voltooid. Als u dit voor elke gebruiker wilt doen, geeft u een RSA-sleutelpaar op voor het cluster dat HPC Pack gebruikt om de vertrouwensrelatie tot stand te brengen. Volg de instructies.
Een RSA-sleutelpaar genereren
Het is eenvoudig om een RSA-sleutelpaar te genereren, dat een openbare sleutel en een persoonlijke sleutel bevat, door de opdracht Linux ssh-keygen uit te voeren.
Meld u aan bij een Linux-computer.
Voer de volgende opdracht uit:
ssh-keygen -t rsa
Notitie
Druk op Enter om de standaardinstellingen te gebruiken totdat de opdracht is voltooid. Voer hier geen wachtwoordzin in; druk op Enter wanneer u wordt gevraagd om een wachtwoord.
Wijzig de map in de map ~/.ssh. De persoonlijke sleutel wordt opgeslagen in id_rsa en de openbare sleutel in id_rsa.pub.
Het sleutelpaar toevoegen aan het HPC Pack-cluster
Maak via Extern bureaublad verbinding met de hoofdknooppunt-VM met behulp van de domeinreferenties die u hebt opgegeven bij het implementeren van het cluster (bijvoorbeeld hpc\clusteradmin). U beheert het cluster vanaf het hoofdknooppunt.
Gebruik standaard Windows Server-procedures om een domeingebruikersaccount te maken in het Active Directory-domein van het cluster. Gebruik bijvoorbeeld het hulpprogramma Active Directory User and Computers op het hoofdknooppunt. In de voorbeelden in dit artikel wordt ervan uitgegaan dat u een domeingebruiker met de naam hpcuser maakt in het hpclab-domein (hpclab\hpcuser).
Voeg de domeingebruiker toe aan het HPC Pack-cluster als clustergebruiker. Zie Clustergebruikers toevoegen of verwijderen voor instructies.
Maak een bestand met de naam C:\cred.xml en kopieer de RSA-sleutelgegevens ernaartoe. U vindt een voorbeeld in de voorbeeldbestanden aan het einde van dit artikel.
<ExtendedData> <PrivateKey>Copy the contents of private key here</PrivateKey> <PublicKey>Copy the contents of public key here</PublicKey> </ExtendedData>
Open een opdrachtprompt en voer de volgende opdracht in om de referenties voor het hpclab\hpcuser-account in te stellen. U gebruikt de parameter extendeddata om de naam door te geven van het C:\cred.xml bestand dat u hebt gemaakt voor de sleutelgegevens.
hpccred setcreds /extendeddata:c:\cred.xml /user:hpclab\hpcuser /password:<UserPassword>
Deze opdracht is voltooid zonder uitvoer. Nadat u de referenties voor de gebruikersaccounts hebt ingesteld die u nodig hebt om taken uit te voeren, slaat u het cred.xml bestand op een veilige locatie op of verwijdert u het.
Als u het RSA-sleutelpaar hebt gegenereerd op een van uw Linux-knooppunten, moet u de sleutels verwijderen nadat u deze hebt gebruikt. HPC Pack stelt geen wederzijdse vertrouwensrelatie in als er een bestaand id_rsa-bestand of id_rsa.pub-bestand wordt gevonden.
Belangrijk
Het is niet raadzaam om een Linux-taak uit te voeren als clusterbeheerder op een gedeeld cluster, omdat een taak die door een beheerder wordt ingediend, wordt uitgevoerd onder het hoofdaccount op de Linux-knooppunten. Een taak die is ingediend door een niet-administratorgebruiker, wordt uitgevoerd onder een lokaal Linux-gebruikersaccount met dezelfde naam als de taakgebruiker. In dit geval stelt HPC Pack wederzijdse vertrouwen in voor deze Linux-gebruiker op alle knooppunten die aan de taak zijn toegewezen. U kunt de Linux-gebruiker handmatig instellen op de Linux-knooppunten voordat u de taak uitvoert, of HPC Pack maakt de gebruiker automatisch wanneer de taak wordt verzonden. Als HPC Pack de gebruiker maakt, wordt deze door HPC Pack verwijderd nadat de taak is voltooid. Om de beveiligingsrisico's te verminderen, worden de sleutels verwijderd nadat de taak op de knooppunten is voltooid.
Een bestandsshare instellen voor Linux-knooppunten
Stel nu een SMB-bestandsshare in en koppel de gedeelde map op alle Linux-knooppunten zodat de Linux-knooppunten toegang hebben tot NAMD-bestanden met een gemeenschappelijk pad. Hieronder volgen stappen voor het koppelen van een gedeelde map op het hoofdknooppunt. Een share wordt aanbevolen voor distributies zoals CentOS 6.6 die momenteel geen ondersteuning bieden voor de Azure File-service. Als uw Linux-knooppunten ondersteuning bieden voor een Azure-bestandsshare, raadpleegt u Hoe u Azure File Storage gebruikt met Linux. Zie Aan de slag met Linux-rekenknooppunten in een HPC Pack-cluster in Azure voor aanvullende opties voor het delen van bestanden met HPC Pack.
Maak een map op het hoofdknooppunt en deel deze met iedereen door lees-/schrijfbevoegdheden in te stellen. In dit voorbeeld is \\CentOS66HN\Namd de naam van de map, waarbij CentOS66HN de hostnaam van het hoofdknooppunt is.
Maak een submap met de naam namd2 in de gedeelde map. Maak in namd2 een andere submap met de naam namdsample.
Pak de NAMD-bestanden in de map uit met behulp van een Windows-versie van tar of een ander Windows-hulpprogramma dat op .tar-archieven werkt.
- Pak het NAMD-tararchief uit naar \\CentOS66HN\Namd\namd2.
- Pak de zelfstudiebestanden uit onder \\CentOS66HN\Namd\namd2\namdsample.
Open een Windows PowerShell venster en voer de volgende opdrachten uit om de gedeelde map op de Linux-knooppunten te koppelen.
clusrun /nodegroup:LinuxNodes mkdir -p /namd2 clusrun /nodegroup:LinuxNodes mount -t cifs //CentOS66HN/Namd/namd2 /namd2 -o vers=2.1`,username=<username>`,password='<password>'`,dir_mode=0777`,file_mode=0777
Met de eerste opdracht maakt u een map met de naam /namd2 op alle knooppunten in de Groep LinuxNodes. Met de tweede opdracht wordt de gedeelde map //CentOS66HN/Namd/namd2 gekoppeld aan de map met dir_mode en file_mode bits ingesteld op 777. De gebruikersnaam en het wachtwoord in de opdracht moeten de referenties zijn van een gebruiker op het hoofdknooppunt.
Notitie
Het symbool ''' in de tweede opdracht is een escape-symbool voor PowerShell. '', betekent ',' (kommateken) is een onderdeel van de opdracht.
Een Bash-script maken om een NAMD-taak uit te voeren
Uw NAMD-taak heeft een knooppuntlijstbestand nodig voor charmrun om het aantal knooppunten te bepalen dat moet worden gebruikt bij het starten van NAMD-processen. U gebruikt een Bash-script waarmee het knooppuntlijstbestand wordt gegenereerd en charmrun wordt uitgevoerd met dit knooppuntlijstbestand. U kunt vervolgens een NAMD-taak indienen in HPC Cluster Manager die dit script aanroept.
Maak met behulp van een teksteditor naar keuze een Bash-script in de map /namd2 met de NAMD-programmabestanden en geef het hpccharmrun.sh een naam. Kopieer voor een snel concept het voorbeeld hpccharmrun.sh script dat aan het einde van dit artikel is opgegeven en ga naar Een NAMD-taak verzenden.
Tip
Sla uw script op als tekstbestand met einden van Linux-regels (alleen LF, niet CR LF). Dit zorgt ervoor dat deze correct wordt uitgevoerd op de Linux-knooppunten.
Hieronder vindt u details over wat dit bash-script doet.
Definieer enkele variabelen.
#!/bin/bash # The path of this script SCRIPT_PATH="$( dirname "${BASH_SOURCE[0]}" )" # Charmrun command CHARMRUN=${SCRIPT_PATH}/charmrun # Argument of ++nodelist NODELIST_OPT="++nodelist" # Argument of ++p NUMPROCESS="+p"
Haal knooppuntinformatie op uit de omgevingsvariabelen. $NODESCORES slaat een lijst met gesplitste woorden op uit $CCP_NODES_CORES. $COUNT is de grootte van $NODESCORES.
# Get node information from the environment variables NODESCORES=(${CCP_NODES_CORES}) COUNT=${#NODESCORES[@]}
De indeling voor de variabele $CCP_NODES_CORES is als volgt:
<Number of nodes> <Name of node1> <Cores of node1> <Name of node2> <Cores of node2>…
Deze variabele bevat het totale aantal knooppunten, knooppuntnamen en het aantal kernen op elk knooppunt dat aan de taak is toegewezen. Als de taak bijvoorbeeld 10 kernen nodig heeft om uit te voeren, is de waarde van $CCP_NODES_CORES vergelijkbaar met:
3 CENTOS66LN-00 4 CENTOS66LN-01 4 CENTOS66LN-03 2
Als de variabele $CCP_NODES_CORES niet is ingesteld, start u charmrun rechtstreeks. (Dit moet alleen gebeuren wanneer u dit script rechtstreeks op uw Linux-knooppunten uitvoert.)
if [ ${COUNT} -eq 0 ] then # CCP_NODES is_CORES is not found or is empty, so just run charmrun without nodelist arg. #echo ${CHARMRUN} $* ${CHARMRUN} $*
Of maak een knooppuntlijstbestand voor charmrun.
else # Create the nodelist file NODELIST_PATH=${SCRIPT_PATH}/nodelist_$$ # Write the head line echo "group main" > ${NODELIST_PATH} # Get every node name and number of cores and write into the nodelist file I=1 while [ ${I} -lt ${COUNT} ] do echo "host ${NODESCORES[${I}]} ++cpus ${NODESCORES[$(($I+1))]}" >> ${NODELIST_PATH} let "I=${I}+2" done
Voer charmrun uit met het knooppuntlijstbestand, haal de retourstatus op en verwijder het knooppuntlijstbestand aan het einde.
${CCP_NUMCPUS} is een andere omgevingsvariabele die is ingesteld door het hoofdknooppunt van het HPC Pack. Het aantal kernen dat aan deze taak is toegewezen, wordt opgeslagen. We gebruiken deze om het aantal processen voor charmrun op te geven.
# Run charmrun with nodelist arg #echo ${CHARMRUN} ${NUMPROCESS}${CCP_NUMCPUS} ${NODELIST_OPT} ${NODELIST_PATH} $* ${CHARMRUN} ${NUMPROCESS}${CCP_NUMCPUS} ${NODELIST_OPT} ${NODELIST_PATH} $* RTNSTS=$? rm -f ${NODELIST_PATH} fi
Sluit af met de charmrun retourstatus.
exit ${RTNSTS}
Hieronder vindt u de informatie in het knooppuntlijstbestand dat door het script wordt gegenereerd:
group main
host <Name of node1> ++cpus <Cores of node1>
host <Name of node2> ++cpus <Cores of node2>
…
Bijvoorbeeld:
group main
host CENTOS66LN-00 ++cpus 4
host CENTOS66LN-01 ++cpus 4
host CENTOS66LN-03 ++cpus 2
Een NAMD-taak verzenden
U bent nu klaar om een NAMD-taak in TE dienen in HPC Cluster Manager.
Maak verbinding met het hoofdknooppunt van het cluster en start HPC-clusterbeheer.
Controleer in Resource Management of de Linux-rekenknooppunten de status Online hebben. Als dat niet het is, selecteert u deze en klikt u op Online brengen.
Klik in Taakbeheer op Nieuwe taak.
Voer een naam in voor de taak, zoals hpccharmrun.
Selecteer op de pagina Taakdetails onder Taakresources het type resource als Node en stel het minimum in op 3. , voeren we de taak uit op drie Linux-knooppunten en elk knooppunt heeft vier kernen.
Klik op Taken bewerken in het linkernavigatievenster en klik vervolgens op Toevoegen om een taak aan de taak toe te voegen.
Stel op de pagina Taakdetails en I/O-omleiding de volgende waarden in:
Opdrachtregel -
/namd2/hpccharmrun.sh ++remote-shell ssh /namd2/namd2 /namd2/namdsample/1-2-sphere/ubq_ws_eq.conf > /namd2/namd2_hpccharmrun.log
Tip
De voorgaande opdrachtregel is één opdracht zonder regeleinden. De tekst wordt op verschillende regels onder de opdrachtregel weergegeven.
Werkmap - /namd2
Minimaal - 3
Notitie
U stelt de werkmap hier in omdat charmrun probeert te navigeren naar dezelfde werkmap op elk knooppunt. Als de werkmap niet is ingesteld, start HPC Pack de opdracht in een willekeurig benoemde map die is gemaakt op een van de Linux-knooppunten. Dit veroorzaakt de volgende fout op de andere knooppunten:
/bin/bash: line 37: cd: /tmp/nodemanager_task_94_0.mFlQSN: No such file or directory.
om dit probleem te voorkomen, geeft u een mappad op dat toegankelijk is voor alle knooppunten als de werkmap.
Klik op OK en klik vervolgens op Verzenden om deze taak uit te voeren.
HPC Pack verzendt de taak standaard als uw huidige aangemelde gebruikersaccount. In een dialoogvenster wordt u mogelijk gevraagd de gebruikersnaam en het wachtwoord in te voeren nadat u op Verzenden hebt geklikt.
Onder bepaalde omstandigheden onthoudt HPC Pack de gebruikersgegevens die u eerder invoert en wordt dit dialoogvenster niet weergegeven. Als u HPC Pack opnieuw wilt weergeven, voert u de volgende opdracht in bij een opdrachtprompt en verzendt u de taak.
hpccred delcreds
Het duurt enkele minuten voordat de taak is voltooid.
Zoek het taaklogboek op \\Namd\namd2\namd2_hpccharmrun.log en de uitvoerbestanden in \\Namd\namd2\namdsample\1-2-sphere.
Start VMD optioneel om de resultaten van uw taak weer te geven. De stappen voor het visualiseren van de NAMD-uitvoerbestanden (in dit geval een alomtegenwoordige eiwitmoleculen in een waterbol) vallen buiten het bereik van dit artikel. Zie de zelfstudie NAMD voor meer informatie.
Voorbeeldbestanden
Voorbeeld van EEN XML-configuratiebestand voor clusterimplementatie met PowerShell-script
<?xml version="1.0" encoding="utf-8" ?>
<IaaSClusterConfig>
<Subscription>
<SubscriptionName>Subscription-1</SubscriptionName>
<StorageAccount>mystorageaccount</StorageAccount>
</Subscription>
<Location>West US</Location>
<VNet>
<VNetName>MyVNet</VNetName>
<SubnetName>Subnet-1</SubnetName>
</VNet>
<Domain>
<DCOption>HeadNodeAsDC</DCOption>
<DomainFQDN>hpclab.local</DomainFQDN>
</Domain>
<Database>
<DBOption>LocalDB</DBOption>
</Database>
<HeadNode>
<VMName>CentOS66HN</VMName>
<ServiceName>MyHPCService</ServiceName>
<VMSize>Large</VMSize>
<EnableRESTAPI />
<EnableWebPortal />
</HeadNode>
<LinuxComputeNodes>
<VMNamePattern>CentOS66LN-%00%</VMNamePattern>
<ServiceName>MyLnxCNService</ServiceName>
<VMSize>Large</VMSize>
<NodeCount>4</NodeCount>
<ImageName>5112500ae3b842c8b9c604889f8753c3__OpenLogic-CentOS-66-20150325</ImageName>
</LinuxComputeNodes>
</IaaSClusterConfig>
Voorbeeldbestand cred.xml
<ExtendedData>
<PrivateKey>-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAxJKBABhnOsE9eneGHvsjdoXKooHUxpTHI1JVunAJkVmFy8JC
qFt1pV98QCtKEHTC6kQ7tj1UT2N6nx1EY9BBHpZacnXmknpKdX4Nu0cNlSphLpru
lscKPR3XVzkTwEF00OMiNJVknq8qXJF1T3lYx3rW5EnItn6C3nQm3gQPXP0ckYCF
Jdtu/6SSgzV9kaapctLGPNp1Vjf9KeDQMrJXsQNHxnQcfiICp21NiUCiXosDqJrR
AfzePdl0XwsNngouy8t0fPlNSngZvsx+kPGh/AKakKIYS0cO9W3FmdYNW8Xehzkc
VzrtJhU8x21hXGfSC7V0ZeD7dMeTL3tQCVxCmwIDAQABAoIBAQCve8Jh3Wc6koxZ
qh43xicwhdwSGyliZisoozYZDC/ebDb/Ydq0BYIPMiDwADVMX5AqJuPPmwyLGtm6
9hu5p46aycrQ5+QA299g6DlF+PZtNbowKuvX+rRvPxagrTmupkCswjglDUEYUHPW
05wQaNoSqtzwS9Y85M/b24FfLeyxK0n8zjKFErJaHdhVxI6cxw7RdVlSmM9UHmah
wTkW8HkblbOArilAHi6SlRTNZG4gTGeDzPb7fYZo3hzJyLbcaNfJscUuqnAJ+6pT
iY6NNp1E8PQgjvHe21yv3DRoVRM4egqQvNZgUbYAMUgr30T1UoxnUXwk2vqJMfg2
Nzw0ESGRAoGBAPkfXjjGfc4HryqPkdx0kjXs0bXC3js2g4IXItK9YUFeZzf+476y
OTMQg/8DUbqd5rLv7PITIAqpGs39pkfnyohPjOe2zZzeoyaXurYIPV98hhH880uH
ZUhOxJYnlqHGxGT7p2PmmnAlmY4TSJrp12VnuiQVVVsXWOGPqHx4S4f9AoGBAMn/
vuea7hsCgwIE25MJJ55FYCJodLkioQy6aGP4NgB89Azzg527WsQ6H5xhgVMKHWyu
Q1snp+q8LyzD0i1veEvWb8EYifsMyTIPXOUTwZgzaTTCeJNHdc4gw1U22vd7OBYy
nZCU7Tn8Pe6eIMNztnVduiv+2QHuiNPgN7M73/x3AoGBAOL0IcmFgy0EsR8MBq0Z
ge4gnniBXCYDptEINNBaeVStJUnNKzwab6PGwwm6w2VI3thbXbi3lbRAlMve7fKK
B2ghWNPsJOtppKbPCek2Hnt0HUwb7qX7Zlj2cX/99uvRAjChVsDbYA0VJAxcIwQG
TxXx5pFi4g0HexCa6LrkeKMdAoGAcvRIACX7OwPC6nM5QgQDt95jRzGKu5EpdcTf
g4TNtplliblLPYhRrzokoyoaHteyxxak3ktDFCLj9eW6xoCZRQ9Tqd/9JhGwrfxw
MS19DtCzHoNNewM/135tqyD8m7pTwM4tPQqDtmwGErWKj7BaNZARUlhFxwOoemsv
R6DbZyECgYEAhjL2N3Pc+WW+8x2bbIBN3rJcMjBBIivB62AwgYZnA2D5wk5o0DKD
eesGSKS5l22ZMXJNShgzPKmv3HpH22CSVpO0sNZ6R+iG8a3oq4QkU61MT1CfGoMI
a8lxTKnZCsRXU1HexqZs+DSc+30tz50bNqLdido/l5B4EJnQP03ciO0=
-----END RSA PRIVATE KEY-----</PrivateKey>
<PublicKey>ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDEkoEAGGc6wT16d4Ye+yN2hcqigdTGlMcjUlW6cAmRWYXLwkKoW3WlX3xAK0oQdMLqRDu2PVRPY3qfHURj0EEellpydeaSekp1fg27Rw2VKmEumu6Wxwo9HddXORPAQXTQ4yI0lWSerypckXVPeVjHetbkSci2foLedCbeBA9c/RyRgIUl227/pJKDNX2Rpqly0sY82nVWN/0p4NAyslexA0fGdBx+IgKnbU2JQKJeiwOomtEB/N492XRfCw2eCi7Ly3R8+U1KeBm+zH6Q8aH8ApqQohhLRw71bcWZ1g1bxd6HORxXOu0mFTzHbWFcZ9ILtXRl4Pt0x5Mve1AJXEKb username@servername;</PublicKey>
</ExtendedData>
Voorbeeldscript hpccharmrun.sh
#!/bin/bash
# The path of this script
SCRIPT_PATH="$( dirname "${BASH_SOURCE[0]}" )"
# Charmrun command
CHARMRUN=${SCRIPT_PATH}/charmrun
# Argument of ++nodelist
NODELIST_OPT="++nodelist"
# Argument of ++p
NUMPROCESS="+p"
# Get node information from ENVs
# CCP_NODES_CORES=3 CENTOS66LN-00 4 CENTOS66LN-01 4 CENTOS66LN-03 4
NODESCORES=(${CCP_NODES_CORES})
COUNT=${#NODESCORES[@]}
if [ ${COUNT} -eq 0 ]
then
# If CCP_NODES_CORES is not found or is empty, just run the charmrun without nodelist arg.
#echo ${CHARMRUN} $*
${CHARMRUN} $*
else
# Create the nodelist file
NODELIST_PATH=${SCRIPT_PATH}/nodelist_$$
# Write the head line
echo "group main" > ${NODELIST_PATH}
# Get every node name & cores and write into the nodelist file
I=1
while [ ${I} -lt ${COUNT} ]
do
echo "host ${NODESCORES[${I}]} ++cpus ${NODESCORES[$(($I+1))]}" >> ${NODELIST_PATH}
let "I=${I}+2"
done
# Run the charmrun with nodelist arg
#echo ${CHARMRUN} ${NUMPROCESS}${CCP_NUMCPUS} ${NODELIST_OPT} ${NODELIST_PATH} $*
${CHARMRUN} ${NUMPROCESS}${CCP_NUMCPUS} ${NODELIST_OPT} ${NODELIST_PATH} $*
RTNSTS=$?
rm -f ${NODELIST_PATH}
fi
exit ${RTNSTS}