Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Vanaf LSF 10.1 FixPack 9 (10.1.0.9) is Azure CycleCloud een systeemeigen provider voor Resource Connector. IBM biedt documentatie. Deze resources bieden instructies voor het configureren van het primaire LSF-knooppunt om verbinding te maken met CycleCloud.
LSF is een product met een IBM-licentie. Als u LSF in CycleCloud wilt gebruiken, hebt u een rechtenbestand nodig dat IBM aan hun klanten biedt.
Notitie
- LSF is een product met een IBM-licentie. Als u LSF in CycleCloud wilt gebruiken, hebt u een rechtenbestand nodig dat IBM aan haar klanten biedt. Voeg de binaire LSF-bestanden en het rechtenbestand toe aan de
blobs/map om het volledig geautomatiseerde cluster of de opbouwfunctie voor VM-installatiekopieën in dit project te gebruiken. - Als u het volledig geautomatiseerde cluster of de opbouwfunctie voor VM-installatiekopieën in dit project wilt gebruiken, voegt u de binaire LSF-bestanden en het rechtenbestand toe aan de
blobs/map. - LSF is afhankelijk van het
edpakket dat niet standaard is geïnstalleerd in recente versies van de Azure HPC-installatiekopieën. Als uw geselecteerde VM-imageedniet bevat, adviseren we om cloud-init te gebruiken om het pakket te installeren. Op RedHat Enterprise Linux, AlmaLinux of CentOS kunt u bijvoorbeeld het volgende toevoegen aan uw clustersjabloon (of in de CycleCloud-GUI via het dialoogvenster Cluster bewerken):
[node defaults]
CloudInit = '''#!/bin/bash
yum install -y ed
'''
Ondersteunde scenario's van het CycleCloud LSF-clustertype
LSF kan hosts van Azure 'lenen' om taken op een on-demand manier uit te voeren en zo nodig hosts toe te voegen en te verwijderen. Het LSF-clustertype is flexibel voor het afhandelen van verschillende scenario's in één cluster:
- Taken met hoge doorvoer (CPU & GPU)
- Nauw gekoppeld (MPI, CPU & GPU)
- Lage prioriteit
U kunt deze scenario's afhandelen door meerdere knooppuntmatrices en LSF-eigenschappen te configureren. CycleCloud configureert de knooppuntmatrices vooraf. De juiste configuratie van LSF maakt de verschillende taakscenario's mogelijk.
Wanneer u LSF configureert in overeenstemming met deze aanbevelingen, kunt u resourcevereisten bsub op de volgende manier gebruiken-R:
Gebruik de placementGroup resource om een taak uit te voeren met een verbonden InfiniBand-netwerk.
-R "span[ptile=2] select[nodearray=='ondemandmpi' && cyclecloudmpi] same[placementgroup]"
Voor GPU's wordt u aangeraden LSF-ondersteuning te gebruiken voor uitgebreide GPU-syntaxis. Normaal gesproken voegt u deze kenmerken toe aan lsf.conf: LSB_GPU_NEW_SYNTAX=extend en LSF_GPU_AUTOCONFIG=Y. Als ondersteuning voor uitgebreide syntaxis is ingeschakeld, gebruikt u de placementGroup samen met -gpu om een nauw gekoppelde taak uit te voeren met GPU-versnelling.
-R "span[ptile=1] select[nodearray=='gpumpi' && cyclecloudmpi] same[placementgroup]" -gpu "num=2:mode=shared:j_exclusive=yes"
Voer op een parallelle manier GPU-taken uit.
-R "select[nodearray=='gpu' && !cyclecloudmpi && !cyclecloudlowprio]" -gpu "num=1:mode=shared:j_exclusive=yes"
Voer een grote burst-taak uit op VM's met lage prioriteit.
-J myArr[1000] -R "select[nodearray=='lowprio' && cyclecloudlowprio]"
LSF configureren voor het type CycleCloud LSF-cluster
Als u deze scenario's wilt inschakelen, voegt u gedeelde resourcetypen toe aan lsb.shared.
cyclecloudhost Boolean () () (instances from Azure CycleCloud)
cyclecloudmpi Boolean () () (instances that support MPI placement)
cyclecloudlowprio Boolean () () (instances that low priority / interruptible from Azure CycleCloud)
nodearray String () () (nodearray from CycleCloud)
placementgroup String () () (id used to note locality of machines)
instanceid String () () (unique host identifier)
Mogelijk kunt u dit weglaten cyclecloudlowprio, maar het biedt een extra controle dat taken worden uitgevoerd op hun beoogde VM-tenancy.
LSF-providersjabloon voor CycleCloud
De LSF CycleCloud-provider maakt configuraties beschikbaar via de providersjabloon. Deze configuraties vormen een subset van de volledige configuratie van de nodearray.
Hier volgt een voorbeeld van een LSF-sjabloon voor Cyclecloud vanuit cyclecloudprov_templates.json:
{
"templateId": "ondemand",
"attributes": {
"type": ["String", "X86_64"],
"ncores": ["Numeric", "44"],
"ncpus": ["Numeric", "44"],
"mem": ["Numeric", "327830"],
"cyclecloudhost": ["Boolean", "1"],
"nodearray" : ["String", "ondemand"]
},
"priority" : 250,
"nodeArray": "ondemand",
"vmType" : "Standard_HC44rs",
"subnetId" : "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/azurecyclecloud-lab/providers/Microsoft.Network/virtualNetworks/hpc-network/subnets/compute",
"imageId" : "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/azurecyclecloud-lab/providers/Microsoft.Compute/images/lsf-worker-a4bc2f10",
"maxNumber": 500,
"keyPairLocation": "/opt/cycle_server/.ssh/id_rsa_admin.pem",
"customScriptUri": "https://aka.ms/user_data.sh",
"userData": "nodearray_name=ondemand"
}
LSF-sjabloonkenmerken voor CycleCloud
In de sjabloon van de LSF-provider worden niet alle nodearray-attributen weergegeven. Deze kenmerken worden beschouwd als overschrijvingen van de configuratie van de CycleCloud-nodearray. De enige vereiste LSF-sjabloonkenmerken zijn:
templateIdnodeArray
U kunt andere kenmerken weglaten of ze zijn mogelijk helemaal niet nodig. CycleCloud leidt de volgende attributen af:
-
imageId- Azure VM Image, bijvoorbeeld"/subscriptions/xxxxxxxx-xxxx-xxxx-xxx-xxxxxxxxxxxx/resourceGroups/my-images-rg/providers/Microsoft.Compute/images/lsf-execute-201910230416-80a9a87f"- override voor CycleCloud-clusterconfiguratie. -
subnetId- Azure-subnet, bijvoorbeeld"resource_group/vnet/subnet": overschrijven voor cycleCloud-clusterconfiguratie. -
vmType- bijvoorbeeld"Standard_HC44rs": overschrijven voor cycleCloud-clusterconfiguratie. -
keyPairLocation- bijvoorbeeld"~/.ssh/id_rsa_beta": overschrijven voor cycleCloud-clusterconfiguratie. - customScriptUri - bijvoorbeeld:
http://10.1.0.4/user_data.sh. Geen script als dit niet is opgegeven. - userData - bijvoorbeeld
"nodearray_name=gpumpi;placement_group_id=gpumpipg1". Leeg als dit niet is opgegeven.
Een opmerking over PlacementGroups
Azure-datacenters beschikken over infiniBand-netwerkmogelijkheden voor HPC-scenario's. In tegenstelling tot het normale Ethernet hebben deze netwerken een beperkte spanwijdte. 'PlacementGroups' beschrijft de InfiniBand-netwerkbreedten. Als VM's zich in dezelfde plaatsingsgroep bevinden en speciale VM-typen met InfiniBand zijn, delen ze een InfiniBand-netwerk.
Deze plaatsingsgroepen vereisen speciale verwerking in LSF en CycleCloud.
Hier volgt een voorbeeld van een LSF-sjabloon voor CycleCloud vanuit cyclecloudprov_templates.json:
{
"templateId": "ondemandmpi-1",
"attributes": {
"nodearray": ["String", "ondemandmpi" ],
"zone": [ "String", "westus2"],
"mem": [ "Numeric", 8192.0],
"ncpus": [ "Numeric", 2],
"cyclecloudmpi": [ "Boolean", 1],
"placementgroup": [ "String", "ondemandmpipg1"],
"ncores": [ "Numeric", 2],
"cyclecloudhost": [ "Boolean", 1],
"type": [ "String", "X86_64"],
"cyclecloudlowprio": [ "Boolean", 0]
},
"maxNumber": 40,
"nodeArray": "ondemandmpi",
"placementGroupName": "ondemandmpipg1",
"priority": 448,
"customScriptUri": "https://aka.ms/user_data.sh",
"userData" : "nodearray_name=ondemandmpi;placement_group_id=ondemandmpipg1"
}
Het placementGroupName in dit bestand kan alles zijn, maar bepaalt de naam van de placementGroup in CycleCloud. Alle knooppunten die vanuit deze sjabloon van CycleCloud zijn geleend, bevinden zich in deze placementGroup en delen een IB-netwerk als ze vm's met InfiniBand zijn ingeschakeld.
De placementGroupName eigenschap komt overeen met het hostkenmerk placementgroup. Deze match is bewust en noodzakelijk. Stel de placement_group_id eigenschap in userData voor gebruik in user_data.sh bij het starten van de host.
Het ondemandmpi kenmerk lijkt misschien overbodig, maar wordt gebruikt om te voorkomen dat deze taak overeenkomt met hosts waar placementGroup niet is gedefinieerd.
Wanneer u plaatsingsgroepen gebruikt, bepaalt de waarde van de Azure.MaxScaleSetSize eigenschap de maximale grootte van de plaatsingsgroep.
Deze eigenschap beperkt indirect het aantal knooppunten dat u aan een plaatsingsgroep kunt toevoegen, maar LSF beschouwt dit niet. Stel MaxNumber van de LSF-sjabloon gelijk aan Azure.MaxScaleSetSize in de clustersjabloon.
user_data.sh
De sjabloon bevat twee kenmerken voor het uitvoeren van een user_data.sh script: customScriptUri en userData. Deze kenmerken zijn de URI- en aangepaste omgevingsvariabelen van het door de gebruiker beheerde script dat wordt uitgevoerd bij het opstarten van knooppunten. De customScriptUri verificatie kan niet worden vereist omdat een anonieme CURL-opdracht het script downloadt. Gebruik dit script om het volgende te doen:
- Configureer de LSF-daemons voor werkers, met name
LSF_LOCAL_RESOURCESenLSF_MASTER_LIST.- Als
LSF_TOPzich in een gedeeld bestandssysteem bevindt, is het handig om een lokale kopie vanlsf.confte maken en de variabeleLSF_ENVDIRin te stellen voordat u de daemons start.
- Als
- Starten de demonen lim, res en sbatch.
De CycleCloud-provider stelt enkele standaardomgevingsvariabelen in.
- rc_rekening
- template_id
- providerNaam
- clusternaam
- cyclecloud_nodeid (stel deze variabele in op
instanceIdhulpbron)
Andere variabelen voor gebruikersgegevens die nuttig kunnen zijn bij het beheren van resources in de CycleCloud-provider zijn:
- nodearray_name
- plaatsingsgroep_id
Notitie
Hoewel Windows een officieel ondersteund LSF-platform is, biedt CycleCloud momenteel geen ondersteuning voor het uitvoeren van LSF in Windows.