Windows HPC Cluster & WCF
Obsah prezentace Windows HPC Cluster (hpc.cs.vsb.cz) Scheduler API Windows Communication Foundation Demo – WCF MandelBrot Set
Windows HPC vsb.cz Konfigurace clusteru – 1 x Head node (HPC-MASTER) CPU – 2x Intel Xeon 2.00 GHz RAM – 4090 MB Network – 2x 1 Gbps Ethernet – Připojen k vnější síti (TUONET) a privání síti (Compute nodes) – 3 x Compute node (HPC-NODE0x) CPU – 2x Intel Xeon 2.5 GHz RAM – MB Network – 2x 1 Gbps Ethernet – Připojen pouze k privátní síti OS Windows Server 2008 Enterprise + HPC Pack
Windows HPC Cluster - topologie
Scheduler API Umožňuje programátorům programově řídit práci clusteru Alokace zdrojů pro výpočty Příprava úloh Spouštění úloh using Microsoft.Hpc.Scheduler; class Program { static void Main() { IScheduler store = new Scheduler(); store.Connect(“localhost”); ISchedulerJob job = store.CreateJob(); job.AutoCalculateMax = true; job.AutoCalculateMin = true; ISchedulerTask task = job.CreateTask(); task.CommandLine = "ping n *"; task.IsParametric = true; task.StartValue = 1; task.EndValue = 10000; task.IncrementValue = 1; task.MinimumNumberOfCores = 1; task.MaximumNumberOfCores = 1; job.AddTask(task); }
6 Node 1 S0 P0 P1 P2 P3 S1 P0 P1 P2 P3 S2 P0 P1 P2 P3 S3 P0 P1 P2 P3 Node 2 S0 P0 P1 P2 P3 S1 P0 P1 P2 P3 S2 P0 P1 P2 P3 S3 P0 P1 P2 P3 J1 J3 J2 J1: /numsockets:3 /exclusive: false J3: /numcores:4 /exclusive: false J2: /numnodes:1 Možnosti alokace výpočetních zdrojů na Windows HPC Clusteru Node/Socket/Core J3 J1
WCF - Windows Communication Foundation KlientSlužba Zpráva ABCABC ABC AddressBindingContract (Kam) (Jak) (Co)
Možnosti výměn zpráv One-way (datagram) Odeslání zprávy bez odpovědi Request/ Reply Odeslání zprávy, přijetí jiné zprávy jako odpovědi Odesílatel Příjemce Odesílatel Duplex Odesílatel a příjemce si mohou vyměňovat více zpráv Odesílatel Příjemce
Windows HPC vsb.cz Konfigurace clusteru – 1 x Head Node CPU – 2x Intel Xeon 2.00 GHz RAM – 4090 MB Network – 2x 1 Gbps Ethernet – Připojení k vnější síti + připojení k privátní síti – 3 x Compute Node CPU – 2x Intel Xeon 2.50 GHz RAM – MB Network – 2x 1 Gbps Ethernet – Připojení pouze k privátní síti Průběh výpočtu na clusteru Head Node WCF Brokers WCF Brokers Head node 1. Uživatel odešle Job. 2. Session Manager startuje WCF Broker job a WCF Service jobs 4. Požadavky 6. Odpovědi Compute Nodes Klientská stanice 5. Odpovědi 3. Požadavky
Architektura HPC + WCF Track service resource usage Run service as the user Restart upon failure Support application tracing Balance the requests Grow & shrink service pool Provide WS Interoperability Node heatmaps Perfmon Event logs Job status Service usage report Tracing logs Backend Admin User Control Path Data path
Vývoj WCF HPC aplikace Vytvoření služby – Vytvoření ClassLibrary definující Contract – Vytvoření *.config souboru Publikování služby – Publikování na každý node – Publikování na sdílené úložiště – Hybrid Využití služby
Vývoj WCF HPC aplikace Visual Studio Vývoj Publikování Klientská apl DLL služeb Spouštění Vývojáři Administrátoři Vývojové (testovací) prostředí Produkční (ostré) prostředí Uživatelé Instalace aplikace Kopírování DLL služeb Registrace Service Publikování služby
Vytvoření WCF služby [ServiceContract] public interface IMyInterface { [FaultContract(typeof(MyFault)] [OperationContract] public void MyMethod(MyDataContract); } [ServiceContract] public interface IMyInterface { [FaultContract(typeof(MyFault)] [OperationContract] public void MyMethod(MyDataContract); } [ServiceBehavior(InstanceContextMode=Single] public class MyService: IMyInterface { public void MyMethod(MyDataContract){…} } [ServiceBehavior(InstanceContextMode=Single] public class MyService: IMyInterface { public void MyMethod(MyDataContract){…} } <endpoint name=“MyService” address=“MyAddress” binding=“netTcpBinding” contract=“IMyInterface” /> <endpoint name=“MyService” address=“MyAddress” binding=“netTcpBinding” contract=“IMyInterface” /> Address + Binding + Contract = Endpoint Service Contract Definition Service Type [DataContract] public class MyDataContract {[DataMember] public string MyField; } [DataContract] public class MyDataContract {[DataMember] public string MyField; } Data Contract Definition
14 for (i = 0; i < 100,000,000; i++) { r[i] = worker.DoWork(dataSet[i]); } reduce ( r ); Paralelizace WCF aplikace Session session = new session(startInfo); PricingClient client = new PricingClient( binding, session.EndpointAddress); for (i = 0; i < 100,000,000, i++) { client.BeginDoWork(dataset[i], new AsyncCallback(callback), i) } void callback(IAsyncResult handle) { r[inx++] = client.EndDoWork(handle); } reduce ( r ); Sequential Parallel
Publikování služby Rozkopírování *.dll služby na každý node nebo na sdílené úložiště – C:\Services Registrace služby (zkopírování *.config) – Xcopy “MyService.config” “%CCP_HOME%ServiceRegistration” C:\Program Files\Microsoft HPC Pack\ServiceRegistration
WCF MandelBrot Set
Zdroje Microsoft HPC Web – – Windows HPC Community –
© 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION. DĚKUJI ZA POZORNOST