<?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</title>
	<atom:link href="http://soft.vub.ac.be/~smarr/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>CSOM/PL: A Virtual Machine Product Line</title>
		<link>http://soft.vub.ac.be/~smarr/2011/12/csompl-a-virtual-machine-product-line/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=csompl-a-virtual-machine-product-line</link>
		<comments>http://soft.vub.ac.be/~smarr/2011/12/csompl-a-virtual-machine-product-line/#comments</comments>
		<pubDate>Wed, 28 Dec 2011 21:09:46 +0000</pubDate>
		<dc:creator>Stefan</dc:creator>
				<category><![CDATA[Research]]></category>
		<category><![CDATA[ADL]]></category>
		<category><![CDATA[AOP]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[CSOM]]></category>
		<category><![CDATA[FOP]]></category>
		<category><![CDATA[MDSoC]]></category>
		<category><![CDATA[Product lines]]></category>
		<category><![CDATA[Smalltalk]]></category>
		<category><![CDATA[Virtual Machines]]></category>
		<category><![CDATA[VM]]></category>
		<category><![CDATA[VMADL]]></category>

		<guid isPermaLink="false">http://soft.vub.ac.be/~smarr/?p=512</guid>
		<description><![CDATA[Welcome to Academia. That is how I take this one&#8230; Publishing can really be an odyssey, and it all started with my Master thesis. Today, we have the 28th of December 2011. And I think I handed my thesis in somewhere around the 23rd of September 2008. I agree that there have been issues with [...]]]></description>
			<content:encoded><![CDATA[<p>Welcome to Academia. That is how I take this one&#8230;</p>
<p>Publishing can really be an odyssey, and it all started with my Master thesis. Today, we have the 28th of December 2011. And I think I handed my thesis in somewhere around the 23rd of September 2008. I agree that there have been issues with the original version of the paper, but nothing was so fundamental that it would explain the more than three years it took to get it finally out. <img src='http://soft.vub.ac.be/~smarr/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />  Thank for the warm welcome anyway.</p>
<p><strong>Abstract</strong></p>
<blockquote>
<p>CSOM/PL is a software product line SPL derived from applying multi-dimensional separation of concerns MDSOC techniques to the domain of high-level language virtual machine VM implementations. For CSOM/PL, we modularised CSOM, a Smalltalk VM implemented in C, using VMADL virtual machine architecture description language. Several features of the original CSOM were encapsulated in VMADL modules and composed in various combinations. In an evaluation of our approach, we show that applying MDSOC and SPL principles to a domain as complex as that of VMs is not only feasible but beneficial, as it improves understandability, maintainability, and configurability of VM implementations without harming performance.</p></blockquote>
<ul>
	<li>CSOM/PL: A Virtual Machine Product Line, <em>Michael Haupt</em>, <em>Stefan Marr</em>, <em>Robert Hirschfeld</em>, Journal of Object Technology, Volume 10, (2011), pp. 12:1-30.</li>
	<li>Paper: <a title="CSOM/PL: A Virtual Machine Product Line" href="http://soft.vub.ac.be/~smarr/downloads/jot11-mhaupt-csompl-a-virtual-machine-product-line.pdf">PDF</a>.</li>
	<li>BibTex: <a href="http://www.bibsonomy.org/bibtex/2410111b6472d242e566afe4d27c3b7de/gron">BibSonomy</a></li>
        <li>DOI: <a href="http://dx.doi.org/10.5381/jot.2011.10.1.a12">doi:10.5381/jot.2011.10.1.a12</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://soft.vub.ac.be/~smarr/2011/12/csompl-a-virtual-machine-product-line/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Synchronization Views for Event-loop Actors</title>
		<link>http://soft.vub.ac.be/~smarr/2011/12/synchronization-views-for-event-loop-actors/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=synchronization-views-for-event-loop-actors</link>
		<comments>http://soft.vub.ac.be/~smarr/2011/12/synchronization-views-for-event-loop-actors/#comments</comments>
		<pubDate>Sat, 24 Dec 2011 12:33:43 +0000</pubDate>
		<dc:creator>Stefan</dc:creator>
				<category><![CDATA[Research]]></category>
		<category><![CDATA[Actors]]></category>
		<category><![CDATA[multicore]]></category>
		<category><![CDATA[paper]]></category>
		<category><![CDATA[Parallelism]]></category>
		<category><![CDATA[poster]]></category>
		<category><![CDATA[PPoPP]]></category>

		<guid isPermaLink="false">http://soft.vub.ac.be/~smarr/?p=506</guid>
		<description><![CDATA[With Joeri we have been working already for a while on a paper to extend the standard actor model with more parallelism. This work is not completed yet, and there are still some theoretical issues with the approach he designed. But we are working on it! For the moment, you can have a sneak-peak at [...]]]></description>
			<content:encoded><![CDATA[<p>With Joeri we have been working already for a while on a paper to extend the standard actor model with more parallelism. This work is not completed yet, and there are still some theoretical issues with the approach he designed. But we are working on it!</p>
<p>For the moment, you can have a sneak-peak at the <a title="Synchronization Views for Event-loop Actors" href="http://soft.vub.ac.be/~smarr/downloads/ppopp12-dekoster-synchronization-views-for-event-loop-actors.pdf">poster abstract for PPoPP&#8217;12</a>.</p>
<p><strong>Abstract</strong></p>
<blockquote>
<p>The actor model has already proven itself as an interesting concurrency model that avoids issues such as deadlocks and race conditions by construction, and thus facilitates concurrent programming. The tradeoff is that it sacrifices expressiveness and efficiency especially with respect to data parallelism. However, many standard solutions to computationally expensive problems employ data parallel algorithms for better performance on parallel systems.</p>
<p>We identified three problems that inhibit the use of data-parallel algorithms within the actor model. Firstly, one of the main properties of the actor model, the fact that no data is shared, is one of the most severe performance bottlenecks. Especially the fact that shared state can not be read truly in parallel. Secondly, the actor model on its own does not provide a mechanism to specify extra synchronization conditions on batches of messages which leads to event-level data-races. And lastly, programmers are forced to write code in a continuation-passing style (CPS) to handle typical request-response situations. However, CPS breaks the sequential flow of the code and is often hard to understand, which increases complexity and lowers maintainability.</p>
<p>We proposes <em>synchronization views</em> to solve these three issues without compromising the semantic properties of the actor model. Thus, the resulting concurrency model maintains deadlock-freedom, avoids low-level race conditions, and keeps the semantics of macro-step execution.</p></blockquote>
<ul>
	<li>Synchronization Views for Event-loop Actors, <em>Joeri De Koster</em>, <em>Stefan Marr</em>, <em>Theo D&#8217;Hondt</em>, Proceedings of PPoPP&#8217;12, USA, to appear (2012).</li>
	<li>Paper: <a title="Synchronization Views for Event-loop Actors" href="http://soft.vub.ac.be/~smarr/downloads/ppopp12-dekoster-synchronization-views-for-event-loop-actors.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/2fe71bc6cb277972cdab0e9dac06d64e1/gron">BibSonomy</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://soft.vub.ac.be/~smarr/2011/12/synchronization-views-for-event-loop-actors/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>First Release Candidate of PHP 5.4 Available for Testing, including Traits!</title>
		<link>http://soft.vub.ac.be/~smarr/2011/11/first-release-candidate-of-php-5-4-available-for-testing-including-traits/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=first-release-candidate-of-php-5-4-available-for-testing-including-traits</link>
		<comments>http://soft.vub.ac.be/~smarr/2011/11/first-release-candidate-of-php-5-4-available-for-testing-including-traits/#comments</comments>
		<pubDate>Thu, 10 Nov 2011 21:34:02 +0000</pubDate>
		<dc:creator>Stefan</dc:creator>
				<category><![CDATA[Traits]]></category>
		<category><![CDATA[bugs]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[reporting]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[traits]]></category>

		<guid isPermaLink="false">http://soft.vub.ac.be/~smarr/?p=501</guid>
		<description><![CDATA[The first release candidate of PHP 5.4 was just released. The announcement on the main page is still missing, but the links are the usual ones: http://www.php.net/archive/2011.php#id2011-11-10-1 If you haven tried out traits in PHP yet, please do so now. We have fixed 19 issues so far, but there are probably still a few corner cases we have [...]]]></description>
			<content:encoded><![CDATA[<p>The first release candidate of PHP 5.4 was just released. The announcement on the main page is still missing, but the links are the usual ones: <a href="http://www.php.net/archive/2011.php#id2011-11-10-1">http://www.php.net/archive/2011.php#id2011-11-10-1</a></p>
<p>If you haven tried out traits in PHP yet, please do so now. We have fixed 19 issues so far, but there are probably still a few corner cases we have not yet covered.</p>
<p>In case you find quirks or bugs, please report them either on the <a href="https://bugs.php.net/">bug tracker</a>, on the <a href="http://www.php.net/mailing-lists.php">internals mailing list</a>, or directly to me.</p>
<p>Thanks!</p>
]]></content:encoded>
			<wfw:commentRss>http://soft.vub.ac.be/~smarr/2011/11/first-release-candidate-of-php-5-4-available-for-testing-including-traits/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>DLS&#8217;11 and VMIL&#8217;11 @SPLASH2011</title>
		<link>http://soft.vub.ac.be/~smarr/2011/10/dls11-and-vmil11-splash2011/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=dls11-and-vmil11-splash2011</link>
		<comments>http://soft.vub.ac.be/~smarr/2011/10/dls11-and-vmil11-splash2011/#comments</comments>
		<pubDate>Wed, 26 Oct 2011 20:31:28 +0000</pubDate>
		<dc:creator>Stefan</dc:creator>
				<category><![CDATA[Research]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[DLS]]></category>
		<category><![CDATA[SPLASH]]></category>
		<category><![CDATA[Virtual Machines]]></category>
		<category><![CDATA[VM]]></category>
		<category><![CDATA[VMIL]]></category>
		<category><![CDATA[workshop]]></category>

		<guid isPermaLink="false">http://soft.vub.ac.be/~smarr/?p=482</guid>
		<description><![CDATA[The second conference day was unfortunately full of “conflicts of interest”… It was pretty hard to choose between all the talks on the schedule. Beside DLS and VMIL, there was also a workshop on Actor systems. However, I did not make it to this one. Cherry picking between DLS and VMIL was already hard enough [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://www.stefan-marr.de/2011/10/transitioning-to-multicore-splash2011/">second conference day</a> was unfortunately full of “conflicts of interest”… It was pretty hard to choose between all the talks on the schedule.</p>

<p>Beside <a href="http://www.dynamic-languages-symposium.org/dls-11/program/index.html">DLS</a> and <a href="http://www.cs.iastate.edu/~design/vmil/2011/program.shtml">VMIL</a>, there was also a <a href="http://apice.unibo.it/xwiki/bin/view/AGERE/">workshop on Actor systems</a>. However, I did not make it to this one. Cherry picking between DLS and VMIL was already hard enough and worked out only partially.</p>
<p>The two DLS keynotes were certainly highlights of the whole SPLASH conference. Gilad’s talk, on Dart was not just interesting but quite entertaining; especially their take on the optional type system looks useful. I like the reasoning behind their approach a lot. Who needs sound type systems anyway? Well, then again, I had a few bugs were a complete type system could have notified me earlier to make me aware that I am doing something stupid. So, I wonder whether it would be hard to have another optional type system in addition, which could be enabled on demand for certain modules to check a more strict set of constraints?</p>

<p>The second DLS keynote was David’s presentation with the title: <a href="http://splashcon.org/2011/program/dls/245-invited-talk-2">“Everything You Know (About Parallel Programming) is Wrong!: A Wild Screed About the Future”</a>. The main conclusion is certainly that <a href="http://en.wikipedia.org/wiki/Romeo_and_Juliet">Romeo</a> would not have died when there would have been synchronization to avoid the race condition. What a nerdy example <img src='http://soft.vub.ac.be/~smarr/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>In the end, the parallel revolution will need to find the balance between performance and correctness, since correctness is always bought by introducing delays and thus hampers performance. Another point he made more implicitly is that programming these systems becomes not only harder because of the parallel aspect, but also because of the ever-growing complexity of the underlying hardware. We just do not know anymore what is going on and why the performance is not as expected.</p>

<p>The VMIL workshop started with Eliot’s presentation. But, well, if you know how Eliot presents his work on the Cog VM then you know, that it is likely that people not acquainted with the details of Smalltalk VMs have a very hard time to follow. His <a href="http://www.cs.iastate.edu/~design/vmil/2011/papers/p03-miranda.pdf">paper</a> made the message a bit clearer, I think. His main point was the VM integration of the Bochs processor emulator for debugging.</p>


<p>After the first break, Lars talked a bit too much about Dart as a language, and the VM details were rather scarce. They said that they are going for simplicity, and the one aspect that I remember was that they do not have any static initialization to avoid ‘spontaneous’ executions. And well, their Smalltalk and Java history certainly shows between the lines.</p>

<p>The talk titled <a href="http://www.cs.iastate.edu/~design/vmil/2011/papers/p02-kell.pdf">“Virtual machines should be invisible”</a> was essentially about how to build a VM that reuses the standard systems ABI to integrate better with the surrounding system. They use the DWARF debugging format and dynamic linking techniques to reach that goal. Interesting but not platform-independent and I do not really see why that would be desirable or necessary for what I consider a VM.</p>

<p>I unfortunately missed the talk on <a href="http://www.cs.iastate.edu/~design/vmil/2011/papers/p06-gil.pdf">“A Microbenchmark Case Study and Lessons Learned”</a>. From the comments made later in the workshop, it seemed to have been an interesting and very relevant talk.</p>

<p>The talk titled <a href="http://www.cs.iastate.edu/~design/vmil/2011/papers/p07-zhao.pdf">“Intermediate Language Extensions for Parallelism”</a> was interesting, but I found that this IL is rather language dependent and is only applicable for a X10 or Habanero-ish language. Sure, the Cilk-style seems to be useful for a number of parallel problems, but it is not the only paradigm out there, so I wonder how that IL would look like if it would be designed for a multi-language VM.</p>

<p>The last talk of the workshop was mine: <a href="http://soft.vub.ac.be/~smarr/2011/09/which-problems-does-a-multi-language-virtual-machine-need-to-solve-in-the-multicoremanycore-era/">Which Problems Does a Multi-Language Virtual Machine Need to Solve in the Multicore/Manycore Era?</a> So, if you have any answers or thoughts on that topic, please leave me a note.</p>
]]></content:encoded>
			<wfw:commentRss>http://soft.vub.ac.be/~smarr/2011/10/dls11-and-vmil11-splash2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Transitioning to Multicore @SPLASH2011</title>
		<link>http://soft.vub.ac.be/~smarr/2011/10/transitioning-to-multicore-splash2011/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=transitioning-to-multicore-splash2011</link>
		<comments>http://soft.vub.ac.be/~smarr/2011/10/transitioning-to-multicore-splash2011/#comments</comments>
		<pubDate>Mon, 24 Oct 2011 01:13:40 +0000</pubDate>
		<dc:creator>Stefan</dc:creator>
				<category><![CDATA[Research]]></category>
		<category><![CDATA[Manycore]]></category>
		<category><![CDATA[multicore]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[SPLASH]]></category>
		<category><![CDATA[workshop]]></category>

		<guid isPermaLink="false">http://soft.vub.ac.be/~smarr/?p=477</guid>
		<description><![CDATA[And here we go again: SPLASH 2011 has started with its first day of workshops. I attended the Transitioning to Multicore workshop. For me the most interesting talks were two empirical studies presented by Fernando Castor. The first talk was about a controlled experiment with students using coarse-grained locks (or actually MVars) and STM in [...]]]></description>
			<content:encoded><![CDATA[<p>And here we go again: SPLASH 2011 has started with its first day of workshops.</p>
<p>I attended the <a href="http://tmc.supertriceratops.com/">Transitioning to Multicore workshop</a>.</p>
<p>For me the most interesting talks were two empirical studies presented by Fernando Castor. The first talk was about a <a href="http://tmc.supertriceratops.com/papers/tmc2011-7-Castor.pdf">controlled experiment with students using coarse-grained locks (or actually MVars) and STM in Haskell</a>. While such experiments are usually biased in some way or another, he presented an interesting set of anecdotes along with the actual results. Notably, he observed similar mistakes done by the students as we observed as part of our <a href="http://soft.vub.ac.be/~tvcutsem/multicore/">Multicore Programming</a> course. It seems to be hard to define the right granularity of atomicity, especially when an all-inclusive atomic section is not applicable. His second talk was about analyzing the use of <a href="http://tmc.supertriceratops.com/papers/tmc2011-1-Torres.pdf">concurrency constructs in open source software</a>. While this was still very early work, it shows how gradual the adoption of libraries like java.util.concurrent is in such software projects.</p>
<p>The other presentations included approaches to <a href="http://tmc.supertriceratops.com/papers/tmc2011-6-Pina.pdf">minimize conflicts in transactional systems</a>, <a href="http://tmc.supertriceratops.com/papers/tmc2011-2-Rito.pdf">automated support for memorization</a> on top of STM, and how Intel’s TBB can be used to express <a href="http://tmc.supertriceratops.com/papers/tmc2011-3-Reed.pdf">parallel pipelined programs</a> with a focus on which kind of pipelines can be easily expressed.</p>
<p>For me, the workshop ended with a panel discussion featuring Doug Lea, Matt Sottlie, Suresh Srinivas, and Tucker Taft. The most interesting point made was that one of the goals should be to facilitate all kind of different flavors of parallel programming (<a title="Which Problems Does a Multi-Language Virtual Machine Need to Solve in the Multicore/Manycore Era?" href="http://www.stefan-marr.de/2011/09/which-problems-does-a-multi-language-virtual-machine-need-to-solve-in-the-multicoremanycore-era/">of course! <img src='http://soft.vub.ac.be/~smarr/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </a>) Matt pointed out in his introduction that parallel programming models are all good and well, and that being able to spilt up a problem in threads is important, but that the memory wall is often not discussed and that feeding enough data to the threads to keep them busy is becoming increasingly harder. Another point made in different variations is the importance of tools, their accessibility to developers, and their integration with runtimes and hardware. Doug mentioned also that the hardware vendors are making life harder for everyone without apparent reason by not using standards for instance to number cores. Especially since they do not provide the mechanisms to query the cache design properties and core arrangements that inhibits portable and reliable performance for mechanism like work-stealing schedulers.</p>
]]></content:encoded>
			<wfw:commentRss>http://soft.vub.ac.be/~smarr/2011/10/transitioning-to-multicore-splash2011/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>
	</channel>
</rss>

