<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Stefan-Marr.de &#187; concurrency</title>
	<atom:link href="http://soft.vub.ac.be/~smarr/tag/concurrency/feed/" rel="self" type="application/rss+xml" />
	<link>http://soft.vub.ac.be/~smarr</link>
	<description>personal and research notes</description>
	<lastBuildDate>Tue, 24 Jan 2012 18:41:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Modularity and Conventions for Maintainable Concurrent Language Implementations: A Review of Our Experiences and Practices</title>
		<link>http://soft.vub.ac.be/~smarr/2012/01/modularity-and-conventions-for-maintainable-concurrent-language-implementations-a-review-of-our-experiences-and-practices/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=modularity-and-conventions-for-maintainable-concurrent-language-implementations-a-review-of-our-experiences-and-practices</link>
		<comments>http://soft.vub.ac.be/~smarr/2012/01/modularity-and-conventions-for-maintainable-concurrent-language-implementations-a-review-of-our-experiences-and-practices/#comments</comments>
		<pubDate>Tue, 24 Jan 2012 11:30:37 +0000</pubDate>
		<dc:creator>Stefan</dc:creator>
				<category><![CDATA[Research]]></category>
		<category><![CDATA[Case Study]]></category>
		<category><![CDATA[concurrency]]></category>
		<category><![CDATA[Experience Report]]></category>
		<category><![CDATA[MISS Workshop]]></category>
		<category><![CDATA[Modularity]]></category>
		<category><![CDATA[Virtual Machines]]></category>
		<category><![CDATA[VMs]]></category>

		<guid isPermaLink="false">http://soft.vub.ac.be/~smarr/?p=521</guid>
		<description><![CDATA[Modularity: AOSD&#8217;12 will be in Potsdam at the end of March, and I am looking forward especially to the MISS&#8217;12 workshop. My understanding of the workshop&#8217;s format is that its goal is to encourage the participants to actively interact. Far to often, workshops are just a collection of semi-related presentations, without a common problem and [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://aosd.net/2012/">Modularity: AOSD&#8217;12</a> will be in Potsdam at the end of March, and I am looking forward especially to the <a href="http://www.aosd.net/workshops/miss/2012/">MISS&#8217;12 workshop</a>.</p>

<p>My understanding of the workshop&#8217;s format is that its goal is to encourage the participants to actively interact. Far to often, workshops are just a collection of semi-related presentations, without a common problem and without a common goal. I fear a bit, the MISS workshop will have a similar problem. Being part of the program committee, I have seen all the submissions and the author do tend to prefer <em>business as usual</em> over actual position papers. From my perspective, this is really a pity. It is a lost chance to really exchange ideas actively and perhaps start collaborations with interesting people. A technical paper, with a few ideas and a work-in-progress prototype does not qualify as a position paper in my opinion. Usually, that kind of work only encourages discussion between people that have been working on similar things already. But let&#8217;s see how it turns out.</p>

<p>Our contribution to the workshop is a little experience report on how concurrency and modularity are related to each other in interpreter implementations. And, to make it short: modularity does matter to manage concurrency invariants, but things like AOP are far less important than some people might hope.</p>

<p><strong>Abstract</strong></p>
<blockquote>
<p>In this paper, we review what we have learned from implementing languages for
parallel and concurrent programming, and investigate the role of modularity.
To identify the approaches used to facilitate correctness and maintainability,
we ask the following questions: What guides modularization? Are informal
approaches used to facilitate correctness? Are concurrency concerns
modularized? And, where is language support lacking most?</p>

<p>Our subjects are AmbientTalk, SLIP, and the RoarVM. All three evolved over the
years, enabling us to look back at specific experiments to understand the
impact of concurrency on modularity.</p>

<p>We conclude from our review that concurrency concerns are one of the strongest
drivers for the definition of module boundaries. It helps when languages offer
sophisticated modularization constructs. However, with respect to concurrency,
other language features like single-assignment are of greater importance.
Furthermore, tooling that enables remodularization taking concurrency
invariants into account would be of great value.</p></blockquote>
<ul>
	<li>Modularity and Conventions for Maintainable Concurrent Language Implementations: A Review of Our Experiences and Practices, <em>Stefan Marr</em>, <em>Jens Nicolay</em>, <em>Tom Van Cutsem</em>, <em>Theo D&#8217;Hondt</em>, Proceedings of the 2nd Workshop on  Modularity In Systems Software (MISS&#8217;2012), ACM (2012), to appear.</li>
	<li>Paper: <a title="Modularity and Conventions for Maintainable Concurrent Language Implementations: A Review of Our Experiences and Practices" href="http://soft.vub.ac.be/~smarr/downloads/miss12-smarr-et-al-modularity-and-conventions-for-maintainable-concurrent-language-implementations.pdf">PDF</a><br /> ©ACM, 2012. This is the author&#8217;s version of the work. It is posted here by permission of ACM for your personal use. Not for redistribution. To appear.</li>
	<li>BibTex: <a href="http://www.bibsonomy.org/bibtex/2442f0063842536e3628d10a4244620b6/gron">BibSonomy</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://soft.vub.ac.be/~smarr/2012/01/modularity-and-conventions-for-maintainable-concurrent-language-implementations-a-review-of-our-experiences-and-practices/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OOSPLA 2011 @SPLASH2011, Day 3</title>
		<link>http://soft.vub.ac.be/~smarr/2011/11/oospla-2011-splash2011-day-3/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=oospla-2011-splash2011-day-3</link>
		<comments>http://soft.vub.ac.be/~smarr/2011/11/oospla-2011-splash2011-day-3/#comments</comments>
		<pubDate>Wed, 02 Nov 2011 09:00:38 +0000</pubDate>
		<dc:creator>Stefan</dc:creator>
				<category><![CDATA[Research]]></category>
		<category><![CDATA[concurrency]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[JIT]]></category>
		<category><![CDATA[OOPSLA]]></category>
		<category><![CDATA[parallel]]></category>
		<category><![CDATA[SPLASH]]></category>
		<category><![CDATA[VM]]></category>

		<guid isPermaLink="false">http://soft.vub.ac.be/~smarr/?p=495</guid>
		<description><![CDATA[The third day started with Brendan Eich’s keynote on JavaScript’s world domination plan. It was a very technical keynote, not very typical I suppose. And he was rushing through his slides with an enormous speed. Good that I have some JavaScript background. Aside all the small things he mentioned, interesting for me is that he [...]]]></description>
			<content:encoded><![CDATA[<p>The third day started with <a href="http://splashcon.org/2011/program/keynotes/189-wavefront-keynote-the-javascript-world-domination-plan-at-16-years">Brendan Eich’s keynote on JavaScript’s world domination plan</a>. It was a very technical keynote, not very typical I suppose. And he was rushing through his slides with an enormous speed. Good that I have some JavaScript background. Aside all the small things he mentioned, interesting for me is that he seemed to be very interested to get <a href="https://github.com/RiverTrail/RiverTrail">Intel’s RiverTrail</a> approach to data-parallelism into ECMAScript in one or another form. That is kind of contradicting the position I heard so far, that ECMAScript would be done with having WebWorkers as a model for concurrency and parallel programming.</p>
<h2>Language Implementation</h2>
<p>The first session had two interesting VM talks for me. The first being <a href="http://dx.doi.org/10.1145/2048066.2048126">JIT Compilation Policy for Modern Machines</a>. With the assumption that you cannot get your multicore/manycore machines busy with application threads, they experimented how additional compilation threads can be used to optimize code better. I do not remember the details completely, but I think, after 7 compilation threads they reached a mark where it was not worthwhile anymore to add more threads.</p>
<p>The second talk was on <a href="http://dx.doi.org/10.1145/2048066.2048127">Reducing Trace Selection Footprint for Large-scale Java Applications with no Performance Loss</a>. The goal here is to reduce the number of trace in a tracing JIT that need to be kept around and optimized. Might be something interesting for PyPy and LuaJIT2 to consider.</p>
<h2>Parallel and Concurrent Programming</h2>
<p>The last session I attended was again on parallel and concurrent programing. The first paper <a href="http://dx.doi.org/10.1145/2048066.2048131">A Simple Abstraction for Complex Concurrent Indexes</a> was a pretty formal one.</p>
<p>The second paper is a pessimistic approach to implement atomic statements meant for systems programming: <a href="http://dx.doi.org/10.1145/2048066.2048132">Composable, Nestable, Pessimistic Atomic Statements</a>. It is not optimistic like STM, and does not use a global locking order, which would need to be determined statically. Instead they annotate the fields with so-called shelters. Shelters build a hierarchy, which describes the necessary parts to synchronize with.</p>
<p>The third paper was also a very interesting one for me: <a href="http://dx.doi.org/10.1145/2048066.2048133">Delegated Isolation</a>. It is an approach again similar to STM in a sense, but it avoids unbounded number of transaction retries. For that, the object graph is essentially partitioned in growing subgraphs that can be processed in parallel. Only when a conflict, a race-condition occurred, subgraphs are merged logically, and the computation is serialized. A neat idea and an interesting use of the object-ownership idea.</p>
<p>The last talk was on: <a href="http://dx.doi.org/10.1145/2048066.2048134">AC: Composable Asynchronous IO for Native Languages</a>. It was a presentation of work done in the context of the <a href="www.barrelfish.org">Barrelfish manycore OS</a>. The goal was to have an easy to use programming model, that comes close to sequential programming, but has similar performance properties as typical asynchronous APIs in operating systems. The result is a model based on async/finish, that seems to be relatively nice. As I understand it, it is basically syntactic sugar and some library support to wrap typical asynchronous APIs. But it is a model that is purely focused on such request/response asynchrony, and does not handle concurrency/parallism.</p>
<p>And that was basically it. SPLASH is a nice conference when it comes to the content. Not so interesting when it comes to the social “events”, it wasn&#8217;t much of an event anyway. Not even the food was notable…</p>
]]></content:encoded>
			<wfw:commentRss>http://soft.vub.ac.be/~smarr/2011/11/oospla-2011-splash2011-day-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OOSPLA 2011 @SPLASH2011, Day 2</title>
		<link>http://soft.vub.ac.be/~smarr/2011/10/oospla-2011-splash2011-day-2/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=oospla-2011-splash2011-day-2</link>
		<comments>http://soft.vub.ac.be/~smarr/2011/10/oospla-2011-splash2011-day-2/#comments</comments>
		<pubDate>Mon, 31 Oct 2011 10:00:19 +0000</pubDate>
		<dc:creator>Stefan</dc:creator>
				<category><![CDATA[Research]]></category>
		<category><![CDATA[concurrency]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[Manycore]]></category>
		<category><![CDATA[OOPSLA]]></category>
		<category><![CDATA[parallel]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[SPLASH]]></category>

		<guid isPermaLink="false">http://soft.vub.ac.be/~smarr/?p=491</guid>
		<description><![CDATA[The second day of the technical tracks started with a keynote by Markus Püschel. He is not the typical programming language researcher you meet at OOPSLA, but he does research in automatic optimization of programs. In his keynote, he showed a number of examples how to get the best performance for a given algorithm out [...]]]></description>
			<content:encoded><![CDATA[<p>The second day of the technical tracks started with a <a href="http://splashcon.org/2011/program/keynotes/188-onward-keynote">keynote by Markus Püschel</a>. He is not the typical programming language researcher you meet at OOPSLA, but he does research in automatic optimization of programs. In his keynote, he showed a number of examples how to get the best performance for a given algorithm out of a particular processor architecture. Today’s compilers are still not up to the task, and will probably never be up to it. Given a naïve implementation, hand-optimized C code can have 10x speedup when dependencies are made explicit, and the compiler knows that no aliasing can happen. He was then discussing how that can be approached in an automated way, and was also thinking about what programming languages could do.</p>
<h2>Award Papers</h2>
<p>Afterwards, I attended the session with the awarded OOPSLA papers. The <a href="http://dx.doi.org/10.1145/2048066.2048098">Hybrid Partial Evaluation</a> talk presented an approach to avoid the typical cost of use of reflection or ‘interpretation’. The presentation of <a href="http://dx.doi.org/10.1145/2048066.2048099">SugarJ: Library-based Syntactic Languages</a> felt like a déjà vu. I did not get where it is different from <a href="http://scg.unibe.ch/research/helvetia">Helvetica</a> other than that it is for Java. The third paper on <a href="http://dx.doi.org/10.1145/2048066.2048100">Reactive Imperative Programming with Dataflow Constraints</a> was interesting in that it used also memory protection tricks to realize a reactive model in C++. The last presentation: <a href="http://dx.doi.org/10.1145/2048066.2048101">Two for the Price of One: A Model for Parallel and Incremental Computation</a> was very interesting. I have not used incremental computations as far as I am aware of anywhere other than for course work, but bringing it together with parallel programming in a single programming model, gives plenty of opportunities for super-linear speedups.</p>
<h2>Parallel and Concurrent Programming</h2>
<p>The second session of the day was on parallel and concurrent programming. <a href="http://dx.doi.org/10.1145/2048066.2048108">Kismet: Parallel Speedup Estimates for Sequential Programs</a> tackled the problem to get an idea of what opportunities for parallelism are available in a given program without having to change the used algorithms and approaches to much. For that, it uses data dependency analysis to characterize the critical path on a data-flow level. Since that usually does not give realistic results because of overestimation of parallelizability, they use in addition a hierarchical model of loops and the knowledge of the available hardware parallelism to better predict possible speedups.</p>
<p>The <a title="Efficiently speeding up sequential computation through the n-way programming model" href="http://dx.doi.org/10.1145/2048066.2048109">second</a> and the <a title="Exploiting coarse-grain speculative parallelism" href="http://dx.doi.org/10.1145/2048066.2048110">third talk</a> where almost identical in terms of problem and goal. Essentially, they provide the necessary infrastructure to run different variants of sequential implementations in parallel and then chose either the winner in terms of runtime or precision. These approaches are especially interesting if the available algorithms have very different properties for different input or input sizes. For instance, some mathematical algorithms just do not converge to a solution for certain inputs while they are very fast for others.</p>
<p>The last talk of the session discussed <a href="http://dx.doi.org/10.1145/2048066.2048111">Scalable Join Patterns</a>. Join patterns are an old approach to describe synchronization mechanism flexibly and declaratively. The presented work provided a scalable implementation approach that seems to work quite well and when they would use a compilation based approach for the patters, I guess it could be a very feasible and flexible replacement for standard synchronization mechanism provided as libraries.</p>
<h2>Panel</h2>
<p>Instead of attending the third paper session of the day, I attended the panel on <a href="http://splashcon.org/2011/schedule/wednesday-oct-26/229">Multicore, Manycore, and Cloud Computing: Is a new Programming Language Paradigm required?</a>. Well, it was entertaining <img src='http://soft.vub.ac.be/~smarr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Nothing really new, no surprising arguments as far as I recall, but certainly interesting to watch. I think, they also recorded it. So it might be floating around the web soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://soft.vub.ac.be/~smarr/2011/10/oospla-2011-splash2011-day-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OOSPLA 2011 @SPLASH2011, Day 1</title>
		<link>http://soft.vub.ac.be/~smarr/2011/10/oospla-2011-splash-2011-day-1/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=oospla-2011-splash-2011-day-1</link>
		<comments>http://soft.vub.ac.be/~smarr/2011/10/oospla-2011-splash-2011-day-1/#comments</comments>
		<pubDate>Sat, 29 Oct 2011 16:24:58 +0000</pubDate>
		<dc:creator>Stefan</dc:creator>
				<category><![CDATA[Research]]></category>
		<category><![CDATA[concurrency]]></category>
		<category><![CDATA[Memory]]></category>
		<category><![CDATA[OOPSLA]]></category>
		<category><![CDATA[Parallelism]]></category>
		<category><![CDATA[RoarVM]]></category>
		<category><![CDATA[SPLASH]]></category>
		<category><![CDATA[VM]]></category>

		<guid isPermaLink="false">http://soft.vub.ac.be/~smarr/?p=486</guid>
		<description><![CDATA[The first day of the technical tracks including OOPSLA started with a keynote by Ivan Sutherland titled The Sequential Prison. His main point was that the way we think and the way we build machines and software is based on sequential concepts. The words we use to communicate and express ourselves are often of a [...]]]></description>
			<content:encoded><![CDATA[<p>The first day of the technical tracks including OOPSLA started with a keynote by Ivan Sutherland titled <a href="http://splashcon.org/2011/program/keynotes/187-oopsla-keynote-the-sequential-prison">The Sequential Prison</a>. His main point was that the way we think and the way we build machines and software is based on sequential concepts. The words we use to communicate and express ourselves are often of a very sequential nature. His examples included: call, do, repeat, program, and instruction. Other examples that shape and restrict our way of thinking are for instance basic data structures and concepts like strings (character sequences). However, we also use words that enable thinking about concurrency and parallelism much better. His examples for these included: configure, pipeline, connect, channel, network, and path.</p>
<p>After the talk <a href="http://en.wikipedia.org/wiki/David_Ungar">David</a> ask him what he would do in the first day of a class on how to program a massively parallel system. His answer was something like: “I would probably retire!”, making the point that it is a hard problem which requires creative solutions.</p>
<h2>Catching Concurrency Bugs</h2>
<p>After the keynote, the first technical track started with a session on catching concurrency bugs. The first paper presented was <a href="http://dx.doi.org/10.1145/2048066.2048070">Sheriff: Precise Detection and Automatic Mitigation of False Sharing</a>. As far as I understood, it is a pthread replacement, which abuses the memory-managing features and copy-on-write tricks to know about write-write contention on cacheline-level. The tool can attribute that back to the allocation site, which does not seem to be terribly useful if I manage my heap myself :-/</p>
<p><a href="http://dx.doi.org/10.1145/2048066.2048071">Accentuating the Positive: Atomicity Inference and Enforcement Using Correct Executions</a> was the second paper presented. They use some inference technique to place locks to prevent data-races that are still in the code. The most severe limitation seems to be that it only works for stack variables. However, the idea of making almost correct code more correct looks interesting.</p>
<p>The third paper, <a href="http://dx.doi.org/10.1145/2048066.2048072">SOS: Saving Time in Dynamic Race Detection with Stationary Analysis</a>, focuses on identifying objects that are not changing their state after a certain initialization period. They call such objects stationary, since they cannot participate in races. Would be interesting to see what we could get out of a similar analysis to decide when to promote an object into the RoarVM’s read-mostly heap.</p>
<p>The last presentation in that session was about <a href="http://dx.doi.org/10.1145/2048066.2048073">Testing Atomicity of Composed Concurrent Operations</a>. Here they use commutativity specifications to reduce the search space/testing effort. The goal is to find for instance pairs of operations, which are meant to be executed atomically but are not properly synchronized.</p>
<h2>Parallelizing Compilers</h2>
<p>The second session started with <a href="http://dx.doi.org/10.1145/2048066.2048085">Hawkeye: Effective Discovery of Dataflow Impediments to Parallelization</a>. They use a dynamic analysis to determine dependencies. The analysis further uses abstraction, ADT semantics to understand the recorded traces. The ADT semantics are used to abstract from the details, and avoid having to track everything precisely. Based on that analysis approach, they developed a tool that can be used to identify undesirable dependencies and iteratively improve a program.</p>
<p>The second paper was <a href="http://dx.doi.org/10.1145/2048066.2048086">Automatic Fine-Grained Locking using Shape Properties</a>. The goal is go from unsynchronized code to fine-grained synchronized code. For that purpose, they describe a new locking protocol called Domination Locking for objects graphs, which is supposed to be more general then earlier approaches.</p>
<p>The third paper <a href="http://dx.doi.org/10.1145/2048066.2048087">Safe Parallel Programming using Dynamic Dependency Hints</a> presented an extension on earlier work that uses hints like ‘possibly parallel region’. The system can execute such regions in parallel and will use an STM-like approach to make it correct in case there are conflicts. The presented work introduced channels to better describe data dependencies.</p>
<p>The last paper titled <a href="http://dx.doi.org/10.1145/2048066.2048088">Sprint: Speculative Prefetching of Remote Data</a> is targeted at distributed systems, but presents an approach that will automatically prefetch data to reduce the impact of latency and reduce overall runtime. Such a technique could be relevant for manycore systems exhibiting similar tradeoffs.</p>
<h2>Memory Management</h2>
<p>The last session of the day started with the presentation of a nice VM paper: <a href="http://dx.doi.org/10.1145/2048066.2048092">Why Nothing Matters: The Impact of Zeroing</a>. Certainly a worthwhile read for everyone implementing safe languages concerned with initializing objects/tables/structures/… efficiently with NULL.</p>
<p>The second talk <a href="http://dx.doi.org/10.1145/2048066.2048091">Ribbons: a Partially Shared Memory Programming Model</a> presented a programming model in-between threads and processes using memory-protection tricks to restrict the use of shared memory and isolate components. An interesting approach, especially since I have something similar in mind for the RoarVM.</p>
<p>The last talk of the day was about <a href="http://dx.doi.org/10.1145/2048066.2048090">Asynchronous Assertions</a>. Also something that might be interesting for paranoid VM hacker like me. It is an approach that allows the runtime to offload the assertion checking to other threads. To make that work, it works with snapshot semantics of the memory at the point where the assertion is offloaded.</p>
]]></content:encoded>
			<wfw:commentRss>http://soft.vub.ac.be/~smarr/2011/10/oospla-2011-splash-2011-day-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Which Problems Does a Multi-Language Virtual Machine Need to Solve in the Multicore/Manycore Era?</title>
		<link>http://soft.vub.ac.be/~smarr/2011/09/which-problems-does-a-multi-language-virtual-machine-need-to-solve-in-the-multicoremanycore-era/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=which-problems-does-a-multi-language-virtual-machine-need-to-solve-in-the-multicoremanycore-era</link>
		<comments>http://soft.vub.ac.be/~smarr/2011/09/which-problems-does-a-multi-language-virtual-machine-need-to-solve-in-the-multicoremanycore-era/#comments</comments>
		<pubDate>Tue, 27 Sep 2011 21:52:51 +0000</pubDate>
		<dc:creator>Stefan</dc:creator>
				<category><![CDATA[Research]]></category>
		<category><![CDATA[concurrency]]></category>
		<category><![CDATA[Encapsulation]]></category>
		<category><![CDATA[Enforcement]]></category>
		<category><![CDATA[Guarantees]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[languages]]></category>
		<category><![CDATA[Locality]]></category>
		<category><![CDATA[Manycore]]></category>
		<category><![CDATA[Models]]></category>
		<category><![CDATA[Properties]]></category>
		<category><![CDATA[Virtual Machines]]></category>

		<guid isPermaLink="false">http://soft.vub.ac.be/~smarr/?p=469</guid>
		<description><![CDATA[As preparation for SPLASH&#8217;11, here my paper for the VMIL workshop. It is a position paper discussing in which direction virtual machines should evolve in the future with regard to the challenges manycore architectures and concurrent programming bring. As I said, this is a position paper, which hopefully provokes discussion. Feedback of any kind is [...]]]></description>
			<content:encoded><![CDATA[<p>As preparation for SPLASH&#8217;11, here my paper for the <a href="http://www.cs.iastate.edu/~design/vmil/2011/">VMIL workshop</a>. It is a position paper discussing in which direction virtual machines should evolve in the future with regard to the challenges manycore architectures and concurrent programming bring.</p>
<p>As I said, this is a position paper, which hopefully provokes discussion. Feedback of any kind is welcome, and I am happy to adapt my presentation accordingly.</p>
<p><strong>Abstract</strong></p>
<blockquote>
<p>While parallel programming for very regular problems has been used in the scientific community by non-computer-scientists successfully for a few decades now, concurrent programming and solving irregular problems remains hard. Furthermore, we shift from few expert system programmers mastering concurrency for a constrained set of problems to mainstream application developers being required to master concurrency for a wide variety of problems.</p>
<p>Consequently, high-level language virtual machine (VM) research faces interesting questions. What are processor design changes that have an impact on the abstractions provided by VMs to provide platform independence? How can application programmers&#8217; diverse needs be facilitated to solve concurrent programming problems?</p>
<p>We argue that VMs will need to be ready for a wide range of different concurrency models that allow solving concurrency problems with appropriate abstractions. Furthermore, they need to abstract from heterogeneous processor architectures, varying performance characteristics, need to account for memory access cost and inter-core communication mechanisms but should only expose the minimal useful set of notions like locality, explicit communication, and adaptable scheduling to maintain their abstracting nature.</p>
<p>Eventually, language designers need to be enabled to guarantee properties like encapsulation, scheduling guarantees, and immutability also when an interaction between different problem-specific concurrency abstractions is required.</p></blockquote>
<ul>
	<li>Which Problems Does a Multi-Language Virtual Machine Need to Solve in the Multicore/Manycore Era?, <em>Stefan Marr</em>, <em>Mattias De Wael</em>, <em>Michael Haupt</em>, <em>Theo D&#8217;Hondt</em>, Proceedings of the 5th Workshop on Virtual Machines and Intermediate Languages, USA, ACM (2011), to appear.</li>
	<li>Paper: <a title="Which Problems Does a Multi-Language Virtual Machine Need to Solve in the Multicore/Manycore Era?" href="http://soft.vub.ac.be/~smarr/downloads/vmil11-smarr-et-al-which-problems-does-a-multi-language-virtual-machine-need-to-solve-in-the-multicore-manycore-era.pdf">PDF</a><br /> ©ACM, 2011. This is the author&#8217;s version of the work. It is posted here by permission of ACM for your personal use. Not for redistribution. To appear.</li>
	<li>BibTex: <a href="http://www.bibsonomy.org/bibtex/2f67c508d81780a9a7e987cb4f5bdaeda/gron">BibSonomy</a></li>
</ul>
<p><strong>Slides</strong></p>


<div style="width:425px;margin:0 auto;" id="__ss_9883270"><object id="__sse9883270" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=vmil2011-flattened-111026004845-phpapp02&#038;stripped_title=which-problems-does-a-multilanguage-virtual-machine-need-to-solve-in-the-multicoremanycore-era&#038;userName=gron" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse9883270" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=vmil2011-flattened-111026004845-phpapp02&#038;stripped_title=which-problems-does-a-multilanguage-virtual-machine-need-to-solve-in-the-multicoremanycore-era&#038;userName=gron" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object></div>]]></content:encoded>
			<wfw:commentRss>http://soft.vub.ac.be/~smarr/2011/09/which-problems-does-a-multi-language-virtual-machine-need-to-solve-in-the-multicoremanycore-era/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Trends in Concurrency 2010, part 3</title>
		<link>http://soft.vub.ac.be/~smarr/2010/06/trends-in-concurrency-2010-part-3/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=trends-in-concurrency-2010-part-3</link>
		<comments>http://soft.vub.ac.be/~smarr/2010/06/trends-in-concurrency-2010-part-3/#comments</comments>
		<pubDate>Mon, 21 Jun 2010 08:40:14 +0000</pubDate>
		<dc:creator>Stefan</dc:creator>
				<category><![CDATA[Research]]></category>
		<category><![CDATA[concurrency]]></category>
		<category><![CDATA[data structures]]></category>
		<category><![CDATA[random]]></category>
		<category><![CDATA[rock]]></category>
		<category><![CDATA[stack]]></category>
		<category><![CDATA[summer school]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[TiC'10]]></category>
		<category><![CDATA[transactional memory]]></category>

		<guid isPermaLink="false">http://soft.vub.ac.be/~smarr/?p=312</guid>
		<description><![CDATA[This is the last post about the TiC’10 summer school and covers the two remaining lectures. Mark Moir talked about concurrent data structures and transactional memory, and last but not least, Madan Musuvathi presented the work they did at Microsoft Research to improve the testing of concurrent applications. Mark Moir: Concurrent Data Structures and Transactional Memory [...]]]></description>
			<content:encoded><![CDATA[<p>This is the <a href="http://www.stefan-marr.de/2010/06/trends-in-concurrency-2010-part-2/">last post</a> about the TiC’10 summer school and covers the two remaining lectures. <a href="http://labs.oracle.com/people/moir/">Mark Moir</a> talked about concurrent data structures and transactional memory, and last but not least, <a href="http://research.microsoft.com/en-us/people/madanm/">Madan Musuvathi</a> presented the work they did at Microsoft Research to improve the testing of concurrent applications.</p>
<h3>Mark Moir: Concurrent Data Structures and Transactional Memory</h3>
<p>Stacks are the basic data structure in computer science, so it seams, well, at least they are used to introduce concurrency issues like the ABA problem. After presenting the lock-free stack with a version counter, which he claimed is for some people even with 64bit not safe enough, he presented a strategy to implement a stack much more scalable. The idea is that pairs of push-pop operations leave the actual stack unchanged as a result. Thus, these pairs could meet up in parallel and independent of the actual stack to avoid bottlenecks and contention. However, such a strategy still has to maintain some correctness criterion. Which he defines to be that it is linearizable with respect to a specific sequential semantics.</p>
<p>Afterwards he discusses and defines non-blocking progress conditions, i.e., wait-free, lock-free, and obstruction-free. The general idea is that weakening the requirements can enable more efficient or simpler implementation strategies.</p>
<p>As an example of how weakening the requirements allows to achieve an implementation strategy, which matches better the performance requirements, he introduced their SNZI counter-like constructs. SNZI means Scalable Non-Zero Indicator.</p>
<p>In the second lecture, he reports about their experience with transactional memory, not only software transactional memory, but also hardware TM, and hybrid approaches. He presented several interesting insights they gained while experimenting with the TM provided by Sun’s Rock processors. Very interesting was the report on the several factors, which lead to problems in the HTM systems. For instance, one of the main problems was, that a transaction could fail because the branch predictor was going down the wrong path and speculatively executing instructions, which then in return lead to transaction aborts.</p>
<p>Thereafter, he discussed the performance they managed to gain by using the different TM or lock-based systems. The result is that it very much depends on the algorithms and its parallel behavior. But the general conclusion is: STM, HTM, and also hybrid approaches do not just yet provide the necessary performance for general applications.</p>
<p>Another experiment he reported on was the attempt to simplify the implementation of concurrent data structures, which was mostly a success. They also need carful tuning with TM but enable simplified algorithms and even performance improvements depending on the use-case/algorithm.</p>
<h3>Madan Musuvathi: Concurrency Testing: Challenges, Algorithms, and Tools</h3>
<p>First Madan tried to wake us up by engaging in a discussion about the tradeoffs of testing vs. verification. Well, this is obviously about the effort you have to spend to achieve reasonable results. However, if the question comes to critical systems, which might cause the loss of life, it ends up in weighting ethical concerns with economic decisions. So, yes, he achieved his goal and of course, people were expressing their strong opinions.</p>
<p>He then continued with giving a demo of <a href="http://chesstool.codeplex.com/">CHESS</a>. It is a tool for debugging concurrent programs. It tries to explore the possibly problematic instruction interleavings with different algorithms since a brute force approach would not be feasible for real programs. The tool supports two different modes. In the fast mode, it inserts scheduling points before every synchronization, volatile access, and interlocked operation. This allows to find many bugs in practices, but not all. The second mode, the data-race mode inserts scheduling operations before every memory access, which allows to identify race-conditions, since it captures all sequentially consistent executions. What the tool does not do is generating and testing different inputs, which is a hard problem on its own.</p>
<p>The remainder of the talk discusses two different strategies to approach the exploding number of possible interleavings. The first approach is a reduction approach. The goal is to eliminate behavioral equivalent interleavings. Here he describes a number of different opportunities. The second approach is to prioritize interleavings, which might exhibit problematic behavior. Well, his claim is that random is the best heuristic here but of course can be combined with the reduction approach.</p>
<p>In the second lecture he details the randomization approach and presents another tool called Cuzz, which allows disciplined randomization of schedules. Now he goes into the theory behind this approach to establish an estimate of how likely it is to find bugs with this approach. The general idea is that bugs have different complexity if it comes to the necessary preconditions and possible constellations of interleavings. Another point is, that many bugs share the same root cause. This is expressed by a metric called ‘bug depth’, which is the number of ordering constrains that are sufficient to find the bug. In his experience, most bugs have a rather small bug depth. With the bug depth, he can calculate the probability of being able to find every bug in the program.</p>
<p>His claim is, that with all the optimizations applied to the algorithms they use, in practice, Cuzz beats the theoretical boundary. Most programs exhibit a lot of bugs, and these bugs are executed often which allows to find many of them in a few hundred runs through Cuzz.</p>
]]></content:encoded>
			<wfw:commentRss>http://soft.vub.ac.be/~smarr/2010/06/trends-in-concurrency-2010-part-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Trends in Concurrency 2010, part 2</title>
		<link>http://soft.vub.ac.be/~smarr/2010/06/trends-in-concurrency-2010-part-2/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=trends-in-concurrency-2010-part-2</link>
		<comments>http://soft.vub.ac.be/~smarr/2010/06/trends-in-concurrency-2010-part-2/#comments</comments>
		<pubDate>Mon, 14 Jun 2010 07:09:34 +0000</pubDate>
		<dc:creator>Stefan</dc:creator>
				<category><![CDATA[Research]]></category>
		<category><![CDATA[abstract interpretation]]></category>
		<category><![CDATA[concurrency]]></category>
		<category><![CDATA[formalisms]]></category>
		<category><![CDATA[separation logic]]></category>
		<category><![CDATA[summer school]]></category>
		<category><![CDATA[TiC'10]]></category>
		<category><![CDATA[X10]]></category>

		<guid isPermaLink="false">http://soft.vub.ac.be/~smarr/?p=307</guid>
		<description><![CDATA[This post is a follow up on my first report on the TiC’10 summer school. It covers mainly the talks about X10 and formal aspects of concurrency. Vijay Saraswat gave an overview about X10, Matthew Parkinson introduced separation logic and deny-guarantee reasoning, and Ganesan Ramalingam reported on Analysis and Verification of Concurrent Programs. Vijay Saraswat: [...]]]></description>
			<content:encoded><![CDATA[<p>This post is a follow up on my <a href="http://www.stefan-marr.de/2010/06/trends-in-concurrency-2010-part-1/">first report on the TiC’10 summer school</a>. It covers mainly the talks about X10 and formal aspects of concurrency.</p>
<p><a href="http://www.saraswat.org/">Vijay Saraswat</a> gave an overview about X10, <a href="http://www.cl.cam.ac.uk/~mjp41/">Matthew Parkinson</a> introduced separation logic and deny-guarantee reasoning, and <a href="http://research.microsoft.com/en-us/people/grama/">Ganesan Ramalingam</a> reported on Analysis and Verification of Concurrent Programs.</p>
<h3>Vijay Saraswat: The X10 Language: Design and Implementation</h3>
<p>The talk started with a brief description of the usual application scenarios IBM tries to address. They are looking for a language, which allows to program homogenous multi- or many-core systems as well as potentially heterogeneous cluster or HPC systems. The main goal is to design an expressive, productive and efficient programming model for application developers. The means to that end are a type system, static analysis, a comfortable debugger, and optimized standard libraries.</p>
<p><a href="htttp://www.x10-lang.org/">X10</a> is part of the PGAS family, but compared to UPC or Co-Array Fortran, X10 is an asynchronous PGAS (APGAS) language, which means that accesses over location boundaries are handled asynchronous by the runtime.</p>
<p>Some of the language properties, which were discussed, are briefly summarized below. As an APGAS language writes are only local. For remote writes you need to use a place-shift operation. The semantics of it is synchronous, but usually the implementation is asynchronous via messages. In that regard, Vijay also mentioned a tail-call like optimization to minimize the number of messages, which need to be exchanged. The atomic semantics is, well, rough. They use a per-place lock for atomics, but atomic operations on primitive values like integers are mapped to atomic operations provided by the underlying system, thus it is inherently ‘broken’, i.e., it is up to the programmer to ensure that different atomic blocks do not interfere with each other.</p>
<p>The implementation uses the notion of workers, which represent threads of the underlying system. There are 1 to n workers per place and activities are executed by workers. At the moment they use a model similar to Java’s fork/join, where the number of workers can grow over time. A problematic point is the implementation of the &#8216;when(C)&#8217; construct, which currently requires to spawn new threads since the thread executing the activity which uses the &#8216;when&#8217; construct will actually block on it. They will later change to a Cilk-like work-stealing system, which will allow to use a constant number of threads.</p>
<p>The place structure is static from the beginning, and currently a flat structure. In the future, this might be changed. Currently, they think about a hierarchical model as a better fit for GPGPUs. The plan is to explore two-level hierarchical places.</p>
<p>The design with workers and activates allows the compiler to coarsen up concurrency to remove the overhead of very fine-grained activities.</p>
<p>Another more flexible language construct they introduced recently is labeled finishes to allow the implementation of server-like programs where you do not want a pure hierarchical relation between asyncs and finishs but need more flexibility. Thus, an async can indicate on which finish it wants to announce its completion.</p>
<h3>Matthew Parkinson: Deny-Guarantee Reasoning</h3>
<p>The largest portion of his lectures was about the foundation for his own work. Thus, he was introducing separation logic. The goal is to have logic foundation to reason about programs, which can use pointer data structures, i.e., a heap like in usual object oriented programs. As far as I understood, this logic provides the means to establish statements about the behavior of programs. More precisely, it is possible to prove certain semantic assertions about their stacks and heaps.</p>
<p>One thing, which can be done, is to check whether the sets of memory locations modified by a program a disjoint, and thus, whether the program is race-free.</p>
<p>Rely-guarantee reasoning is a logic framework to reason about composed concurrent programs and is independent of separation logic. However, this logic is not able to capture the typical fork/join parallelism of many programs.</p>
<p>Deny-Guarantee reasoning is a reformulation of both, which explicitly supports dynamic parallelism, and thus, enables a formal reasoning about these kind of concurrent programs.</p>
<p>Well, I think I understand what it is useful for. The next thing I would need is a good textbook introducing all the basics very patiently. Might be necessary to prove that my barrier/phaser algorithm is actually correct :-/</p>
<h3>Ganesan Ramalingam: Analysis &amp; Verification of Concurrent Programs</h3>
<p>Another Greek talk *sigh*. Anyway, lets see what it is good for: The goal of the work Mr. Ramalingam presented is to verify programs for some correctness criterion and for instance find concurrency bugs. To this end, they are using technique called concurrent shape analysis, which allows static verification in the presence of a dynamic heap and a statically unbounded number of threads by using abstract interpretation.</p>
<p>Before he goes into the details, he presents a typical stack example, and how it breaks if concurrency comes into play. To be able to reason about the correctness of the implementation a sequential specification of the stack is necessary. In a concurrent setting, this implies that the operations have to be linearizable in some form. The definition for that is: an interleaved execution is said to be linearizable iff it is equivalent to a legal sequential execution that preserves the order of non-overlapping operations.</p>
<p>Well, and then he goes on to explain the technique in detail.</p>
<p>In the second lecture, he starts with talking about serializability, similar to what is done in databases. His goal is to use the techniques presented earlier, to synthesize correct locking-schemes for originally sequential data-structures, while avoiding the trivial solution but providing an efficient scheme. The simplified idea is to compute a sequential proof, introduce the locks, and then afterwards eliminate redundant locks to achieve performance.</p>
]]></content:encoded>
			<wfw:commentRss>http://soft.vub.ac.be/~smarr/2010/06/trends-in-concurrency-2010-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Trends in Concurrency 2010, part 1</title>
		<link>http://soft.vub.ac.be/~smarr/2010/06/trends-in-concurrency-2010-part-1/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=trends-in-concurrency-2010-part-1</link>
		<comments>http://soft.vub.ac.be/~smarr/2010/06/trends-in-concurrency-2010-part-1/#comments</comments>
		<pubDate>Mon, 07 Jun 2010 08:17:37 +0000</pubDate>
		<dc:creator>Stefan</dc:creator>
				<category><![CDATA[Research]]></category>
		<category><![CDATA[concurrency]]></category>
		<category><![CDATA[data-flow]]></category>
		<category><![CDATA[memory model]]></category>
		<category><![CDATA[parallel]]></category>
		<category><![CDATA[STM]]></category>
		<category><![CDATA[summer school]]></category>
		<category><![CDATA[TiC'10]]></category>

		<guid isPermaLink="false">http://soft.vub.ac.be/~smarr/?p=301</guid>
		<description><![CDATA[I already posted the presentation I gave at the summer school earlier. In the following posts, I will report a bit about the lectures of the summer school, similar to my posts about the TPLI summer school of last year. Like last year, my thanks go to FWO and the summer school, for providing me [...]]]></description>
			<content:encoded><![CDATA[<p>I already posted the <a href="http://www.stefan-marr.de/2010/05/locality-and-encapsulation-my-students-presentation-at-the-tic-summer-school/">presentation</a> I gave at the summer school earlier. In the following posts, I will report a bit about the lectures of the summer school, similar to my posts about the <a href="http://www.stefan-marr.de/tag/tpli/">TPLI summer school</a> of last year.</p>
<p>Like last year, my thanks go to <a href="http://www.fwo.be/">FWO</a> and the <a href="http://web.me.com/vitekj/TIC10/Welcome.html">summer school</a>, for providing me with grants to cover all the costs. Thanks <img src='http://soft.vub.ac.be/~smarr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>The first two days covered four different topics. <a href="http://www.adamwelc.org/">Adam Welc</a> started with an introduction to <em>Software Transactional Memory</em>, <a href="http://www.irisa.fr/prive/talpin/">Jean-Pierre Talpin</a> gave lectures on the topic <em>Virtual Prototyping Embedded Architectures</em>, <a href="http://research.microsoft.com/en-us/people/satnams/">Satnam Singh</a> reported on his experience with <em>Data-Parallel Programming</em>, and last but not least, <a href="http://www.cl.cam.ac.uk/~pes20/">Peter Sewell</a> introduced us to the mystics of hardware memory models with his talk titled <em>Low-Level Concurrency – For Real</em>.</p>
<h3>Adam Welc: Software Transactional Memory</h3>
<p>Adam, who works for <a href="http://whatif.intel.com/">Intel Labs</a>, talked in his first presentation mainly about the semantics of STM and the different approaches for designing a STM system. The second presentation concentrated on how the implementation of such a system could work.</p>
<p>His presentations were very much in the spirit of <a href="http://software.intel.com/en-us/articles/intel-c-stm-compiler-prototype-edition-20/">the STM system Intel provides as a prototype</a>, but the general ideas are used in other systems as well.</p>
<p>The different options for semantics of an STM included open or closed transaction nesting, transaction flattening as well as abort and retry. Furthermore, he discussed the interaction for instance with legacy code, which leads to the question of weak and strong atomicity properties, or the semantics of single global lock atomicity. The last semantic question he discussed was how consistency should be provided, and how pointer-privatization could be supported by the system. Afterwards, he outlined the design space for STM systems, introducing optimistic vs. pessimistic transactions as well as write buffering vs. in-place updates.</p>
<p>In the second talk, he presented the implementation details.</p>
<p>For their C++-based STM the compiler needs additional information about the characteristics of all code, which is done by annotations on class and method level. Similar, the compiler supports atomic blocks, abort, and retry statements. Beside all the implementation details, he also discussed several optimizations the compiler attempts to reduce the STM overhead with regard to read/write-barriers wherever possible. My gut feeling tells me, someone should write a STM+TracingJIT story. Not sure whether that buys anything, but what I have seen with STM looks a lot like the trace-guards.</p>
<p>The last slides he presented were about performance. The basic conclusion still is: performance is an issue. However, he gave me an interesting pointer to one of his papers, which basically states, that transaction can be used for looks without contention, quite straight forwardly: <a href="http://dx.doi.org/10.1007/11785477_8">Transparently reconciling transactions with locking for Java synchronization</a>.</p>
<h3>Jean-Pierre Talpin: Virtual Prototyping Embedded Architectures</h3>
<p>Unfortunately, I missed the introductorily part of these lectures due to problems with our accommodation *sigh*. However, as far as I understood, in the domain of embedded systems for large scale applications like aircrafts, there is always a need to combine a large number of different technologies, and the final goal is to simulate, analyze, and verify the software before it is deployed into production use. Especially the verification part is important for critical systems like in avionics.</p>
<p>The systems in this domain are mostly event driven, i.e., in his terminology it is an asynchronous composition of reactive processes.</p>
<p>For these purpose, they developed Polychrony including an Eclipse integration. It allows using data-flow models for computation and mode automata for control. These models are verified with model-checking techniques and allow controller synthesis.</p>
<p>At the heart of this system is a data-flow language, which allows expressing such an asynchronous event system in terms of synchronous modules, which have better characteristics with respect to verification. Furthermore, they established the means to prove certain correctness criteria.</p>
<p>For an aerospace project, they used this as a basis and code-generation framework. One of their techniques uses a SSA as an intermediate representation to model existing software. They use SSA to translate the input to their synchronous data-flow formalism enabling their analysis’.</p>
<h3>Satnam Singh: Data-Parallel Programming</h3>
<p>The motivation behind his work is to allow users to utilize parallelism in a civil manner, i.e., with a reasonable effort/gain ratio. His premise is that programming models like SIMD, OpenMP, and MPI are inherently low-level and require very detailed knowledge about the target architecture, which restricts their applicability. Not only increases it the development cost, but it also restricts the application to a single platform. With the <a href="http://connect.microsoft.com/acceleratorv2">Microsoft Accelerator</a>, they develop a high-level data-parallel library to target various platforms, starting with standard multi-core CPUs with SIMD instruction extensions, GPGPUs, and FPGAs.</p>
<p>The user describes the computation by defining a data-flow graph, which describes the intention instead of the detailed mapping to an execution. Most notably, they provide parallel array structures, on which operations can be performed without necessarily using an index, but deferring these details to the runtime, which can optimize the relevant array operations for the target architecture. Furthermore, it provides certain standard mechanisms to work in a data-parallel way. This includes various operations on the parallel arrays, which for instance can be combined with appropriate reduce operations. An important operation he emphasized is the array shift operation, which is extensively used to describe necessary data transformations. Instead of doing these kind of transformations explicitly, the runtime system can highly-optimize them to the target platform.</p>
<p>The resulting program description is just-in-time compiled for the target machine, and only then executed. For the typical problems they are approaching, the construction of the program describing graph and the JIT overhead are negligible.</p>
<p>However, this form of nested data parallelism brings also some problems. Especially the distribution of the problem over the computing platform is hard since the shape of the resulting computational graph depends on the input data.</p>
<h3>Peter Sewell: Low-Level Concurrency – For Real</h3>
<p>The basic conclusion of his talk is: it is impossible to write portable, correct, and efficient concurrent code for any existing hardware platform, because they do not actually tell you all the constrains/properties in their specifications.</p>
<p>So he basically starts to rant about all processor manufacturers and their specs. He starts with a seemingly simple example, and demonstrates that the expected outcome is not guaranteed.</p>
<p>Then he goes on and describes various examples for x86 and relates them to the tricks a CPU applies, which result in rather weak memory models.</p>
<p>Based on that, he presents a model they developed called x86-TSO (Total Store Order), which allows to reason about the correctness of concurrent x86 programs. This model is eventually used to introduce the notion of <a href="http://www.cl.cam.ac.uk/~so294/documents/ecoop10.pdf">triangular races</a>. This allows to reason about a class of programs, which can contain data races, for instance lock implementations.</p>
<p>From here, he goes on to rant about all the other existing hardware architectures and their semantics or lack of specification. They tried for years to come up with a formal model like x86-TSO but failed.</p>
<p>To conclude his lectures, he presents 10 different options how to define a sane memory model for instance for a programming language. He starts out with option 1: DON’T i.e. no concurrency. Well, my personal impression still is, that this is his favorite option. It has several advantages. Especially, it is very simple. In the end he comes to option 10, which means to have a memory model similar to C++0x. It is a data-race free model, which provides low-level concurrency primitives, and allows to break abstractions. Beside the notion of the data-race free part, that is something, I have expected/thought about earlier for a good VM.</p>
]]></content:encoded>
			<wfw:commentRss>http://soft.vub.ac.be/~smarr/2010/06/trends-in-concurrency-2010-part-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Towards an Actor-based Concurrent Machine Model</title>
		<link>http://soft.vub.ac.be/~smarr/2010/02/towards-an-actor-based-concurrent-machine-model/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=towards-an-actor-based-concurrent-machine-model</link>
		<comments>http://soft.vub.ac.be/~smarr/2010/02/towards-an-actor-based-concurrent-machine-model/#comments</comments>
		<pubDate>Sat, 20 Feb 2010 23:19:08 +0000</pubDate>
		<dc:creator>Stefan</dc:creator>
				<category><![CDATA[Research]]></category>
		<category><![CDATA[Actors]]></category>
		<category><![CDATA[concurrency]]></category>
		<category><![CDATA[Manycore]]></category>
		<category><![CDATA[multicore]]></category>
		<category><![CDATA[paper]]></category>
		<category><![CDATA[Smalltalk]]></category>
		<category><![CDATA[Virtual Machines]]></category>
		<category><![CDATA[VMs]]></category>
		<category><![CDATA[workshop]]></category>

		<guid isPermaLink="false">http://soft.vub.ac.be/~smarr/?p=289</guid>
		<description><![CDATA[Already quite a while ago, I was involved in writing a workshop paper about an actor model for virtual machines. Actually, the main idea was to find a concurrency model for a VM which supports multi-dimensional separation of concerns. However, AOP is not that interesting for me at the moment, so I am focussing on [...]]]></description>
			<content:encoded><![CDATA[<p>Already quite a while ago, I was involved in writing a workshop paper about an actor model for virtual machines. Actually, the main idea was to find a concurrency model for a VM which supports multi-dimensional separation of concerns. However, AOP is not that interesting for me at the moment, so I am focussing on the concurrency, especially the actor-based VM model.</p>
<p>After one year, I am back looking at that paper, and it still looks like a great model. Think, I will incorporate it into my manycore VM now <img src='http://soft.vub.ac.be/~smarr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>Abstract</h3>
<blockquote>
<p>In this position paper we propose to extend an existing delegation-based machine model with concurrency primitives. The original machine model which is built on the concepts of objects, messages, and delegation, provides support for languages enabling multi-dimensional separation of concerns (MDSOC). We propose to extend this model with an actor-based concurrency model, allowing for both true parallelism as well as lightweight concurrency primitives such as coroutines. In order to demonstrate its expressiveness, we informally describe how three high-level languages supporting different concurrency models can be mapped onto our extended machine model. We also provide an outlook on the extended model&#8217;s potential to support concurrency-related MDSOC features.</p></blockquote>
<ul>
	<li>Towards an Actor-based Concurrent Machine Model, <em>Hans Schippers, Tom Van Cutsem, Stefan Marr, Michael Haupt, Robert Hirschfeld</em>, Proceedings of the fourth workshop on the Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems (ICOOOLPS), New York, NY, USA, ACM (2009), p. 4&#8211;9.</li>
	<li>Paper: <a title="Towards an Actor-based Concurrent Machine Model" href="http://soft.vub.ac.be/~smarr/downloads/icooolps09-schippers.pdf">PDF</a><br /> ©ACM, 2009. This is the author&#8217;s version of the work. It is posted here by permission of ACM for your personal use. Not for redistribution. The definitive version was published in ICOOOLPS’09 July 6, 2009, Genova, Italy. <a href="http://doi.acm.org/10.1145/1565824.1565825">http://doi.acm.org/10.1145/1565824.1565825</a></li>
	<li>BibTex: <a href="http://www.bibsonomy.org/bibtex/243d4b86261eac5a70d28160c493e70d1/gron">BibSonomy</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://soft.vub.ac.be/~smarr/2010/02/towards-an-actor-based-concurrent-machine-model/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Intermediate Language Design of High-level Language Virtual Machines: Towards Comprehensive Concurrency Support</title>
		<link>http://soft.vub.ac.be/~smarr/2010/02/intermediate-language-design-of-high-level-language-virtual-machines-towards-comprehensive-concurrency-support/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=intermediate-language-design-of-high-level-language-virtual-machines-towards-comprehensive-concurrency-support</link>
		<comments>http://soft.vub.ac.be/~smarr/2010/02/intermediate-language-design-of-high-level-language-virtual-machines-towards-comprehensive-concurrency-support/#comments</comments>
		<pubDate>Sun, 14 Feb 2010 21:38:21 +0000</pubDate>
		<dc:creator>Stefan</dc:creator>
				<category><![CDATA[Research]]></category>
		<category><![CDATA[Bytecode]]></category>
		<category><![CDATA[concurrency]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Instruction Set]]></category>
		<category><![CDATA[Intermediate Language]]></category>
		<category><![CDATA[OOPSLA]]></category>
		<category><![CDATA[Survey]]></category>
		<category><![CDATA[Virtual Machines]]></category>
		<category><![CDATA[VMIL]]></category>

		<guid isPermaLink="false">http://soft.vub.ac.be/~smarr/?p=285</guid>
		<description><![CDATA[My second workshop paper got published at the ACM Digital Library. This is actually only an abstract, but nonetheless, it might be interesting for people looking into the design of virtual machines and especially bytecodes/intermediate languages. Abstract Today&#8217;s major high-level language virtual machines (VMs) are becoming successful in being multi-language execution platforms, hosting a wide [...]]]></description>
			<content:encoded><![CDATA[<p>My second workshop paper got published at the ACM Digital Library. This is actually only an abstract, but nonetheless, it might be interesting for people looking into the design of virtual machines and especially bytecodes/intermediate languages.</p>
<h3>Abstract</h3>
<blockquote>
<p>Today&#8217;s major high-level language virtual machines (VMs) are becoming successful in being multi-language execution platforms, hosting a wide range of languages. With the transition from few-core to many-core processors, we argue that VMs will also have to abstract from concrete concurrency models at the hardware level, to be able to support a wide range of abstract concurrency models on a language level. To overcome the lack of sufficient abstractions for concurrency concepts in  VMs, we proposed earlier to extend VM intermediate languages by special  concurrency constructs[<a href="http://www.stefan-marr.de/2010/02/virtual-machine-support-for-many-core-architectures-decoupling-abstract-from-concrete-concurrency-models/">PLACES09</a>].</p>
<p>As a first step towards this goal, we try to fill a gap in the current literature and survey the intermediate language design of VMs.  Our goal is to identify currently used techniques and principles as well as to gain an overview over the available concurrency related features in intermediate languages.</p>
<p>Another aspect of interest is the influence of the particular target language, for which the VM is originally intended, on the intermediate language.</p></blockquote>
<ul>
	<li>Paper: <a title="Intermediate Language Design of High-level Language Virtual Machines: Towards Comprehensive Concurrency Support" href="http://soft.vub.ac.be/~smarr/downloads/vmil09-smarr.pdf">PDF</a><br /> ©ACM, 2009. This is the author&#8217;s version of the work. It is posted here by permission of ACM for your personal use. Not for redistribution. The definitive version was published in VMIL&#8217;09, October 25, 2009. <a href="http://doi.acm.org/10.1145/1711506.1711509">http://doi.acm.org/10.1145/1711506.1711509</a></li>
	<li>BibTex: <a href="http://www.bibsonomy.org/bibtex/24cadae2ab990d54d761d2233f8a21505/gron">BibSonomy</a></li>
</ul>
<h3>Slides of the Talk at VMIL09/OOPSLA</h3>
<div id="__ss_2357339" style="width: 425px; text-align: left;"><object style="margin:0px" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=vmil09-005-091027084911-phpapp01&amp;rel=0&amp;stripped_title=intermediate-language-design-of-highlevel-language-vms-towards-comprehensive-concurrency-support" /><param name="allowfullscreen" value="true" /><embed style="margin:0px" type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=vmil09-005-091027084911-phpapp01&amp;rel=0&amp;stripped_title=intermediate-language-design-of-highlevel-language-vms-towards-comprehensive-concurrency-support" allowscriptaccess="always" allowfullscreen="true"></embed></object></div>
]]></content:encoded>
			<wfw:commentRss>http://soft.vub.ac.be/~smarr/2010/02/intermediate-language-design-of-high-level-language-virtual-machines-towards-comprehensive-concurrency-support/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

