CINXE.COM

IOS Press Ebooks - Communicating Process Architectures 2015 & 2016 - >WoTUG-37 & WoTUG-38

<!DOCTYPE html> <html> <head> <!--Google consent mode V2--> <script> window.dataLayer = window.dataLayer || []; function gtag() { dataLayer.push(arguments); } if (localStorage.getItem('consentMode') === null) { gtag('consent', 'default', { 'ad_storage': 'denied', 'ad_user_data': 'denied', 'ad_personalization': 'denied', 'analytics_storage': 'denied', 'personalization_storage': 'granted', 'functionality_storage': 'granted', 'security_storage': 'granted', }); } else { gtag('consent', 'default', JSON.parse(localStorage.getItem('consentMode'))); } gtag('set', 'ads_data_redaction', true); gtag('set', 'url_passthrough', true); </script> <!-- Google Tag Manager --> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-W7N3WL5P');</script> <!-- End Google Tag Manager --> <link href="/favicon.ico" rel="shortcut icon" type="image/x-icon" /> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width" /> <title>IOS Press Ebooks - Communicating Process Architectures 2015 &amp; 2016 - &gt;WoTUG-37 &amp;amp; WoTUG-38</title> <!-- FACEBOOK SHARE PICTURE --> <link rel="image_src" type="image/gif" href="https://ebooks.iospress.nl/Cover/50324" /> <meta property="og:image" content="https://ebooks.iospress.nl/Cover/50324" /> <meta name="description" content=" This book presents the proceedings of two conferences, the 37th and 38th in the WoTUG series; Communicating Process Architectures (CPA) 2015, held in Canterbury, England, in August 2015, and CPA 2016, held in Copenhagen, Denmark, in August 2016. Fift... " /> <link href="/Content/themes/iospress/css?v=XPnK8-1eJi79xAnj96qGIM248iqorL44CGZjTHyXSdY1" rel="stylesheet"/> <script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.5.1.min.js"></script> <script src="/bundles/jqueryval?v=S0zjY_C9SrWh_jAKguTKrt0UAVoLX4jD0DmtC1N35rA1"></script> </head> <body class="iospress"> <!-- HEADER --> <div id="header"> <div id="default_header"> <div id="logo"><img alt="IOS Press Ebooks" src="/Content/themes/iospress/images/ioslogo.png" /></div> <div id="divider"></div> <div id="title">IOS Press Ebooks</div> <div style="position:relative; float: right; width: 300px;"> <div id="minibasket"> <div id="minibasket_icon"><a href="/Cart"><img alt="cart" src="/Content/themes/iospress/images/ico-cart.gif" /></a></div> <div id="minibasket_count"><a href="/Cart">Your cart is empty</a></div> </div> <!-- NOT LOGGED IN --> <div id="header_accountbox" class="loggedout"> <div class="accountbox_welcome">Guest Access</div> <div id="header_accountbox_qmark">?</div> <div class="accountbox_actions"> <a data-dialog-title="Registration" href="/Account/Register" id="registerLink">Register</a> | <a data-dialog-title="Identification" href="/Account/Login?returnUrl=%2Fvolume%2Fcommunicating-process-architectures-2015-2016-wotug-37-amp-wotug-38" id="loginLink">Log in</a> </div> <div id="header_accountbox_infobox"> <div id="header_accountbox_infobox_arrow"></div> <div id="header_accountbox_infobox_content"> As a guest user you are not logged in or recognized by your IP address. You have access to the Front Matter, Abstracts, Author Index, Subject Index and the full text of Open Access publications. </div> </div> </div> <script type="text/javascript"> $(document).ready(function () { $("#header_accountbox_qmark").mouseenter(function () { $("#header_accountbox_infobox").show(); }); $("#header_accountbox_qmark").mouseleave(function () { $("#header_accountbox_infobox").hide(); }); }); </script> </div> <div id="menu_wrapper"> <div id="menu-primary" class="menu-container"> <div class="menu"> <ul id="menu-primary-items" class=""> <li class="menu-item"><a href="/"><span>Home</span></a></li> <li class="menu-item current-menu-item"><a href="/Publication/Books"><span>Ebooks</span></a></li> <li class="menu-item"><a href="/Publication/OpenAccess"><span>Open Access</span></a></li> <li class="menu-item"><a href="/Publisher/About"><span>About IOS Press</span></a></li> <li class="menu-item"><a href="/Publisher/Offices"><span>Contact</span></a></li> <li class="menu-item"><a href="/Publisher/Faq"><span>FAQ</span></a></li> </ul> </div> </div> </div> </div> </div> <!-- END HEADER --> <div id="content" class="clearfix"> <div id="leftcolumn"> <div class="searchtitle"> Search</div> <div id="sidesearchbox" style="font-size: 11px; width: 100%;" class="clearfix"> <form action="/Search" method="post"> <div style="float: left; width: 100px;"><input class="searchterm" id="SearchTerm" name="SearchTerm" type="text" value="" /></div> <input data-val="true" data-val-required="The SearchInAuthors field is required." id="SearchInAuthors" name="SearchInAuthors" type="hidden" value="True" /><input data-val="true" data-val-required="The SearchInTitle field is required." id="SearchInTitle" name="SearchInTitle" type="hidden" value="True" /><input data-val="true" data-val-required="The SearchInKeywords field is required." id="SearchInKeywords" name="SearchInKeywords" type="hidden" value="True" /><input data-val="true" data-val-required="The SearchInISSNISBN field is required." id="SearchInISSNISBN" name="SearchInISSNISBN" type="hidden" value="True" /> <table style="border:0;clear:both;" cellpadding="0px" cellspacing="0px"> <tr> <td align="left" style="padding-top:12px"> &nbsp; </td> <td align="right" style="padding-top:12px; width:100%"> <input type="image" value="SideSearch" src="/Content/themes/iospress/images/searchbutton.png" class="submit" /> </td> </tr> </table> </form></div> <div class="partialContents" data-url="/Subject/BrowserAsync"> <img alt="loader" src="/Content/Images/indicator.white.gif" /> loading subjects... </div> </div> <div id="contentcolumn"> <!-- header --> <div class="bookseriesvolumeheader"> <h1 class="title">Ebook: Communicating Process Architectures 2015 &amp; 2016</h1> <div class="content"> <div class="cover partialContents" data-url="/Cover/ASync/50324?cssclass=volume"> <img alt="loader" src="/Content/Images/indicator.white.gif" /> loading... </div> <div class="metadata"> <div class="expandable"> <!-- <div class="value title"><a href="/volume/communicating-process-architectures-2015-2016-wotug-37-amp-wotug-38">Communicating Process Architectures 2015 &amp;amp; 2016</a></div> --> <div class="value subtitle">WoTUG-37 and WoTUG-38</div> <label>Series</label> <div class="value series"><a href="/bookseries/concurrent-systems-engineering-series">Concurrent Systems Engineering Series</a></div> <label>Volume</label> <div class="value volume">69</div> <label>Published</label> <div class="value yearofpublication">2018</div> <label>Editors</label> <div class="value editors">Kevin Chalmers, Jan B&#230;kgaard Pedersen, Frederick R.M. Barnes, Jan F. Broenink, Ruth Ivimey-Cook, Adam Sampson, Peter H. Welch, Kenneth Skovhede, Brian Vinter</div> <label>ISBN</label> <div class="value yearofpublication">978-1-61499-885-3 (print) | 978-1-61499-886-0 (online)</div> <div class="description"> <b>Description</b><br /> <div> <p>This book presents the proceedings of two conferences, the 37th and 38th in the WoTUG series; Communicating Process Architectures (CPA) 2015, held in Canterbury, England, in August 2015, and CPA 2016, held in Copenhagen, Denmark, in August 2016.</p> <p>Fifteen papers were accepted for presentation at the 2015 conference. They cover a spectrum of concurrency concerns: mathematical theory, programming languages, design and support tools, verification, multicore infrastructure and applications ranging from supercomputing to embedded. Three workshops and two evening fringe sessions also formed part of the conference, and the workshop position papers and fringe abstracts are included in this book.</p> <p>Fourteen papers covering the same broad spectrum of topics were presented at the 2016 conference, one of them in the form of a workshop. They are all included here, together with abstracts of the five fringe sessions from the conference.</p> </div> </div> </div><div class="expandbuttons"><div class="expand">&darr; more</div><div class="collapse">&uarr; less</div></div> </div> <div class="actions"> <form action="/Cart/Add" id="addtocardform50324" method="post"> <input type="hidden" name="id" value="50324" /> <input type="hidden" name="returnUrl" value="/volume/communicating-process-architectures-2015-2016-wotug-37-amp-wotug-38" /> <div id='addtocardlink50324' class="button addtocart"><span style="color: #555;">$133.00 / €108.00 / &#163;97.00</span><br /><span style="font-weight: bold; font-size: 10px;">Add PDF to cart</span></div> </form> <script type="text/javascript"> $(function() { $('div#addtocardlink50324').click(function () { $('form#addtocardform50324').submit(); }); }); </script> <div class="button orderhardcopy"><a target="_blank" href="https://www.iospress.nl/loadtop/load.php?isbn=9781614998853">Order hardcopy</a></div> </div> </div> </div> <!-- contents --> <div id="unobtrusive"> <div class="contents_title"> <div style="float:left">Contents</div> <div class="contentspagination"> <div class="pagination PagedList-pager"><ul><li class="previous disabled PagedList-skipToFirst"><a>&laquo;</a></li><li class="disabled PagedList-skipToPrevious"><a>&lsaquo;</a></li><li class="active"><a>1</a></li><li><a data-ajax="true" data-ajax-method="get" data-ajax-mode="replace" data-ajax-update="#unobtrusive" href="/Publication/Descendants/50324?page=2" title="Show page 2">2</a></li><li><a data-ajax="true" data-ajax-method="get" data-ajax-mode="replace" data-ajax-update="#unobtrusive" href="/Publication/Descendants/50324?page=3" title="Show page 3">3</a></li><li class="PagedList-skipToNext"><a data-ajax="true" data-ajax-method="get" data-ajax-mode="replace" data-ajax-update="#unobtrusive" href="/Publication/Descendants/50324?page=2" title="Show next page">&rsaquo;</a></li><li class="next PagedList-skipToLast"><a data-ajax="true" data-ajax-method="get" data-ajax-mode="replace" data-ajax-update="#unobtrusive" href="/Publication/Descendants/50324?page=3" title="Show last page">&raquo;</a></li></ul></div> </div> </div> <div class="contents" id="volumearticles" start="1"> <div class="bookseriesvolumearticlelistitem"> <div class="content"> <div class="cover"></div> <div class="metadata"> <div class="expandable"> <div class="value title"><a href="/volumearticle/50376">Front Matter</a></div> <label>Pages</label> <div class="value pages">i - xx</div> <div class="abstract"> <b>Preface</b><br /> <p>Preface CPA 2015</p><p>Communicating Process Architectures (CPA) 2015 is the thirty-seventh in the WoTUG series of conferences and took place from Sunday August 23th to Wednesday August 26th 2015, hosted by the School of Computing at the University of Kent in Canterbury, England.</p><p>Keynote talks this year were from David May (FRS) and Eric Verhulst. David, of course, was the architect of the Inmos Transputer – the first microprocessor designed to support multiprocessing – and the designer of the occam concurrent programming language. His most recent venture is XMOS, which he co-founded in 2005 and which develops and markets multicore multiprocessors for embedded applications together with the all-important software tools for harnessing them (i.e. concurrent design, reasoning and programming). David's talk reviews and forecasts the development of the ideas behind Communicating Processes and Processors from 1975 through 2025. Eric led the development of the Virtuoso multi-board RTOS, used in the ESA's Rosetta space mission to comet 67P/Churyumov-Gerasimenko. Virtuoso and its successor developments, OpenComRTOS and VirtuosoNext, all apply valuable principles and lessons learned from CSP, the transputer and occam. Eric's talk relates his own personal journey through the challenges of parallel programming, leading to the realisation of industrial applications based on viewing complex systems as a set of interacting entities exchanging information according to laws formalised in CSP – and the success that has resulted.</p><p>Fifteen papers were accepted for presentation at the conference, following the strong editorial process developed and refined by CPA over many years. They cover a spectrum of concurrency concerns: mathematical theory, programming languages, design and support tools, verification, multicore infrastructure and applications ranging from supercomputing to embedded. Three workshops were included in the conference, asking questions about the use of concurrency in modern High Performance Computing, how to work with and model analog (e.g. continuous time) and digital mechanisms in real-world hybrid systems, and how to classify and usefully benchmark the many languages and support libraries now available for message-passing concurrency. The conference also hosted two evening fringe sessions, for reporting most recent work, floating wild ideas and/or challenging received wisdom. The workshop position papers and fringe abstracts are included in these Proceedings. Altogether, contributions came from twelve different countries: Belgium, Brazil, Denmark, Canada, Germany, the Netherlands, Norway, South Africa, Spain, Sweden, the UK and the USA.</p><p>Finally, we thank everyone who submitted papers, the reviewers for their conscientious and very hard work, the delegates attending for their contributions that make it all worthwhile and the secretaries and conference officers who just make it work. Thank you all very much.</p><p>Kevin Chalmers (Edinburgh Napier University)</p><p>Jan Bækgaard Pedersen (University of Nevada Las Vegas)</p><p>Frederick R.M. Barnes (University of Kent)</p><p>Jan F. Broenink (University of Twente)</p><p>Ruth Ivimey-Cook (eLifesciences Ltd.)</p><p>Adam Sampson (Abertay University)</p><p>Peter H. Welch (University of Kent)</p><p>Preface CPA 2016</p><p>Communicating Process Architectures (CPA) 2016 is the thirty-eighth in the WoTUG series of conferences and took place from Sunday August 21st to Tuesday August 23rd 2016, hosted by the Niels Bohr Institute at the University of Copenhagen, Denmark. This sees the first visit to a Scandinavian country for this conference.</p><p>The keynote talk this year was from Markus Jochum from the Niels Bohr Institute. His talk, “Computational Challenges for Climate Modelling” presented two key issues facing climate science and climate modelling: turbulence in the fluid dynamics of oceans and establishing the fidelity of the models (by demonstrating their accuracy over pre-historic warm periods). Both require an order of magnitude faster and higher resolution integration than is available even on today's massively parallel computing architectures and need to take into account Earth's full carbon biochemistry. Dr. Jochum completed his PhD in physical oceanography in 2002 at MIT. He then worked for 8 years as ocean model developer at the National Center for Atmospheric Research, USA. Since 2012, he has been Professor for Physical Oceanography at the Niels Bohr Institute, Copenhagen.</p><p>Fourteen papers were accepted for presentation at the conference and publication in these proceedings, following the strong editorial process developed and refined by CPA over many years. They cover a full spectrum of concurrency concerns – from mathematical theory, design and programming language and support tools, verification, multicore run-time infrastructure through to applications at all levels from supercomputing to embedded. One of the fourteen papers was presented as a workshop on building sensor systems for a large scale Arctic observatory. This year's submissions came from Denmark, France, the Netherlands, Norway, Malta, the UK and the USA.</p><p>As usual, the conference also hosted fringe sessions presenting work in progress, new ideas, demonstrations and concerns that certain common practices in concurrency are harmful. This year, we had 5 such fringe presentations and their abstracts can be found in these proceedings.</p><p>Finally, we thank everyone who submitted papers, the reviewers for their conscientious and very hard work, the delegates attending for their contributions that make it all worthwhile and the secretaries and conference officers who just make it work. Thank you all very much.</p><p>Kevin Chalmers (Edinburgh Napier University)</p><p>Jan Bækgaard Pedersen (University of Nevada Las Vegas)</p><p>Kenneth Skovhede (University of Copenhagen)</p><p>Brian Vinter (University of Copenhagen)</p><p>Peter H. Welch (University of Kent)</p> </div> </div><div class="expandbuttons"><div class="expand">&darr; more</div><div class="collapse">&uarr; less</div></div> </div> <div class="actions"> <form action="/Download/Pdf" id="downloadform50376" method="post"> <input type="hidden" name="id" value="50376" /> <div id='downloadlink50376' class="button getpdf">Download </div> </form> <script type="text/javascript"> $(function () { $('div#downloadlink50376').click(function () { $('form#downloadform50376').submit(); }); }); </script> </div> </div> </div> <div class="bookseriesvolumearticlelistitem"> <div class="content"> <div class="cover"></div> <div class="metadata"> <div class="expandable"> <div class="value title"><a href="/volumearticle/50325">Communicating Process Architectures 2015 - WoTUG-37</a></div> <label>Page</label> <div class="value pages">1</div> </div><div class="expandbuttons"><div class="expand">&darr; more</div><div class="collapse">&uarr; less</div></div> </div> <div class="actions"> <form action="/Download/Pdf" id="downloadform50325" method="post"> <input type="hidden" name="id" value="50325" /> <div id='downloadlink50325' class="button getpdf">Download </div> </form> <script type="text/javascript"> $(function () { $('div#downloadlink50325').click(function () { $('form#downloadform50325').submit(); }); }); </script> </div> </div> </div> <div class="bookseriesvolumearticlelistitem"> <div class="content"> <div class="cover"></div> <div class="metadata"> <div class="expandable"> <div class="value title"><a href="/volumearticle/50326">Communicating Processes and Processors (1975–2025) - Keynote Presentation</a></div> <label>Authors</label> <div class="value authors">M. David May</div> <label>Page</label> <div class="value pages">3</div> <label>DOI</label> <div class="value doi">10.3233/978-1-61499-886-0-3</div> <div class="abstract"> <b>Abstract</b><br /> <p>The ideas that gave rise to CSP, occam and transputers originated in the UK around 1975; occam and the Inmos transputer were launched around 1985. Thousands of computer scientists and engineers learned about concurrency and parallel computing using the occam-transputer platform and the influence is evident in many current architectures and programming tools. I will reflect on the relevance of these ideas to-day – after 30 years – and talk about communicating processes and processors in the age of clouds, things and robots. Slides used in the presentation can be downloaded from [1].</p> </div> </div><div class="expandbuttons"><div class="expand">&darr; more</div><div class="collapse">&uarr; less</div></div> </div> <div class="actions"> <form action="/Download/Pdf" id="downloadform50326" method="post"> <input type="hidden" name="id" value="50326" /> <div id='downloadlink50326' class="button getpdf">Download </div> </form> <script type="text/javascript"> $(function () { $('div#downloadlink50326').click(function () { $('form#downloadform50326').submit(); }); }); </script> </div> </div> </div> <div class="bookseriesvolumearticlelistitem"> <div class="content"> <div class="cover"></div> <div class="metadata"> <div class="expandable"> <div class="value title"><a href="/volumearticle/50327">occam's Rule Applied: Separation of Concerns as a Key to Trustworthy Systems Engineering for Complex Systems - Keynote Presentation</a></div> <label>Authors</label> <div class="value authors">Eric Verhulst</div> <label>Pages</label> <div class="value pages">5 - 6</div> <label>DOI</label> <div class="value doi">10.3233/978-1-61499-886-0-5</div> <div class="abstract"> <b>Abstract</b><br /> <p>“Keep it simple but not too simple” means that a complex solution is really a problem that's not very well understood. In formal methods, this is reflected not only in the size of the state space, but also in the dependencies between these states. This is the main reason why Formal Modelling is not delivering as expected: the state space explosion would require an infinite amount of resources. If an automated tool cannot handle the state space, how can we expect engineers to do so? This is where CSP comes in: it divides the state space in small manageable chunks, making it easier to reason about the behaviour. There are however a few pre-conditions for this to work: one must take a step back, dividing the complex state space before conquering it, hence thinking about functionalities and how they are related before thinking about the punctual states in space and time.</p><p>Extrapolating the CSP abstract process algebra leads to a generic concept of describing systems as a set of Interacting Entities, whereby the Interactions are seen as first class citizens, at the same level as the Entities, decoupling the Entities' states by explicit information exchanges. We enter hereby the domain of modelling. One major issue with modelling approaches is that, while we need different and complementary models to develop a real system, these often have different semantics (if the semantics are properly defined at all). By being able to hide the internal semantics, one can focus on the interactions and use these as standardised interfaces.</p><p>It is clear that for this to work in the software domain, the natural programming model should be concurrent and execute on hardware that is compatible with it – a design feature of the transputer that has not been matched since. This opens the door to multi-domain modelling where, for example, parts of the system are continuous and other parts are discrete (as in executing a clocked logic). This gives us an interesting new domain of hybrid logic, a topic we want to explore further in a workshop at the conference.</p><p>This lecture will be guided by my own personal journey, starting with a spreadsheet to program a parallel machine, covering Peter Welch's courses in occam [1] and the formal development of our distributed RTOS. Slides used in the presentation can be downloaded from [2].</p> </div> </div><div class="expandbuttons"><div class="expand">&darr; more</div><div class="collapse">&uarr; less</div></div> </div> <div class="actions"> <form action="/Cart/Add" id="addtocardform50327" method="post"> <input type="hidden" name="id" value="50327" /> <input type="hidden" name="returnUrl" value="/volume/communicating-process-architectures-2015-2016-wotug-37-amp-wotug-38" /> <div id='addtocardlink50327' class="button addtocart"><span style="color: #555;">$35.00 / €27.50 / &#163;22.00</span><br /><span style="font-weight: bold; font-size: 10px;">Add PDF to cart</span></div> </form> <script type="text/javascript"> $(function() { $('div#addtocardlink50327').click(function () { $('form#addtocardform50327').submit(); }); }); </script> </div> </div> </div> <div class="bookseriesvolumearticlelistitem"> <div class="content"> <div class="cover"></div> <div class="metadata"> <div class="expandable"> <div class="value title"><a href="/volumearticle/50328">OpenTransputer: Reinventing a Parallel Machine from the Past</a></div> <label>Authors</label> <div class="value authors">Andr&#233;s Amaya Garc&#237;a, David Keller, David May</div> <label>Pages</label> <div class="value pages">7 - 26</div> <label>DOI</label> <div class="value doi">10.3233/978-1-61499-886-0-7</div> <div class="abstract"> <b>Abstract</b><br /> <p>The OpenTransputer is a new implementation of the Transputer first launched by Inmos in 1985. It supports the same instruction set, but uses a different microarchitecture that takes advantage of today's manufacturing technology; this results in a reduced cycle count for many of the instructions. Our new Transputer includes support for channels that connect to input-output ports, enabling direct connection to external devices such as sensors, actuators and standard communication interfaces. We have also generalised the channel communications with the support of virtual channels and the design of a message routing component based on a Beneš switch to enable the construction of networks with scalable throughput and low latency. We aim to make the OpenTransputer and switch components available as open-source designs.</p> </div> </div><div class="expandbuttons"><div class="expand">&darr; more</div><div class="collapse">&uarr; less</div></div> </div> <div class="actions"> <form action="/Cart/Add" id="addtocardform50328" method="post"> <input type="hidden" name="id" value="50328" /> <input type="hidden" name="returnUrl" value="/volume/communicating-process-architectures-2015-2016-wotug-37-amp-wotug-38" /> <div id='addtocardlink50328' class="button addtocart"><span style="color: #555;">$35.00 / €27.50 / &#163;22.00</span><br /><span style="font-weight: bold; font-size: 10px;">Add PDF to cart</span></div> </form> <script type="text/javascript"> $(function() { $('div#addtocardlink50328').click(function () { $('form#addtocardform50328').submit(); }); }); </script> </div> </div> </div> <div class="bookseriesvolumearticlelistitem"> <div class="content"> <div class="cover"></div> <div class="metadata"> <div class="expandable"> <div class="value title"><a href="/volumearticle/50329">Discrete Event-Based Neural Simulation Using the SpiNNaker System</a></div> <label>Authors</label> <div class="value authors">Andrew Brown, Jeff Reeve, Kier Dugan, Steve Furber</div> <label>Pages</label> <div class="value pages">27 - 42</div> <label>DOI</label> <div class="value doi">10.3233/978-1-61499-886-0-27</div> <div class="abstract"> <b>Abstract</b><br /> <p>SpiNNaker is a computing system composed of over a million ARM cores, embedded in a bespoke asynchronous communication fabric. The physical realization of the system consist of 57600 nodes (a node is a silicon die), each node containing 18 ARM cores and a routing engine. The communication infrastructure allows the cores to communicate via short, fixed-length (40- or 72-bit), hardware-brokered packets. The packets find their way through the network in a sequence of hops, and the specifics of each route are held (distributed) in the route engines, not unlike internet routing. On arrival at a target core, a hardware-triggered interrupt invokes code to handle the incoming packet. Within this computing model, the state of the system-under-simulation is distributed, held in memory local to the cores, and the topology is also distributed, held in the routing engine internal tables. The message passing is non-deterministic and non-transitive, there is no memory coherence between the core local memories, and there is no global synchronization. This paper shows how such a system can be used to simulate large systems of neurons using discrete event-based techniques. More notably, the solution time remains approximately constant with neural system size as long as sufficient hardware cores are available.</p> </div> </div><div class="expandbuttons"><div class="expand">&darr; more</div><div class="collapse">&uarr; less</div></div> </div> <div class="actions"> <form action="/Cart/Add" id="addtocardform50329" method="post"> <input type="hidden" name="id" value="50329" /> <input type="hidden" name="returnUrl" value="/volume/communicating-process-architectures-2015-2016-wotug-37-amp-wotug-38" /> <div id='addtocardlink50329' class="button addtocart"><span style="color: #555;">$35.00 / €27.50 / &#163;22.00</span><br /><span style="font-weight: bold; font-size: 10px;">Add PDF to cart</span></div> </form> <script type="text/javascript"> $(function() { $('div#addtocardlink50329').click(function () { $('form#addtocardform50329').submit(); }); }); </script> </div> </div> </div> <div class="bookseriesvolumearticlelistitem"> <div class="content"> <div class="cover"></div> <div class="metadata"> <div class="expandable"> <div class="value title"><a href="/volumearticle/50330">Adding CSPm Functions and Data Types to CSP++</a></div> <label>Authors</label> <div class="value authors">Daniel Garner, Markus Roggenbach, W.B. Gardner</div> <label>Pages</label> <div class="value pages">43 - 66</div> <label>DOI</label> <div class="value doi">10.3233/978-1-61499-886-0-43</div> <div class="abstract"> <b>Abstract</b><br /> <p>This work extends the subset of CSPm that can be translated to C++ using the tool CSP++. Specifications can now contain user defined functions, make limited use of set and sequence data, and utilise built-in CSPm functions that operate on such data. An extended development paradigm is suggested, based on applying transformational methods from UML to C++. All techniques are demonstrated over three case-study examples.</p> </div> </div><div class="expandbuttons"><div class="expand">&darr; more</div><div class="collapse">&uarr; less</div></div> </div> <div class="actions"> <form action="/Cart/Add" id="addtocardform50330" method="post"> <input type="hidden" name="id" value="50330" /> <input type="hidden" name="returnUrl" value="/volume/communicating-process-architectures-2015-2016-wotug-37-amp-wotug-38" /> <div id='addtocardlink50330' class="button addtocart"><span style="color: #555;">$35.00 / €27.50 / &#163;22.00</span><br /><span style="font-weight: bold; font-size: 10px;">Add PDF to cart</span></div> </form> <script type="text/javascript"> $(function() { $('div#addtocardlink50330').click(function () { $('form#addtocardform50330').submit(); }); }); </script> </div> </div> </div> <div class="bookseriesvolumearticlelistitem"> <div class="content"> <div class="cover"></div> <div class="metadata"> <div class="expandable"> <div class="value title"><a href="/volumearticle/50331">Towards Lightweight Formal Development of MPI Applications</a></div> <label>Authors</label> <div class="value authors">Nelson S. Rosa, Alan Wagner, Humaira Kamal</div> <label>Pages</label> <div class="value pages">67 - 85</div> <label>DOI</label> <div class="value doi">10.3233/978-1-61499-886-0-67</div> <div class="abstract"> <b>Abstract</b><br /> <p>A significant number of parallel applications are implemented using MPI (Message Passing Interface) and several existing approaches focus on their verification. However, these approaches typically work with complete applications and fixing any undesired behaviour at this late stage of application development is difficult and time consuming. To address this problem, we present a lightweight formal approach that helps developers build safety into the MPI applications from the early stages of the program development. Our approach consists of a methodology that includes verification during the program development process. We provide tools that hide the more difficult formal aspects from developers making it possible to verify properties such as freedom from deadlock as well as automatically generating partial skeletons of the code. We evaluate our approach with respect to its ability and efficiency in detecting deadlocks.</p> </div> </div><div class="expandbuttons"><div class="expand">&darr; more</div><div class="collapse">&uarr; less</div></div> </div> <div class="actions"> <form action="/Cart/Add" id="addtocardform50331" method="post"> <input type="hidden" name="id" value="50331" /> <input type="hidden" name="returnUrl" value="/volume/communicating-process-architectures-2015-2016-wotug-37-amp-wotug-38" /> <div id='addtocardlink50331' class="button addtocart"><span style="color: #555;">$35.00 / €27.50 / &#163;22.00</span><br /><span style="font-weight: bold; font-size: 10px;">Add PDF to cart</span></div> </form> <script type="text/javascript"> $(function() { $('div#addtocardlink50331').click(function () { $('form#addtocardform50331').submit(); }); }); </script> </div> </div> </div> <div class="bookseriesvolumearticlelistitem"> <div class="content"> <div class="cover"></div> <div class="metadata"> <div class="expandable"> <div class="value title"><a href="/volumearticle/50332">A Model-Driven Methodology for Generating and Verifying CSP-Based Java Code</a></div> <label>Authors</label> <div class="value authors">Julio Mari&#241;o, Ra&#250;l N.N. Alborodo</div> <label>Pages</label> <div class="value pages">87 - 110</div> <label>DOI</label> <div class="value doi">10.3233/978-1-61499-886-0-87</div> <div class="abstract"> <b>Abstract</b><br /> <p>Model-driven methodologies can help developers create more reliable software. In previous work, we have advocated a model-driven approach for the analysis and design of concurrent, safety-critical systems. However, to take full advantage of those techniques, they must be supported by code generation schemes for concrete programming languages. Ideally, this translation should be traceable, automated and should support verification of the generated code. In this paper we consider the problem of generating concurrent Java code from high-level interaction models. Our proposal includes an extension of JML that allows to specify shared resources as Java interfaces, and several translation patterns for (partial) generation of CSP-based Java code. The template code thus obtained is JML-annotated Java using the JCSP library, with proof obligations that help with both traceability and verification. Finally, we present an experiment in code verification using the KeY tool.</p> </div> </div><div class="expandbuttons"><div class="expand">&darr; more</div><div class="collapse">&uarr; less</div></div> </div> <div class="actions"> <form action="/Cart/Add" id="addtocardform50332" method="post"> <input type="hidden" name="id" value="50332" /> <input type="hidden" name="returnUrl" value="/volume/communicating-process-architectures-2015-2016-wotug-37-amp-wotug-38" /> <div id='addtocardlink50332' class="button addtocart"><span style="color: #555;">$35.00 / €27.50 / &#163;22.00</span><br /><span style="font-weight: bold; font-size: 10px;">Add PDF to cart</span></div> </form> <script type="text/javascript"> $(function() { $('div#addtocardlink50332').click(function () { $('form#addtocardform50332').submit(); }); }); </script> </div> </div> </div> <div class="bookseriesvolumearticlelistitem"> <div class="content"> <div class="cover"></div> <div class="metadata"> <div class="expandable"> <div class="value title"><a href="/volumearticle/50333">A Super-Simple Run-Time for CSP-Based Concurrent Systems</a></div> <label>Authors</label> <div class="value authors">Michael E. Goldsby</div> <label>Pages</label> <div class="value pages">111 - 126</div> <label>DOI</label> <div class="value doi">10.3233/978-1-61499-886-0-111</div> <div class="abstract"> <b>Abstract</b><br /> <p>MicroCSP is a run-time system written in C supporting process-oriented concurrency. It features CSP-style synchronous communication over point-to-point channels and alternation (including timeouts) and implements preemptive priority process scheduling. The MicroCSP programmer writes the logic of a process as an ordinary function which, barring preemption, runs to completion every time the process is scheduled. To make such an approach feasible requires that the programmer cast each process's logic in normal form: a loop controlling a single choice of guarded events, with event-free computation following each event. A context switch requires a mere function call, with the exception of those that occur as the result of an interrupt. The system is memory-efficient, fast and has a narrow hardware interface. The intended target of MicroCSP is bare microcontroller hardware, and its efficient use of the stack makes it particularly suitable for microcontrollers with restricted memory. The current version runs on a single processor over a Linux implementation of the hardware interface and serves as a prototype for the microcontroller implementations. A multicore implementation appears to be possible.</p> </div> </div><div class="expandbuttons"><div class="expand">&darr; more</div><div class="collapse">&uarr; less</div></div> </div> <div class="actions"> <form action="/Cart/Add" id="addtocardform50333" method="post"> <input type="hidden" name="id" value="50333" /> <input type="hidden" name="returnUrl" value="/volume/communicating-process-architectures-2015-2016-wotug-37-amp-wotug-38" /> <div id='addtocardlink50333' class="button addtocart"><span style="color: #555;">$35.00 / €27.50 / &#163;22.00</span><br /><span style="font-weight: bold; font-size: 10px;">Add PDF to cart</span></div> </form> <script type="text/javascript"> $(function() { $('div#addtocardlink50333').click(function () { $('form#addtocardform50333').submit(); }); }); </script> </div> </div> </div> <div class="bookseriesvolumearticlelistitem"> <div class="content"> <div class="cover"></div> <div class="metadata"> <div class="expandable"> <div class="value title"><a href="/volumearticle/50334">A Design for Interchangeable Simulation and Implementation</a></div> <label>Authors</label> <div class="value authors">Klaus Birkelund Jensen, Brian Vinter</div> <label>Pages</label> <div class="value pages">127 - 142</div> <label>DOI</label> <div class="value doi">10.3233/978-1-61499-886-0-127</div> <div class="abstract"> <b>Abstract</b><br /> <p>Research on concurrent systems requires modelling, simulation and evaluation in many settings. We describe a design for Interchangeable Simulation and Implementation (ISI, pronounced easy), an approach that enables the simultaneous modelling, simulation and evaluation of highly concurrent process based systems.</p><p>We describe how ISI can been used to design and evaluate techniques used in storage systems. Our key insight is that, while the simulation of systems could be implemented as regular discrete event simulation, the benefits of designing it as the highly concurrent process based system that it is — with the full data and control flow in mind — enables seamless interchangeability between discrete and real time simulation.</p> </div> </div><div class="expandbuttons"><div class="expand">&darr; more</div><div class="collapse">&uarr; less</div></div> </div> <div class="actions"> <form action="/Cart/Add" id="addtocardform50334" method="post"> <input type="hidden" name="id" value="50334" /> <input type="hidden" name="returnUrl" value="/volume/communicating-process-architectures-2015-2016-wotug-37-amp-wotug-38" /> <div id='addtocardlink50334' class="button addtocart"><span style="color: #555;">$35.00 / €27.50 / &#163;22.00</span><br /><span style="font-weight: bold; font-size: 10px;">Add PDF to cart</span></div> </form> <script type="text/javascript"> $(function() { $('div#addtocardlink50334').click(function () { $('form#addtocardform50334').submit(); }); }); </script> </div> </div> </div> <div class="bookseriesvolumearticlelistitem"> <div class="content"> <div class="cover"></div> <div class="metadata"> <div class="expandable"> <div class="value title"><a href="/volumearticle/50335">Lambda Calculus in Core Aldwych</a></div> <label>Authors</label> <div class="value authors">Matthew Huntbach</div> <label>Pages</label> <div class="value pages">143 - 165</div> <label>DOI</label> <div class="value doi">10.3233/978-1-61499-886-0-143</div> <div class="abstract"> <b>Abstract</b><br /> <p>Core Aldwych is a simple model for concurrent computation, involving the concept of agents that communicate through shared variables. Each variable will have exactly one agent that can write to it, and its value can never be changed once written, but a value can contain further variables that are written to later. A key aspect is that the reader of a value may become the writer of variables in it. In this paper we show how this model can be used to encode lambda calculus. Individual function applications can be explicitly encoded as lazy or not, as required. We then show how this encoding can be extended to cover functions that manipulate mutable variables, but with the underlying Core Aldwych implementation still using only immutable variables. The ordering of function applications then becomes an issue, with Core Aldwych able to model either the enforcement of an ordering or the retention of indeterminate ordering, which allows parallel execution.</p> </div> </div><div class="expandbuttons"><div class="expand">&darr; more</div><div class="collapse">&uarr; less</div></div> </div> <div class="actions"> <form action="/Cart/Add" id="addtocardform50335" method="post"> <input type="hidden" name="id" value="50335" /> <input type="hidden" name="returnUrl" value="/volume/communicating-process-architectures-2015-2016-wotug-37-amp-wotug-38" /> <div id='addtocardlink50335' class="button addtocart"><span style="color: #555;">$35.00 / €27.50 / &#163;22.00</span><br /><span style="font-weight: bold; font-size: 10px;">Add PDF to cart</span></div> </form> <script type="text/javascript"> $(function() { $('div#addtocardlink50335').click(function () { $('form#addtocardform50335').submit(); }); }); </script> </div> </div> </div> <div class="bookseriesvolumearticlelistitem"> <div class="content"> <div class="cover"></div> <div class="metadata"> <div class="expandable"> <div class="value title"><a href="/volumearticle/50336">CoCoL: Concurrent Communications Library</a></div> <label>Authors</label> <div class="value authors">Kenneth Skovhede, Brian Vinter</div> <label>Pages</label> <div class="value pages">167 - 183</div> <label>DOI</label> <div class="value doi">10.3233/978-1-61499-886-0-167</div> <div class="abstract"> <b>Abstract</b><br /> <p>In this paper, we examine a new CSP inspired library for the Common Intermediate Language: CoCoL (Concurrent Communications Library). The use of the Common Intermediate Language makes the library accessible from a number of languages, including C#, F#, Visual Basic and IronPython. The processes are based on tasks and continuation callbacks, rather than threads, which enables networks with millions of running processes on a single machine. The channels are based on request queues with two-phase commit tickets, which enables external choice without coordination among channels. We evaluate the performance of the library on different operating systems and compare the performance with JCSP and C++CSP.</p> </div> </div><div class="expandbuttons"><div class="expand">&darr; more</div><div class="collapse">&uarr; less</div></div> </div> <div class="actions"> <form action="/Cart/Add" id="addtocardform50336" method="post"> <input type="hidden" name="id" value="50336" /> <input type="hidden" name="returnUrl" value="/volume/communicating-process-architectures-2015-2016-wotug-37-amp-wotug-38" /> <div id='addtocardlink50336' class="button addtocart"><span style="color: #555;">$35.00 / €27.50 / &#163;22.00</span><br /><span style="font-weight: bold; font-size: 10px;">Add PDF to cart</span></div> </form> <script type="text/javascript"> $(function() { $('div#addtocardlink50336').click(function () { $('form#addtocardform50336').submit(); }); }); </script> </div> </div> </div> <div class="bookseriesvolumearticlelistitem"> <div class="content"> <div class="cover"></div> <div class="metadata"> <div class="expandable"> <div class="value title"><a href="/volumearticle/50337">Process-Based Aho-Corasick Failure Function Construction</a></div> <label>Authors</label> <div class="value authors">Tinus Strauss, Derrick G. Kourie, Bruce W. Watson, Loek Cleophas</div> <label>Pages</label> <div class="value pages">185 - 208</div> <label>DOI</label> <div class="value doi">10.3233/978-1-61499-886-0-185</div> <div class="abstract"> <b>Abstract</b><br /> <p>This case study is embedded in a wider project aimed at investigating process-based software development to better utilise the multiple cores on contemporary hardware platforms. Three alternative process-based architectures for the classical Aho-Corasick failure function construction algorithm are proposed, described in CSP and implemented in Go. Empirical results show that these process-based implementations attain significant speedups over the conventional sequential implementation of the algorithm for significantly-sized data sets. Evidence is also presented to demonstrate that the process-based performances are comparable to the performance of a more conventional concurrent implementation in which the input data is simply partitioned over several concurrent processes.</p> </div> </div><div class="expandbuttons"><div class="expand">&darr; more</div><div class="collapse">&uarr; less</div></div> </div> <div class="actions"> <form action="/Cart/Add" id="addtocardform50337" method="post"> <input type="hidden" name="id" value="50337" /> <input type="hidden" name="returnUrl" value="/volume/communicating-process-architectures-2015-2016-wotug-37-amp-wotug-38" /> <div id='addtocardlink50337' class="button addtocart"><span style="color: #555;">$35.00 / €27.50 / &#163;22.00</span><br /><span style="font-weight: bold; font-size: 10px;">Add PDF to cart</span></div> </form> <script type="text/javascript"> $(function() { $('div#addtocardlink50337').click(function () { $('form#addtocardform50337').submit(); }); }); </script> </div> </div> </div> <div class="bookseriesvolumearticlelistitem"> <div class="content"> <div class="cover"></div> <div class="metadata"> <div class="expandable"> <div class="value title"><a href="/volumearticle/50338">Guppy: Process-Oriented Programming on Embedded Devices</a></div> <label>Authors</label> <div class="value authors">Frederick R.M. Barnes</div> <label>Pages</label> <div class="value pages">209 - 228</div> <label>DOI</label> <div class="value doi">10.3233/978-1-61499-886-0-209</div> <div class="abstract"> <b>Abstract</b><br /> <p>Guppy is a new and experimental process-oriented programming language, taking much inspiration (and some code-base) from the existing occam-π language. This paper reports on a variety of aspects related to this, specifically language, compiler and run-time system development, enabling Guppy programs to run on desktop and embedded systems. A native code-generation approach is taken, using C as the intermediate language, and with stack-space requirements determined at compile-time.</p> </div> </div><div class="expandbuttons"><div class="expand">&darr; more</div><div class="collapse">&uarr; less</div></div> </div> <div class="actions"> <form action="/Cart/Add" id="addtocardform50338" method="post"> <input type="hidden" name="id" value="50338" /> <input type="hidden" name="returnUrl" value="/volume/communicating-process-architectures-2015-2016-wotug-37-amp-wotug-38" /> <div id='addtocardlink50338' class="button addtocart"><span style="color: #555;">$35.00 / €27.50 / &#163;22.00</span><br /><span style="font-weight: bold; font-size: 10px;">Add PDF to cart</span></div> </form> <script type="text/javascript"> $(function() { $('div#addtocardlink50338').click(function () { $('form#addtocardform50338').submit(); }); }); </script> </div> </div> </div> <div class="bookseriesvolumearticlelistitem"> <div class="content"> <div class="cover"></div> <div class="metadata"> <div class="expandable"> <div class="value title"><a href="/volumearticle/50339">Communicating Process Architectures in the Light of Parallel Design Patterns and Skeletons</a></div> <label>Authors</label> <div class="value authors">Kevin Chalmers</div> <label>Pages</label> <div class="value pages">229 - 245</div> <label>DOI</label> <div class="value doi">10.3233/978-1-61499-886-0-229</div> <div class="abstract"> <b>Abstract</b><br /> <p>This work presents some initial thoughts and future directions when considering Communicating Process Architectures in light of parallel design patterns and algorithmic skeletons. Consideration of where CPA aligns with current work in the parallel application design world is considered. Proposals are made on how the scope of CPA can expand to better support the current trends in parallel application development are presented and proposed as future work.</p> </div> </div><div class="expandbuttons"><div class="expand">&darr; more</div><div class="collapse">&uarr; less</div></div> </div> <div class="actions"> <form action="/Cart/Add" id="addtocardform50339" method="post"> <input type="hidden" name="id" value="50339" /> <input type="hidden" name="returnUrl" value="/volume/communicating-process-architectures-2015-2016-wotug-37-amp-wotug-38" /> <div id='addtocardlink50339' class="button addtocart"><span style="color: #555;">$35.00 / €27.50 / &#163;22.00</span><br /><span style="font-weight: bold; font-size: 10px;">Add PDF to cart</span></div> </form> <script type="text/javascript"> $(function() { $('div#addtocardlink50339').click(function () { $('form#addtocardform50339').submit(); }); }); </script> </div> </div> </div> <div class="bookseriesvolumearticlelistitem"> <div class="content"> <div class="cover"></div> <div class="metadata"> <div class="expandable"> <div class="value title"><a href="/volumearticle/50340">Bus Centric Synchronous Message Exchange for Hardware Designs</a></div> <label>Authors</label> <div class="value authors">Brian Vinter, Kenneth Skovhede</div> <label>Pages</label> <div class="value pages">247 - 258</div> <label>DOI</label> <div class="value doi">10.3233/978-1-61499-886-0-247</div> <div class="abstract"> <b>Abstract</b><br /> <p>In this work we present a new design and implementation of the Synchronous Message Exchange model. The new version uses explicit busses, which may include multiple fields, and where a components may use a bus for both reading and writing, whereas the original version allowed only reading from or writing to a bus, which triggered a need for some busses to exist in two versions for different directions. In addition to the new and improved bus-model, the new SME version also produces traces that may be used for validating a later VHDL implementation of the designed component, and can produce a graphical representation of a design to help with debugging.</p> </div> </div><div class="expandbuttons"><div class="expand">&darr; more</div><div class="collapse">&uarr; less</div></div> </div> <div class="actions"> <form action="/Cart/Add" id="addtocardform50340" method="post"> <input type="hidden" name="id" value="50340" /> <input type="hidden" name="returnUrl" value="/volume/communicating-process-architectures-2015-2016-wotug-37-amp-wotug-38" /> <div id='addtocardlink50340' class="button addtocart"><span style="color: #555;">$35.00 / €27.50 / &#163;22.00</span><br /><span style="font-weight: bold; font-size: 10px;">Add PDF to cart</span></div> </form> <script type="text/javascript"> $(function() { $('div#addtocardlink50340').click(function () { $('form#addtocardform50340').submit(); }); }); </script> </div> </div> </div> <div class="bookseriesvolumearticlelistitem"> <div class="content"> <div class="cover"></div> <div class="metadata"> <div class="expandable"> <div class="value title"><a href="/volumearticle/50341">Model-Driven Design of Simulation Support for the TERRA Robot Software Tool Suite</a></div> <label>Authors</label> <div class="value authors">Zhou Lu, Maarten Bezemer, Jan Broenink</div> <label>Pages</label> <div class="value pages">259 - 274</div> <label>DOI</label> <div class="value doi">10.3233/978-1-61499-886-0-259</div> <div class="abstract"> <b>Abstract</b><br /> <p>Model-Driven Development (MDD) – based on the concepts of model, meta-model and model transformation – is an approach to develop predictable and reliable software for Cyber-Physical Systems (CPS). The work presented here concerns a methodology to design simulation software based on MDD techniques, supporting the TERRA tool suite to describe and simulate process communication flows. TERRA is implemented using MDD techniques and Communicating Sequential Process algebra (CSP). Simulation support for TERRA helps the designer to understand the semantics of the designed model and, hence, to increase the probability of first-time-right software implementation. A new simulation meta-model is proposed, abstracting the simulation process of a TERRA model. With this new meta-model and our previously designed CSP meta-model, a simulation model can be transformed from its TERRA source. The Eclipse Modelling Framework (EMF) is used to implement the meta-model. The Eclipse Epsilon Framework includes the Epsilon Transformation Language (ETL) and the Epsilon Generation Language (EGL), used for modelto-model and model-to-text transformation. The simulation support is shown using an example, in which the generated trace text is shown as well. Further work is to implement an animation facility showing the trace text in the TERRA graphical model using colours.</p> </div> </div><div class="expandbuttons"><div class="expand">&darr; more</div><div class="collapse">&uarr; less</div></div> </div> <div class="actions"> <form action="/Cart/Add" id="addtocardform50341" method="post"> <input type="hidden" name="id" value="50341" /> <input type="hidden" name="returnUrl" value="/volume/communicating-process-architectures-2015-2016-wotug-37-amp-wotug-38" /> <div id='addtocardlink50341' class="button addtocart"><span style="color: #555;">$35.00 / €27.50 / &#163;22.00</span><br /><span style="font-weight: bold; font-size: 10px;">Add PDF to cart</span></div> </form> <script type="text/javascript"> $(function() { $('div#addtocardlink50341').click(function () { $('form#addtocardform50341').submit(); }); }); </script> </div> </div> </div> <div class="bookseriesvolumearticlelistitem"> <div class="content"> <div class="cover"></div> <div class="metadata"> <div class="expandable"> <div class="value title"><a href="/volumearticle/50342">Code Specialisation of Auto-Generated GPU Kernels</a></div> <label>Authors</label> <div class="value authors">Troels Blum, Brian Vinter</div> <label>Pages</label> <div class="value pages">275 - 288</div> <label>DOI</label> <div class="value doi">10.3233/978-1-61499-886-0-275</div> <div class="abstract"> <b>Abstract</b><br /> <p>In this work we explore and evaluate the effect of automatic code specialisation on auto-generated GPU kernels. When combining the high productivity coding environment of computational science with the Just-In-Time compilation nature of many GPU runtime systems there is a clear cut opportunity for code optimisation and specialisation. We have developed a hybrid kernel generation method which is shown to be useful and competitive across very different use cases, and requires minimal knowledge of the overall structure of the program. Stencil codes which are commonly found at the core of computer simulations are ideal candidates for this type of code specialisation. For exactly this type of application we are able to achieve speedups of up to 2.5 times with the implemented strategy.</p> </div> </div><div class="expandbuttons"><div class="expand">&darr; more</div><div class="collapse">&uarr; less</div></div> </div> <div class="actions"> <form action="/Cart/Add" id="addtocardform50342" method="post"> <input type="hidden" name="id" value="50342" /> <input type="hidden" name="returnUrl" value="/volume/communicating-process-architectures-2015-2016-wotug-37-amp-wotug-38" /> <div id='addtocardlink50342' class="button addtocart"><span style="color: #555;">$35.00 / €27.50 / &#163;22.00</span><br /><span style="font-weight: bold; font-size: 10px;">Add PDF to cart</span></div> </form> <script type="text/javascript"> $(function() { $('div#addtocardlink50342').click(function () { $('form#addtocardform50342').submit(); }); }); </script> </div> </div> </div> <div class="bookseriesvolumearticlelistitem"> <div class="content"> <div class="cover"></div> <div class="metadata"> <div class="expandable"> <div class="value title"><a href="/volumearticle/50343">Dealing with (Real-)Time in Real-World Hybrid Systems - Workshop Position Paper</a></div> <label>Authors</label> <div class="value authors">Pieter van Schaik, Eric Verhulst</div> <label>Page</label> <div class="value pages">289</div> <label>DOI</label> <div class="value doi">10.3233/978-1-61499-886-0-289</div> <div class="abstract"> <b>Abstract</b><br /> <p>One of the issues that has been bothering embedded systems engineers is how to deal with time. Some approaches have attempted to make time part of the modelling language, other approaches turn it in a partial order of events, while most programmers ignore it completely equating QoS with real-time (most of the time but not guaranteed). While in the discrete domain, time is considered to be progressing as a number of clock cycles, in the continuous domain time has an infinitesimal granularity. If we now want to proof the correctness of a hybrid system, people traditionally use time dependent partial ordinary differential equations in the continuous domain and model checkers or provers for the discrete domain.</p><p>How can we combine the two? Following the Keynote [1] theme, we remember to separate the concerns. Hence we need time-independent models that, when executed on a given platform or in a given system context, result in specific time properties (like meeting a deadline or stability). In the discrete domain, this can be achieved by using priority as a scheduling parameter. In the continuous domain, engineers routinely transform the model into the frequency domain to prove desired properties using Nyquist or Laplace. The workshop will look for answers on how such hybrid models can be formally verified (as opposed to simulation and testing only). Slides used introducing this workshop can be downloaded from [2].</p> </div> </div><div class="expandbuttons"><div class="expand">&darr; more</div><div class="collapse">&uarr; less</div></div> </div> <div class="actions"> <form action="/Download/Pdf" id="downloadform50343" method="post"> <input type="hidden" name="id" value="50343" /> <div id='downloadlink50343' class="button getpdf">Download </div> </form> <script type="text/javascript"> $(function () { $('div#downloadlink50343').click(function () { $('form#downloadform50343').submit(); }); }); </script> </div> </div> </div> <div class="bookseriesvolumearticlelistitem"> <div class="content"> <div class="cover"></div> <div class="metadata"> <div class="expandable"> <div class="value title"><a href="/volumearticle/50344">The Role of Concurrency in the Modern HPC Center - Workshop Position Paper</a></div> <label>Authors</label> <div class="value authors">Brian Vinter</div> <label>Page</label> <div class="value pages">291</div> <label>DOI</label> <div class="value doi">10.3233/978-1-61499-886-0-291</div> <div class="abstract"> <b>Abstract</b><br /> <p>The modern HPC centre is a complex entity. A centre easily hosts tens of thousands of processors in the smallest cases, and several million processors for the largest facilities. Before 2020, this number is expected to pass 100 million processors in a single centre alone. Thus, massive parallel processing is everyday business today and the major challenges of running such facilities are well established, with solutions existing for most of these challenges.</p><p>In the following we will make a strong distinction between parallelism (e.g. Single Program Multiple Data and Single Instruction Multiple Data) and concurrency (multiple processes, both identical and different) that may run in parallel or by interleaving, depending on timing and available hardware.</p><p>While concurrency mechanisms were commonly used to express applications for parallel computers two or three decades ago, this use of concurrency has completely died out. There are several explanations for this, but the most important is that the cost of an HPC installation today is so high that users must document that they use the facility efficiently. All applications must stay above a specified threshold, typically 70%, of CPU utilisation. Even with SPMD type programming, asynchrony amongst processors is a common challenge when trying to stay above this threshold.</p><p>This does not mean that concurrency is not relevant in the modern HPC centre. While the actual compute-nodes may not use concurrency, the underlying fabric, that allows those nodes to operate, has a large potential for concurrency. In many cases, these elements could benefit from a formal approach to concurrency control.</p><p>In this workshop, we will present challenges in the HPC centre that do depend on concurrency: storage-systems, schedulers, backup-systems, archiving and network-bulk transfers, to name a few. The interesting challenge is that while all these elements require concurrency control to operate correctly and efficiently, they are also highly interdependent – the concurrency aspects must cover the full set of infrastructure components for optimal efficiency. We will seek to describe scenarios for real HPC centres and sketch solutions that are built on a structured concurrency approach. Slides used introducing this workshop can be downloaded from [1].</p> </div> </div><div class="expandbuttons"><div class="expand">&darr; more</div><div class="collapse">&uarr; less</div></div> </div> <div class="actions"> <form action="/Download/Pdf" id="downloadform50344" method="post"> <input type="hidden" name="id" value="50344" /> <div id='downloadlink50344' class="button getpdf">Download </div> </form> <script type="text/javascript"> $(function () { $('div#downloadlink50344').click(function () { $('form#downloadform50344').submit(); }); }); </script> </div> </div> </div> <div class="bookseriesvolumearticlelistitem"> <div class="content"> <div class="cover"></div> <div class="metadata"> <div class="expandable"> <div class="value title"><a href="/volumearticle/50345">Message-Passing Concurrency Shootout - Workshop Position Paper</a></div> <label>Authors</label> <div class="value authors">Kevin Chalmers</div> <label>Pages</label> <div class="value pages">293 - 295</div> <label>DOI</label> <div class="value doi">10.3233/978-1-61499-886-0-293</div> <div class="abstract"> <b>Abstract</b><br /> <p>In the last few years, there have been a number of new programming languages which incorporate message-passing concurrency. Examples, such as Google's Go and Mozilla's Rust, have shown an increased industry and academic interest in the ideas of message-passing concurrency as a first order concern. These languages have joined existing ones such as occam-π, Erlang, and Ada with strong communication-based concurrency. It is therefore argued that the concurrent systems programmer has a number of options for exploiting message-based concurrency.</p><p>The Communicating Process Architectures (CPA) community, and others, have for a number of years developed libraries to support message-passing concurrency within existing programming languages and run-times. This support is normally built upon the thread support libraries of the host language. JCSP (for Java) and PyCSP (for Python) are commonly discussed, but support for CPA ideas has also been implemented in Haskell, C++, Lua, and other languages.</p><p>The languages and libraries supporting message-passing concurrency are normally inspired by one or more process algebras. Hoare's Communicating Sequential Processes (CSP) and Milner's π-calculus are the two main inspirations for message-passing work. It is questionable, however, how well these process algebras are supported in the languages and libraries they inspire.</p><p>Slides used introducing this workshop can be downloaded from [1].</p> </div> </div><div class="expandbuttons"><div class="expand">&darr; more</div><div class="collapse">&uarr; less</div></div> </div> <div class="actions"> <form action="/Cart/Add" id="addtocardform50345" method="post"> <input type="hidden" name="id" value="50345" /> <input type="hidden" name="returnUrl" value="/volume/communicating-process-architectures-2015-2016-wotug-37-amp-wotug-38" /> <div id='addtocardlink50345' class="button addtocart"><span style="color: #555;">$35.00 / €27.50 / &#163;22.00</span><br /><span style="font-weight: bold; font-size: 10px;">Add PDF to cart</span></div> </form> <script type="text/javascript"> $(function() { $('div#addtocardlink50345').click(function () { $('form#addtocardform50345').submit(); }); }); </script> </div> </div> </div> <div class="bookseriesvolumearticlelistitem"> <div class="content"> <div class="cover"></div> <div class="metadata"> <div class="expandable"> <div class="value title"><a href="/volumearticle/50346">Not that Blocking! - Fringe Presentation</a></div> <label>Authors</label> <div class="value authors">&#216;yvind Teig</div> <label>Page</label> <div class="value pages">297</div> <label>DOI</label> <div class="value doi">10.3233/978-1-61499-886-0-297</div> <div class="abstract"> <b>Abstract</b><br /> <p>Communicating to fellow programmers that the concept of blocking in process-oriented design is perfectly acceptable, while using a word with basically negative connotations, is difficult. The bare need to do it often means that misunderstanding this concept is common and harmful. The first contender on a “blocking” channel has alternatively been said (by several people) to wait (rather than block) on the channel. This seems a more accurate description and is certainly more positive.</p><p>A better correspondence between the negative meaning and semantics is when “blocking” describes serious side effects on the temporal properties of other concurrent components. This is the correctly feared blocking.</p><p>One example is when a process has too many internal work-tasks to handle and any one such cannot acceptably “block” for other work tasks for too long. The “blocking-on-each-other” blocking type that we know as deadlock is perhaps the worst kind. A system cannot survive for long should this happen (in a sub-system, say).</p><p>When the literature over the last years talks about non-blocking algorithms, it has in fact been talking about the “waiting” type. It might be easier to refer to this when describing the semantics of a synchronous (and, in this context, non-blocking) CSP type channel. The same could be reasoned of the interface-RPC-call or entry type mechanisms of Ada and xC: i.e. that they are the “waiting” type. To gain understanding and acceptance of these types of solutions, we should simply avoid the “blocking” term in the CSP context. Phrases like “wait”, “yield”, “synchronous” and “non-buffered” should suffice. This fringe presentation will explore this further and invite discussion. Slides used in the presentation can be downloaded from [1].</p> </div> </div><div class="expandbuttons"><div class="expand">&darr; more</div><div class="collapse">&uarr; less</div></div> </div> <div class="actions"> <form action="/Download/Pdf" id="downloadform50346" method="post"> <input type="hidden" name="id" value="50346" /> <div id='downloadlink50346' class="button getpdf">Download </div> </form> <script type="text/javascript"> $(function () { $('div#downloadlink50346').click(function () { $('form#downloadform50346').submit(); }); }); </script> </div> </div> </div> <div class="bookseriesvolumearticlelistitem"> <div class="content"> <div class="cover"></div> <div class="metadata"> <div class="expandable"> <div class="value title"><a href="/volumearticle/50347">Not that Concurrent! - Fringe Presentation</a></div> <label>Authors</label> <div class="value authors">&#216;yvind Teig</div> <label>Page</label> <div class="value pages">299</div> <label>DOI</label> <div class="value doi">10.3233/978-1-61499-886-0-299</div> <div class="abstract"> <b>Abstract</b><br /> <p>Concurrency is, in the literature, often used as a noun with a range of strengths: there is more or less concurrency; it is more or less limited; it may even be seen described as complete. In trying to discuss multi-threaded programming with programmers who state that they program single-threaded, it is important to communicate that they may program less concurrently, but probably not as non-concurrently as they believe. What are the factors that increase concurrency and which factors are orthogonal to the degree of concurrency? Does a Go language goroutine increase it and is a C++ object orthogonal? Will the CSP paradigm generally enable increased concurrency? Is the CSP paradigm of communication-with-synchronisation itself orthogonal to the degree of concurrency? It is also important to understand the term parallel slackness: does it introduce or enable more concurrency? And what about atomicity?</p><p>This fringe presentation aims to raise more questions that it is able to answer. However, some lines of reasoning are suggested. Finally: is it at all meaningful to raise the awareness of concurrent as an adjective?</p><p>Slides used in the presentation can be downloaded from [1].</p> </div> </div><div class="expandbuttons"><div class="expand">&darr; more</div><div class="collapse">&uarr; less</div></div> </div> <div class="actions"> <form action="/Cart/Add" id="addtocardform50347" method="post"> <input type="hidden" name="id" value="50347" /> <input type="hidden" name="returnUrl" value="/volume/communicating-process-architectures-2015-2016-wotug-37-amp-wotug-38" /> <div id='addtocardlink50347' class="button addtocart"><span style="color: #555;">$35.00 / €27.50 / &#163;22.00</span><br /><span style="font-weight: bold; font-size: 10px;">Add PDF to cart</span></div> </form> <script type="text/javascript"> $(function() { $('div#addtocardlink50347').click(function () { $('form#addtocardform50347').submit(); }); }); </script> </div> </div> </div> <div class="bookseriesvolumearticlelistitem"> <div class="content"> <div class="cover"></div> <div class="metadata"> <div class="expandable"> <div class="value title"><a href="/volumearticle/50348">C++11 CSP - Fringe Presentation</a></div> <label>Authors</label> <div class="value authors">Kevin Chalmers</div> <label>Pages</label> <div class="value pages">301 - 306</div> <label>DOI</label> <div class="value doi">10.3233/978-1-61499-886-0-301</div> <div class="abstract"> <b>Abstract</b><br /> <p>This fringe presentation focuses on development undertaken on a library to support CSP ideas within the new C++11 standard. The library has been developed to undertake development of a MPI layer for CPA Networking, with C and C++ being simpler languages to build up such a framework. This fringe presentation will generally look at how we can write applications using C++11 CSP.</p> </div> </div><div class="expandbuttons"><div class="expand">&darr; more</div><div class="collapse">&uarr; less</div></div> </div> <div class="actions"> <form action="/Cart/Add" id="addtocardform50348" method="post"> <input type="hidden" name="id" value="50348" /> <input type="hidden" name="returnUrl" value="/volume/communicating-process-architectures-2015-2016-wotug-37-amp-wotug-38" /> <div id='addtocardlink50348' class="button addtocart"><span style="color: #555;">$35.00 / €27.50 / &#163;22.00</span><br /><span style="font-weight: bold; font-size: 10px;">Add PDF to cart</span></div> </form> <script type="text/javascript"> $(function() { $('div#addtocardlink50348').click(function () { $('form#addtocardform50348').submit(); }); }); </script> </div> </div> </div> </div> <div class="contentspagination bottom"> <div class="pagination PagedList-pager"><ul><li class="previous disabled PagedList-skipToFirst"><a>&laquo;</a></li><li class="disabled PagedList-skipToPrevious"><a>&lsaquo;</a></li><li class="active"><a>1</a></li><li><a data-ajax="true" data-ajax-method="get" data-ajax-mode="replace" data-ajax-update="#unobtrusive" href="/Publication/Descendants/50324?page=2" title="Show page 2">2</a></li><li><a data-ajax="true" data-ajax-method="get" data-ajax-mode="replace" data-ajax-update="#unobtrusive" href="/Publication/Descendants/50324?page=3" title="Show page 3">3</a></li><li class="PagedList-skipToNext"><a data-ajax="true" data-ajax-method="get" data-ajax-mode="replace" data-ajax-update="#unobtrusive" href="/Publication/Descendants/50324?page=2" title="Show next page">&rsaquo;</a></li><li class="next PagedList-skipToLast"><a data-ajax="true" data-ajax-method="get" data-ajax-mode="replace" data-ajax-update="#unobtrusive" href="/Publication/Descendants/50324?page=3" title="Show last page">&raquo;</a></li></ul></div> </div> <script type="text/javascript"> initExpandBoxesById("volumearticles", 10); </script> </div> </div> </div> <div id="footer" class="clearfix"> <script type="text/javascript"> $(document).ready(function () { $('[id^="tip_"]').mouseenter(function () { $(this).stop(true); $(this).hide().show(); }); $('.tip').mouseleave(function () { $('[id^="tip_"]').fadeOut(600, function () { $('[id^="tip_"]').hide() }); }); $('[name^="atip_"]').mouseenter(function () { var idtoshow = $(this).attr('name').substring(1); $('#' + idtoshow).hide().fadeIn(600, function () { $('#' + idtoshow).show() }); }); $('[name^="atip_"]').mouseleave(function () { var idtoshow = $(this).attr('name').substring(1); $('#' + idtoshow).fadeOut(600, function () { $('#' + idtoshow).hide() }); }); }); </script> <div id="default_footer"> <div id="footer_contact"> <h3> Contact </h3> <ul class="list" style="float: left"> <li><a name="atip_usa" href="#">North America</a></li> <li><a name="atip_europe" href="#">Europe</a></li> <li><a name="atip_asia" href="#">Asia</a></li> </ul> <a name="atip_usa" id="usa" class="usa" href="#"></a> <a name="atip_europe" id="europe" class="europe" href="#"></a> <a name="atip_asia" id="asia" class="asia" href="#"></a> <div id="tip_usa" style="display: none;"> <div class="tip"> <strong>IOS Press, Inc</strong>.<br /> 6751 Tepper Drive<br /> Clifton, VA 20124<br /> U.S.A.<br /> Tel.: +1 703 830 6300<br /> Fax: +1 703 830 2300<br /> <a href="mailto:sales@iospress.com">sales@iospress.com</a><br /> (Corporate matters and books only)<br /> <hr class="dotted" /> <strong>IOS Press c/o Accucoms US, Inc.</strong><br /> For North America Sales and Customer Service<br /> West Point Commons<br /> Suite 201<br /> Lansdale PA 19446<br /> USA<br /> Tel.: +1 866 855 8967<br /> Fax: +1 215 660 5042<br /> <a href="mailto:iospress@accucoms.com">iospress@accucoms.com</a><br /> (Journals only)<br /> </div> </div> <div id="tip_europe" style="display: none;"> <div class="tip"> <strong>IOS Press</strong><br /> Nieuwe Hemweg 6B<br /> 1013 BG Amsterdam<br /> The Netherlands<br /> Tel: +31 20 688 3355<br /> Fax: +31 20 687 0019<br /> <a href="mailto:info@iospress.nl">info@iospress.nl</a><br /> </div> </div> <div id="tip_asia" style="display: none;"> <div class="tip"> <strong>IOS Press</strong><br /> c/o Ohmsha, Ltd.<br /> 3-1 Kanda Nishiki-cho<br /> Chiyoda-ku<br /> Tokyo 101<br /> Japan<br /> Fax: +81 3 3233 2426<br /> (Books only)<br /> <hr class="dotted" /> <strong>Inspirees International China</strong><br /> Ocean Express F-802<br /> Xiaguangli 66<br /> 100027, Beijing<br /> China<br /> Tel. & Fax: +86 10 8446 7847<br /> Free service line: 400 661 8717<br /> </div> </div> </div> <div id="footer_divider"> </div> <div id="footer_links"> <h3> IOS Press Copyright 2025 </h3> <a href="/publisher/Disclaimer/">Disclaimer</a> &nbsp;&nbsp;&nbsp; <a href="/publisher/TermsOfUse/"> Terms of use </a>&nbsp;&nbsp;&nbsp;<a href="/publisher/PrivacyPolicy/"> Privacy Policy </a>&nbsp;&nbsp;&nbsp;<a href="/publisher/Contact/"> Contact </a>&nbsp;&nbsp;&nbsp;<a href="/publisher/Faq/">FAQ</a> </div> <div id="footer_twitter"> <a href="http://twitter.com/IOSPress_STM" target="_blank"> <img alt="twitter" src="/Content/themes/iospress/images/twitter.gif" /> </a> </div> </div> </div> <script type="text/javascript"> if (typeof jQuery == 'undefined') { var e = document.createElement('script'); e.src = '/Scripts/jquery-3.5.1.min.js'; e.type = 'text/javascript'; document.getElementsByTagName("head")[0].appendChild(e); } </script> <script src="/bundles/subjectmenu?v=jieOsy0lZdhfbuK00Z1qohST722ZF4yIVuWCjPrX6ZE1"></script> <script src="/bundles/pubility?v=meEJdaSXIsVeUXAotcBmWyMjARi2G38fFL4j3SAMa9c1"></script> <script type="text/javascript"> $(document).ready(function () { initExpandBoxes(12); }) </script> <style> .cookie-consent-banner { display: none; position: fixed; bottom: 0; left: 0; right: 0; background-color: #f8f9fa; box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.1); color: black; padding: 15px; font-size: 14px; text-align: center; z-index: 1000; } .cookie-consent-banner h3 { padding: 0px 0px; font-size: 14px; font-weight: bolder; } .cookie-consent-button { border: none; padding: 8px 16px; text-align: center; text-decoration: none; display: inline-block; font-size: 14px; margin: 4px 2px; cursor: pointer; border-radius: 4px; } .cookie-consent-button:hover { box-shadow: 0 -2px 5px rgba(0, 0, 0, 0.2); } .cookie-consent-button:active { opacity: .5; } .cookie-consent-button.btn-success { background-color: #34a853; color: white; } .cookie-consent-button.btn-grayscale { background-color: #dfe1e5; color: black; } .cookie-consent-button.btn-outline { background-color: #e6f4ea; color: #34a853; } .cookie-consent-options { display: flex; justify-content: center; flex-wrap: wrap; margin-bottom: 10px; } .cookie-consent-options label { margin: 4px 5px; font-size: 12px; font-weight: normal; } .cookie-consent-options input { margin-right: 5px; } </style> <div id="cookie-consent-banner-basic" class="cookie-consent-banner"> <h3>This website uses cookies</h3> <p> We use cookies to provide you with the best possible experience. They also allow us to analyze user behavior in order to constantly improve the website for you. Info about the <a href="/publisher/PrivacyPolicy/">privacy policy</a> of IOS Press. </p> <button id="btn-advanced-basic" class="cookie-consent-button btn-grayscale">Customize</button> <button id="btn-accept-all-basic" class="cookie-consent-button btn-success">Accept</button> </div> <div id="cookie-consent-banner-advanced" class="cookie-consent-banner"> <h3>This website uses cookies</h3> <p> We use cookies to provide you with the best possible experience. They also allow us to analyze user behavior in order to constantly improve the website for you. Info about the <a href="/publisher/PrivacyPolicy/">privacy policy</a> of IOS Press. </p> <button id="btn-reject-all-advanced" class="cookie-consent-button btn-grayscale" style="display:none">Reject All</button> <button id="btn-accept-some-advanced" class="cookie-consent-button btn-outline">Accept Selection</button> <button id="btn-accept-all-advanced" class="cookie-consent-button btn-success">Accept</button> <div class="cookie-consent-options"> <label><input id="consent-necessary" type="checkbox" value="Necessary" checked disabled>Necessary</label> <label><input id="consent-preferences" type="checkbox" value="Preferences" checked>Preferences</label> <label><input id="consent-analytics" type="checkbox" value="Analytics" checked>Analytics</label> <label><input id="consent-marketing" type="checkbox" value="Marketing" checked>Marketing</label> </div> </div> <script> function hideBannerAdvanced() { document.getElementById('cookie-consent-banner-advanced').style.display = 'none'; } function hideBannerBasic() { document.getElementById('cookie-consent-banner-basic').style.display = 'none'; } function hideAll() { hideBannerBasic(); hideBannerAdvanced(); } function showBannerAdvanced() { if (localStorage.getItem('consentMode') !== null) { var consentmode = JSON.parse(localStorage.getItem('consentMode')); document.getElementById('consent-analytics').checked = (consentmode.analytics_storage === 'granted'); document.getElementById('consent-preferences').checked = (consentmode.personalization_storage === 'granted'); document.getElementById('consent-marketing').checked = (consentmode.ad_storage === 'granted'); } document.getElementById('cookie-consent-banner-advanced').style.display = 'block'; } function showBannerBasic() { if (localStorage.getItem('consentMode') !== null) { var consentmode = JSON.parse(localStorage.getItem('consentMode')); document.getElementById('consent-analytics').checked = (consentmode.analytics_storage === 'granted'); document.getElementById('consent-preferences').checked = (consentmode.personalization_storage === 'granted'); document.getElementById('consent-marketing').checked = (consentmode.ad_storage === 'granted'); } document.getElementById('cookie-consent-banner-basic').style.display = 'block'; } document.getElementById('btn-accept-all-basic').addEventListener('click', function () { setConsent({ necessary: true, analytics: true, preferences: true, marketing: true }); hideAll(); }); document.getElementById('btn-accept-all-advanced').addEventListener('click', function () { setConsent({ necessary: true, analytics: true, preferences: true, marketing: true }); hideAll(); }); document.getElementById('btn-advanced-basic').addEventListener('click', function () { hideBannerBasic(); showBannerAdvanced(); }); document.getElementById('btn-accept-some-advanced').addEventListener('click', function () { setConsent({ necessary: true, analytics: document.getElementById('consent-analytics').checked, preferences: document.getElementById('consent-preferences').checked, marketing: document.getElementById('consent-marketing').checked }); hideAll(); }); document.getElementById('btn-reject-all-advanced').addEventListener('click', function () { setConsent({ necessary: false, analytics: false, preferences: false, marketing: false }); hideAll() }); if (localStorage.getItem('consentMode') === null) { showBannerBasic(); } function setConsent(consent) { const consentMode = { 'ad_storage': consent.marketing ? 'granted' : 'denied', 'ad_user_data': consent.marketing ? 'granted' : 'denied', 'ad_personalization': consent.marketing ? 'granted' : 'denied', 'analytics_storage': consent.analytics ? 'granted' : 'denied', 'personalization_storage': consent.preferences ? 'granted' : 'denied', 'functionality_storage': consent.necessary ? 'granted' : 'denied', 'security_storage': consent.necessary ? 'granted' : 'denied', }; gtag('consent', 'update', consentMode); localStorage.setItem('consentMode', JSON.stringify(consentMode)); } </script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10