450 likes | 610 Views
VTL02. Axum. A .NET Language for Safe and Scalable Concurrency. Niklas Gustafsson Software Architect Parallel Computing Platform. The Parallel Glass Ceiling. Practices not sustainable Complexity Performance Scalability Switching to new models
E N D
VTL02 Axum A .NET Language for Safe and Scalable Concurrency NiklasGustafsson Software Architect Parallel Computing Platform
The Parallel Glass Ceiling Practices not sustainable Complexity Performance Scalability Switching to new models Will require rethink: programmers + platform vendors Will take time Strong tool support needed to rein in costs
Shared Memory Sharing Basic model: Threads / tasks Common address space Exchange data in memory cells Synchronize via CAS in memory cells Take locks to protect data
Unpartitioned State A Huge Mess Unstated, indirect, subtle data dependencies Documentation quickly out of sync with reality Requires enormous discipline Process scale Performance Overlapping working sets + false sharing Cache coherence traffic will dominate Technology scale
Shared Memory Implicit component dependencies 0x0001a3f0:
Shared Memory As core count grows…
Shared Memory … we have to add components
Shared Memory … and more…
Shared Memory … and more…
Shared Memory … and more…
Shared Memory … until all we see is a tangled mess…
Shared Memory … and how it’s going to hurt us…
Shared Memory … unless, of course, we’re blissfully unaware
Shared Memory However, the reality is likely this…
Shared Memory … so we document it… Sedutperspiciatisundeomnisistenatus error sit voluptatemaccusantiumdoloremquelaudantium, totamremaperiam, eaqueipsa quae abilloinventoreveritatis et quasi architectobeatae vitae dicta suntexplicabo. Nemoenimipsamvoluptatemquiavoluptas sit aspernaturautoditaut fugit, sedquiaconsequunturmagnidoloreseos qui rationevoluptatemsequinesciunt. Nequeporroquisquamest, qui doloremipsumquia dolor sit amet, consectetur, adipiscivelit, sedquia non numquameiusmoditemporainciduntutlabore et doloremagnamaliquamquaeratvoluptatem. Utenim ad minima veniam, quis nostrum exercitationemullamcorporissuscipitlaboriosam, nisi utaliquid ex ea commodiconsequatur? Quisautemveleumiurereprehenderit qui in ea voluptatevelitesse quam nihilmolestiaeconsequatur, velillum qui doloremeumfugiat quo voluptasnullapariatur? Loremipsum dolor sit amet, consecteturadipisicingelit, sed do eiusmodtemporincididuntutlabore et dolore magna aliqua. Utenim ad minim veniam, quisnostrud exercitation ullamcolaboris nisi utaliquip ex ea commodoconsequat. Duisauteirure dolor in reprehenderit in voluptatevelitessecillumdoloreeufugiatnullapariatur. Excepteursintoccaecatcupidatat non proident, sunt in culpa qui officiadeseruntmollitanim id estlaborum.. Sedutperspiciatisundeomnisistenatus error sit voluptatemaccusantiumdoloremquelaudantium, totamremaperiam, eaqueipsa quae abilloinventoreveritatis et quasi architectobeatae vitae dicta suntexplicabo. Nemoenimipsamvoluptatemquiavoluptas sit aspernaturautoditaut fugit, sedquiaconsequunturmagnidoloreseos qui rationevoluptatemsequinesciunt. Nequeporroquisquamest, qui doloremipsumquia dolor sit amet, consectetur, adipiscivelit, sedquia non numquameiusmoditemporainciduntutlabore et doloremagnamaliquamquaeratvoluptatem. Utenim ad minima veniam, quis nostrum exercitationemullamcorporissuscipitlaboriosam, nisi utaliquid ex ea commodiconsequatur? Quisautemveleumiurereprehenderit qui in ea voluptatevelitesse quam nihilmolestiaeconsequatur, velillum qui doloremeumfugiat quo voluptasnullapariatur? Sedutperspiciatisundeomnisistenatus error sit voluptatemaccusantiumdoloremquelaudantium, totamremaperiam, eaqueipsa quae abilloinventoreveritatis et quasi architectobeatae vitae dicta suntexplicabo. Nemoenimipsamvoluptatemquiavoluptas sit aspernaturautoditaut fugit, sedquiaconsequunturmagnidoloreseos qui rationevoluptatemsequinesciunt. Nequeporroquisquamest, qui doloremipsumquia dolor sit amet, consectetur, adipiscivelit, sedquia non numquameiusmoditemporainciduntutlabore et doloremagnamaliquamquaeratvoluptatem. Utenim ad minima veniam, quis nostrum exercitationemullamcorporissuscipitlaboriosam, nisi utaliquid ex ea commodiconsequatur? Quisautemveleumiurereprehenderit qui in ea voluptatevelitesse quam nihilmolestiaeconsequatur, velillum qui doloremeumfugiat quo voluptasnullapariatur? Loremipsum dolor sit amet, consecteturadipisicingelit, sed do eiusmodtemporincididuntutlabore et dolore magna aliqua. Utenim ad minim veniam, quisnostrud exercitation ullamcolaboris nisi utaliquip ex ea commodoconsequat. Duisauteirure dolor in reprehenderit in voluptatevelitessecillumdoloreeufugiatnullapariatur. Excepteursintoccaecatcupidatat non proident, sunt in culpa qui officiadeseruntmollitanim id estlaborum.. Sedutperspiciatisundeomnisistenatus error sit voluptatemaccusantiumdoloremquelaudantium, totamremaperiam, eaqueipsa quae abilloinventoreveritatis et quasi architectobeatae vitae dicta suntexplicabo. Nemoenimipsamvoluptatemquiavoluptas sit aspernaturautoditaut fugit, sedquiaconsequunturmagnidoloreseos qui rationevoluptatemsequinesciunt. Nequeporroquisquamest, qui doloremipsumquia dolor sit amet, consectetur, adipiscivelit, sedquia non numquameiusmoditemporainciduntutlabore et doloremagnamaliquamquaeratvoluptatem. Utenim ad minima veniam, quis nostrum exercitationemullamcorporissuscipitlaboriosam, nisi utaliquid ex ea commodiconsequatur? Quisautemveleumiurereprehenderit qui in ea voluptatevelitesse quam nihilmolestiaeconsequatur, velillum qui doloremeumfugiat quo voluptasnullapariatur? Loremipsum dolor sit amet, Consecteturadipisicingelit, sed do eiusmodtemporincididuntutlabore et dolore magna aliqua. Utenim ad minim veniam, quisnostrud exercitation ullamcolaboris nisi utaliquip ex ea commodoconsequat. Duisauteirure dolor in reprehenderit in voluptatevelitessecillumdoloreeufugiatnullapariatur. Excepteursintoccaecatcupidatat non proident, sunt in culpa qui officiadeseruntmollitanim id estlaborum.. Loremipsum dolor sit amet, consecteturadipisicingelit, sed do eiusmodtemporincididuntutlabore et dolore magna aliqua. Utenim ad minim veniam, quisnostrud exercitation ullamcolaboris nisi utaliquip ex ea commodoconsequat. Duisauteirure dolor in reprehenderit in voluptatevelitessecillumdoloreeufugiatnullapariatur. Excepteursintoccaecatcupidatat non proident, sunt in culpa qui officiadeseruntmollitanim id estlaborum.. Sedutperspiciatisundeomnisistenatus error sit voluptatemaccusantiumdoloremquelaudantium, totamremaperiam, eaqueipsa quae abilloinventoreveritatis et quasi architectobeatae vitae dicta suntexplicabo. Nemoenimipsamvoluptatemquiavoluptas sit aspernaturautoditaut fugit, sedquiaconsequunturmagnidoloreseos qui rationevoluptatemsequinesciunt. Nequeporroquisquamest, qui doloremipsumquia dolor sit amet, consectetur, adipiscivelit, sedquia non numquameiusmoditemporainciduntutlabore et doloremagnamaliquamquaeratvoluptatem. Utenim ad minima veniam, quis nostrum exercitationemullamcorporissuscipitlaboriosam, nisi utaliquid ex ea commodiconsequatur? Quisautemveleumiurereprehenderit qui in ea voluptatevelitesse quam nihilmolestiaeconsequatur, velillum qui doloremeumfugiat quo voluptasnullapariatur? Loremipsum dolor sit amet, consecteturadipisicingelit, sed do eiusmodtemporincididuntutlabore et dolore magna aliqua. Utenim ad minim veniam, quisnostrud exercitation ullamcolaboris nisi utaliquip ex ea commodoconsequat. Duisauteirure dolor in reprehenderit in voluptatevelitessecillumdoloreeufugiatnullapariatur. Excepteursintoccaecatcupidatat non proident, sunt in culpa qui officiadeseruntmollitanim id estlaborum.. Sedutperspiciatisundeomnisistenatus error sit voluptatemaccusantiumdoloremquelaudantium, totamremaperiam, eaqueipsa quae abilloinventoreveritatis et quasi architectobeatae vitae dicta suntexplicabo. Nemoenimipsamvoluptatemquiavoluptas sit aspernaturautoditaut fugit, sedquiaconsequunturmagnidoloreseos qui rationevoluptatemsequinesciunt. Nequeporroquisquamest, qui doloremipsumquia dolor sit amet, consectetur, adipiscivelit, sedquia non numquameiusmoditemporainciduntutlabore et doloremagnamaliquamquaeratvoluptatem. Utenim ad minima veniam, quis nostrum exercitationemullamcorporissuscipitlaboriosam, nisi utaliquid ex ea commodiconsequatur? Quisautemveleumiurereprehenderit qui in ea voluptatevelitesse quam nihilmolestiaeconsequatur, velillum qui doloremeumfugiat quo voluptasnullapariatur? Sedutperspiciatisundeomnisistenatus error sit voluptatemaccusantiumdoloremquelaudantium, totamremaperiam, eaqueipsa quae abilloinventoreveritatis et quasi architectobeatae vitae dicta suntexplicabo. Nemoenimipsamvoluptatemquiavoluptas sit aspernaturautoditaut fugit, sedquiaconsequunturmagnidoloreseos qui rationevoluptatemsequinesciunt. Nequeporroquisquamest, qui doloremipsumquia dolor sit amet, consectetur, adipiscivelit, sedquia non numquameiusmoditemporainciduntutlabore et doloremagnamaliquamquaeratvoluptatem. Utenim ad minima veniam, quis nostrum exercitationemullamcorporissuscipitlaboriosam, nisi utaliquid ex ea commodiconsequatur? Quisautemveleumiurereprehenderit qui in ea voluptatevelitesse quam nihilmolestiaeconsequatur, velillum qui doloremeumfugiat quo voluptasnullapariatur? Loremipsum dolor sit amet, consecteturadipisicingelit, sed do eiusmodtemporincididuntutlabore et dolore magna aliqua. Utenim ad minim veniam, quisnostrud exercitation ullamcolaboris nisi utaliquip ex ea commodoconsequat. Duisauteirure dolor in reprehenderit in voluptatevelitessecillumdoloreeufugiatnullapariatur. Excepteursintoccaecatcupidatat non proident, sunt in culpa qui officiadeseruntmollitanim id estlaborum.. Sedutperspiciatisundeomnisistenatus error sit voluptatemaccusantiumdoloremquelaudantium, totamremaperiam, eaqueipsa quae abilloinventoreveritatis et quasi architectobeatae vitae dicta suntexplicabo. Nemoenimipsamvoluptatemquiavoluptas sit aspernaturautoditaut fugit, sedquiaconsequunturmagnidoloreseos qui rationevoluptatemsequinesciunt. Nequeporroquisquamest, qui doloremipsumquia dolor sit amet, consectetur, adipiscivelit, sedquia non numquameiusmoditemporainciduntutlabore et doloremagnamaliquamquaeratvoluptatem. Utenim ad minima veniam, quis nostrum exercitationemullamcorporissuscipitlaboriosam, nisi utaliquid ex ea commodiconsequatur? Quisautemveleumiurereprehenderit qui in ea voluptatevelitesse quam nihilmolestiaeconsequatur, velillum qui doloremeumfugiat quo voluptasnullapariatur? Loremipsum dolor sit amet, consecteturadipisicingelit, sed do eiusmodtemporincididuntutlabore et dolore magna aliqua. Utenim ad minim veniam, quisnostrud exercitation ullamcolaboris nisi utaliquip ex ea commodoconsequat. Duisauteiruredolor in reprehenderit in voluptatevelitessecillumdoloreeufugiatnullapariatur. Excepteursintoccaecatcupidatat non proident, sunt in culpa qui officiadeseruntmollitanim id estlaborum..
Shared Memory … but a bug is fixed… Sedutperspiciatisundeomnisistenatus error sit voluptatemaccusantiumdoloremquelaudantium, totamremaperiam, eaqueipsa quae abilloinventoreveritatis et quasi architectobeatae vitae dicta suntexplicabo. Nemoenimipsamvoluptatemquiavoluptas sit aspernaturautoditaut fugit, sedquiaconsequunturmagnidoloreseos qui rationevoluptatemsequinesciunt. Nequeporroquisquamest, qui doloremipsumquia dolor sit amet, consectetur, adipiscivelit, sedquia non numquameiusmoditemporainciduntutlabore et doloremagnamaliquamquaeratvoluptatem. Utenim ad minima veniam, quis nostrum exercitationemullamcorporissuscipitlaboriosam, nisi utaliquid ex ea commodiconsequatur? Quisautemveleumiurereprehenderit qui in ea voluptatevelitesse quam nihilmolestiaeconsequatur, velillum qui doloremeumfugiat quo voluptasnullapariatur? Loremipsum dolor sit amet, consecteturadipisicingelit, sed do eiusmodtemporincididuntutlabore et dolore magna aliqua. Utenim ad minim veniam, quisnostrud exercitation ullamcolaboris nisi utaliquip ex ea commodoconsequat. Duisauteirure dolor in reprehenderit in voluptatevelitessecillumdoloreeufugiatnullapariatur. Excepteursintoccaecatcupidatat non proident, sunt in culpa qui officiadeseruntmollitanim id estlaborum.. Sedutperspiciatisundeomnisistenatus error sit voluptatemaccusantiumdoloremquelaudantium, totamremaperiam, eaqueipsa quae abilloinventoreveritatis et quasi architectobeatae vitae dicta suntexplicabo. Nemoenimipsamvoluptatemquiavoluptas sit aspernaturautoditaut fugit, sedquiaconsequunturmagnidoloreseos qui rationevoluptatemsequinesciunt. Nequeporroquisquamest, qui doloremipsumquia dolor sit amet, consectetur, adipiscivelit, sedquia non numquameiusmoditemporainciduntutlabore et doloremagnamaliquamquaeratvoluptatem. Utenim ad minima veniam, quis nostrum exercitationemullamcorporissuscipitlaboriosam, nisi utaliquid ex ea commodiconsequatur? Quisautemveleumiurereprehenderit qui in ea voluptatevelitesse quam nihilmolestiaeconsequatur, velillum qui doloremeumfugiat quo voluptasnullapariatur? Sedutperspiciatisundeomnisistenatus error sit voluptatemaccusantiumdoloremquelaudantium, totamremaperiam, eaqueipsa quae abilloinventoreveritatis et quasi architectobeatae vitae dicta suntexplicabo. Nemoenimipsamvoluptatemquiavoluptas sit aspernaturautoditaut fugit, sedquiaconsequunturmagnidoloreseos qui rationevoluptatemsequinesciunt. Nequeporroquisquamest, qui doloremipsumquia dolor sit amet, consectetur, adipiscivelit, sedquia non numquameiusmoditemporainciduntutlabore et doloremagnamaliquamquaeratvoluptatem. Utenim ad minima veniam, quis nostrum exercitationemullamcorporissuscipitlaboriosam, nisi utaliquid ex ea commodiconsequatur? Quisautemveleumiurereprehenderit qui in ea voluptatevelitesse quam nihilmolestiaeconsequatur, velillum qui doloremeumfugiat quo voluptasnullapariatur? Loremipsum dolor sit amet, consecteturadipisicingelit, sed do eiusmodtemporincididuntutlabore et dolore magna aliqua. Utenim ad minim veniam, quisnostrud exercitation ullamcolaboris nisi utaliquip ex ea commodoconsequat. Duisauteirure dolor in reprehenderit in voluptatevelitessecillumdoloreeufugiatnullapariatur. Excepteursintoccaecatcupidatat non proident, sunt in culpa qui officiadeseruntmollitanim id estlaborum.. Sedutperspiciatisundeomnisistenatus error sit voluptatemaccusantiumdoloremquelaudantium, totamremaperiam, eaqueipsa quae abilloinventoreveritatis et quasi architectobeatae vitae dicta suntexplicabo. Nemoenimipsamvoluptatemquiavoluptas sit aspernaturautoditaut fugit, sedquiaconsequunturmagnidoloreseos qui rationevoluptatemsequinesciunt. Nequeporroquisquamest, qui doloremipsumquia dolor sit amet, consectetur, adipiscivelit, sedquia non numquameiusmoditemporainciduntutlabore et doloremagnamaliquamquaeratvoluptatem. Utenim ad minima veniam, quis nostrum exercitationemullamcorporissuscipitlaboriosam, nisi utaliquid ex ea commodiconsequatur? Quisautemveleumiurereprehenderit qui in ea voluptatevelitesse quam nihilmolestiaeconsequatur, velillum qui doloremeumfugiat quo voluptasnullapariatur? Loremipsum dolor sit amet, Consecteturadipisicingelit, sed do eiusmodtemporincididuntutlabore et dolore magna aliqua. Utenim ad minim veniam, quisnostrud exercitation ullamcolaboris nisi utaliquip ex ea commodoconsequat. Duisauteirure dolor in reprehenderit in voluptatevelitessecillumdoloreeufugiatnullapariatur. Excepteursintoccaecatcupidatat non proident, sunt in culpa qui officiadeseruntmollitanim id estlaborum.. Loremipsum dolor sit amet, consecteturadipisicingelit, sed do eiusmodtemporincididuntutlabore et dolore magna aliqua. Utenim ad minim veniam, quisnostrud exercitation ullamcolaboris nisi utaliquip ex ea commodoconsequat. Duisauteirure dolor in reprehenderit in voluptatevelitessecillumdoloreeufugiatnullapariatur. Excepteursintoccaecatcupidatat non proident, sunt in culpa qui officiadeseruntmollitanim id estlaborum.. Sedutperspiciatisundeomnisistenatus error sit voluptatemaccusantiumdoloremquelaudantium, totamremaperiam, eaqueipsa quae abilloinventoreveritatis et quasi architectobeatae vitae dicta suntexplicabo. Nemoenimipsamvoluptatemquiavoluptas sit aspernaturautoditaut fugit, sedquiaconsequunturmagnidoloreseos qui rationevoluptatemsequinesciunt. Nequeporroquisquamest, qui doloremipsumquia dolor sit amet, consectetur, adipiscivelit, sedquia non numquameiusmoditemporainciduntutlabore et doloremagnamaliquamquaeratvoluptatem. Utenim ad minima veniam, quis nostrum exercitationemullamcorporissuscipitlaboriosam, nisi utaliquid ex ea commodiconsequatur? Quisautemveleumiurereprehenderit qui in ea voluptatevelitesse quam nihilmolestiaeconsequatur, velillum qui doloremeumfugiat quo voluptasnullapariatur? Loremipsum dolor sit amet, consecteturadipisicingelit, sed do eiusmodtemporincididuntutlabore et dolore magna aliqua. Utenim ad minim veniam, quisnostrud exercitation ullamcolaboris nisi utaliquip ex ea commodoconsequat. Duisauteirure dolor in reprehenderit in voluptatevelitessecillumdoloreeufugiatnullapariatur. Excepteursintoccaecatcupidatat non proident, sunt in culpa qui officiadeseruntmollitanim id estlaborum.. Sedutperspiciatisundeomnisistenatus error sit voluptatemaccusantiumdoloremquelaudantium, totamremaperiam, eaqueipsa quae abilloinventoreveritatis et quasi architectobeatae vitae dicta suntexplicabo. Nemoenimipsamvoluptatemquiavoluptas sit aspernaturautoditaut fugit, sedquiaconsequunturmagnidoloreseos qui rationevoluptatemsequinesciunt. Nequeporroquisquamest, qui doloremipsumquia dolor sit amet, consectetur, adipiscivelit, sedquia non numquameiusmoditemporainciduntutlabore et doloremagnamaliquamquaeratvoluptatem. Utenim ad minima veniam, quis nostrum exercitationemullamcorporissuscipitlaboriosam, nisi utaliquid ex ea commodiconsequatur? Quisautemveleumiurereprehenderit qui in ea voluptatevelitesse quam nihilmolestiaeconsequatur, velillum qui doloremeumfugiat quo voluptasnullapariatur? Sedutperspiciatisundeomnisistenatus error sit voluptatemaccusantiumdoloremquelaudantium, totamremaperiam, eaqueipsa quae abilloinventoreveritatis et quasi architectobeatae vitae dicta suntexplicabo. Nemoenimipsamvoluptatemquiavoluptas sit aspernaturautoditaut fugit, sedquiaconsequunturmagnidoloreseos qui rationevoluptatemsequinesciunt. Nequeporroquisquamest, qui doloremipsumquia dolor sit amet, consectetur, adipiscivelit, sedquia non numquameiusmoditemporainciduntutlabore et doloremagnamaliquamquaeratvoluptatem. Utenim ad minima veniam, quis nostrum exercitationemullamcorporissuscipitlaboriosam, nisi utaliquid ex ea commodiconsequatur? Quisautemveleumiurereprehenderit qui in ea voluptatevelitesse quam nihilmolestiaeconsequatur, velillum qui doloremeumfugiat quo voluptasnullapariatur? Loremipsum dolor sit amet, consecteturadipisicingelit, sed do eiusmodtemporincididuntutlabore et dolore magna aliqua. Utenim ad minim veniam, quisnostrud exercitation ullamcolaboris nisi utaliquip ex ea commodoconsequat. Duisauteirure dolor in reprehenderit in voluptatevelitessecillumdoloreeufugiatnullapariatur. Excepteursintoccaecatcupidatat non proident, sunt in culpa qui officiadeseruntmollitanim id estlaborum.. Sedutperspiciatisundeomnisistenatus error sit voluptatemaccusantiumdoloremquelaudantium, totamremaperiam, eaqueipsa quae abilloinventoreveritatis et quasi architectobeatae vitae dicta suntexplicabo. Nemoenimipsamvoluptatemquiavoluptas sit aspernaturautoditaut fugit, sedquiaconsequunturmagnidoloreseos qui rationevoluptatemsequinesciunt. Nequeporroquisquamest, qui doloremipsumquia dolor sit amet, consectetur, adipiscivelit, sedquia non numquameiusmoditemporainciduntutlabore et doloremagnamaliquamquaeratvoluptatem. Utenim ad minima veniam, quis nostrum exercitationemullamcorporissuscipitlaboriosam, nisi utaliquid ex ea commodiconsequatur? Quisautemveleumiurereprehenderit qui in ea voluptatevelitesse quam nihilmolestiaeconsequatur, velillum qui doloremeumfugiat quo voluptasnullapariatur? Loremipsum dolor sit amet, consecteturadipisicingelit, sed do eiusmodtemporincididuntutlabore et dolore magna aliqua. Utenim ad minim veniam, quisnostrud exercitation ullamcolaboris nisi utaliquip ex ea commodoconsequat. Duisauteiruredolor in reprehenderit in voluptatevelitessecillumdoloreeufugiatnullapariatur. Excepteursintoccaecatcupidatat non proident, sunt in culpa qui officiadeseruntmollitanim id estlaborum..
The Answer? We all know of a system that… … runs on millions and millions of processors … is programmed by hundreds of thousands of developers in thousands of organizations often competing with each other … is known to scale … is remarkably robust … may have something to teach us
The Web Loosely coupled Low trust between “components” Partitioned state Message-passing (HTTP Get/Put)
Partitioned State Firm boundaries, explicit dependencies
Message-Passing Data exchange Information passed via messages Data is sent by: Copy Reference to immutable data (in-process) Ownership transfer (in-process) Synchronization Data exchange ≡ synchronization
Asynchrony Data exchange needs to be asynchronous Removes inter-component dependencies in time Frees up components to do work in parallel Requires new ways of designing programs IAsyncResult Continuation-passing, e.g. CCR Promises Data-flow networks Events
Language Support New practices require new languages Libraries good at enabling, not constraining users Formalism of state partitioning Asynchrony
Axum Special-purpose language in incubation Partition data into domains Agents use shared state within domains Agents use message-passing between domains Support for asynchrony and data-flow
Axum Concepts Agent Domain Channel Schema
Channels Conduit for messages between two agents Support for in-process and distributed messaging Define ports as communication vocabulary channel PingPong { input bool Ping; output Signal Pong; } Input port ‘Ping,’ sending data from a client to an agent Output port ‘Pong,’ sending data from an agent to its client
Agents Active components, similar to threads but has limited access to shared mutable state Send and receive messages via channels agent PingAgent : channel PingPong { public PingAgent () { while (receive(Ping)) { Pong <-- Signal.Value; } Pong <-- Signal.Value; } }
Connecting to an Agent Connections are made in one of two ways: vartble = provider.Connect<TableAccess>(“http://localhost/foo”); vartble = Table.TableAgent.CreateInNewDomain(); A factory for channels A channel type An agent address A factory method for in-process agents An agent type
Ping Pong channel PingPong { input bool Ping; output Signal Pong; } agent PingAgent: channel PingPong { public PingAgent() { while (receive(Ping)) { Pong <-- Signal.Value; } Pong <-- Signal.Value; } } agent MainAgent: channel Microsoft.Axum.Application { public MainAgent() { var pp = PingAgent.CreateInNewDomain(); for (int i = 0; i < 100; i++) { pp::Ping <-- true; receive(pp::Pong); } pp::Ping <-- false; receive(pp::Pong); Done <-- Signal.Value; } }
Domains Define state shared by several agent instances Isolate agents in different domains from each other Foundation for seamless distribution of agents Agents are “hosted” within domains domain Table { Dictionary<string, string> dict = new Dictionary<string,string>(); public Table() { Host<TableAgent>(“TableAgentAddress"); } public agent TableAgent : channel TableAccess ... }
Domains + Agents = ♥♥ ♥ Agents declared as Writer – allowed to modify state Reader – allowed to read mutable state N/A – no access to mutable state Agent code is scheduled in parallel based on classification Agents in different domains run in parallel “One writer, many readers” within each domain No-access agents run completely in parallel
Schema Payload definition Guaranteed to serialize Efficient in-process copying schema TableEntry { required String Key; required String Value; rules { require !String.IsNullOrEmpty(Key); require !String.IsNullOrEmpty(Value); } }
Protocols Define legal order of messages Place constraints on payload values channel TableAccess { input KeyValuePair <String,String> Put; input String Get : String; input Signal Done; Start: { Put $ (!String.IsNullOrEmpty(value.Key)) -> Start; Get $ (!String.IsNullOrEmpty(value)) -> Start; Done -> End; } }
Dataflow Networks Propagate data between Computations (methods) Buffers Channel ports Operators forward, forward once, broadcast, alternate, multiplex, join Operands buffer, single-assignment, transforms, sinks chan::Request ==> TranformString ==> chan::Reply; buffer -<< { TransformString ==> sink, PrintString };
Ping Pong agent PingAgent: channel PingPong { public PingAgent() { Ping ==> (b => Signal.Value) ==> Pong; } }
Ping Pong agent PingAgent: channel PingPong { public PingAgent() { Ping ==> Trace ==> Pong; } private Signal Trace(boolinpt) { Console.WriteLine("{0}",inpt); return Signal.Value; } }
Asynchrony Blocking a thread is costly 1MB (or more) stack space Thread context Context switching via ‘syscall’ Asynchronous APIs (APM, EAP, CCR, etc.) Runtime efficient, state in heap Complex to use in program code Axum: let the compiler do the work!
Other Languages with Agents Erlang Functional Mostly pure message-passing Dedicated virtual machine Isolation through immutability Transparent support for distribution Support for asynchrony (receive) Scala Functional Runs on JVM No isolation, but some immutable types Distribution a separate model Basic support for asynchrony (react) F# Functional Runs on .NET No isolation, but some immutable types Distribution a separate model Support for asynchrony (async + let!)
F# and Axum Axum model a closer fit with F# than C++/C# Immutable collection types Support for asynchrony In-process agent API available Add channels, isolation, schema and you have Axum Check out Luke Hoban’s F# session next
Summary Shared Memory Complexity hard to rein in Performance suffers as cache coherence dominates memory system Pure Message Passing Separation of components High overhead Does not leverage existing know-how Axum Balances shared memory and message-passing Reduce complexity Leverage existing patterns and libraries
Try it out! http://msdn.microsoft.com/devlabs http://blogs.msdn.com/maestroteam
Parallel Computing at PDC09 Overview FT07:The State of Parallel Programming WKSP08: Patterns of Parallel Programming Managed code in Visual Studio 2010 FT03:Manycore and .NET 4: A Match Made in Visual Studio 2010 FT21:PLINQ: LINQ, but Faster! FT20:F# for Parallel and Asynchronous Programming Native code in Visual Studio 2010 SVR18: Developing Applications for Scale-Up Servers Running Windows Server 2008 R2 SVR10: Lighting up Windows Server 2008 R2 Using the ConcRT on UMS FT19:C++ Forever: Interactive Applications in the Age of Manycore HPC Server SVR01:Accelerating Applications Using Windows HPC Server 2008 Research and Incubation VTL02:Axum: A .NET Language for Safe and Scalable Concurrency VTL32:Concurrency Fuzzing & Data Races SVR17:Data-Intensive Computing on Windows HPC Server with DryadLINQ VTL04:Rx: Reactive Extensions for .NET FT36:Future of Garbage Collection
YOUR FEEDBACK IS IMPORTANT TO US! Please fill out session evaluation forms online at MicrosoftPDC.com
Learn More On Channel 9 • Expand your PDC experience through Channel 9 • Explore videos, hands-on labs, sample code and demos through the new Channel 9 training courses channel9.msdn.com/learn Built by Developers for Developers….