<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>I research and teach programming languages, compilers, and their applications at the University of New South Wales (UNSW), Sydney.  My main interest is in functional and parallel programming. Most of my code is in Haskell.
You can find me on App.net (preferred) and Twitter, or on GitHub. Check out my UNSW website. </description><title>Just Testing</title><generator>Tumblr (3.0; @justtesting)</generator><link>http://justtesting.org/</link><item><title>Seminar by Dave Thomas on "VMs Demystified – A Tour of the Engine Room"</title><description>&lt;p&gt;Dave Thomas, who is widely known for his work on virtual machines and the YOW! Australia conference series, will be in Sydney this month. He kindly agreed to talk about VMs at CSE. Anybody with an interest in VM engineering and programming language implementations should mark the date in their calendar!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Time:&lt;/strong&gt; 29 May 2013 (Wed), 11AM&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Location:&lt;/strong&gt; &lt;a href="http://www.cse.unsw.edu.au/contact/map.html" title="Map"&gt;CSE Seminar room (K17_113), Level 1, CSE Building (K17)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Title:&lt;/strong&gt; VMs Demystified – A Tour of the Engine Room&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Speaker:&lt;/strong&gt; &lt;a href="http://www.davethomas.net"&gt;David Thomas&lt;/a&gt; (Bedarra Research Labs and YOW! Developer Conference)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Also showing at:&lt;/strong&gt; The talk is also presented at ScalaSyd the previous evening, 28 May, 18:30 — details &lt;a href="http://www.meetup.com/scalasyd/events/117283522/"&gt;here&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Abstract&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Language virtual machines are an essential part of current and next generation platforms.  Yet many developers have no real idea of what is actually happening when their program is run on a VM or the hardware.  This leads to many false assumptions about speed and space performance.  In this talk you will see under the hood of language virtual machines and gain an understanding of what makes VMs tick as well as differences between the languages they support.&lt;/p&gt;
&lt;p&gt;First we explain the essence VM engineering including object representations, stack versus register VMs, RISC versus CISC byte codes; static dispatch to polymorphic inline cache; context management; interpretation versus dynamic translation/tracing versus compilation; garbage collection; and native types and code interfaces. We discuss benchmark speed and space performance versus real application performance.&lt;/p&gt;
&lt;p&gt;Armed with the above knowledge we then engage in some of the entertaining educational VM debates. How can a JVM or PHP VM faster than C++? When is the JVM or CLR better? How does the language, or the language library impact the VM? Are strongly typed languages always faster than dynamic languages? How does hosting with CRuby, compare to JRuby or Java? Let’s put the VM in hardware? How do functional language VMs differ from object VMs? How can thousands of processes in Erlang be efficient compared to using native OS threads?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bio&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Dave Thomas is an expert in dynamic languages and has decades of experience building and deploying language VMs for mobile, instrumentation, embedded command and control, and business application on platforms from mainframes to micro devices. He is widely known and respected in the programming language community and this year will be presenting the keynote at the Commercial Users of Functional Programming (CUFP) conference. While CEO of OTI, now IBM OTI Labs, he over saw IBM’s Smalltalk and J9 family of Java enterprise and embedded JVMs, OSGi as well as the initial releases of Eclipse. He lead an IBM OTI research effort into universal virtual machines. After leaving IBM he worked on JVM support for dynamic languages and the use of V8 for embedded applications. For the past 6 years Dave has been working with high performance vector functional virtual machines, DSLs and most recently exploring special purpose HW VMs.&lt;/p&gt;</description><link>http://justtesting.org/post/49410243869</link><guid>http://justtesting.org/post/49410243869</guid><pubDate>Thu, 02 May 2013 12:43:00 +1000</pubDate></item><item><title>Back to Tumblr</title><description>&lt;p&gt;With the demise of Posterous (after it was swallowed by Twitter), my blog is back to Tumblr. I have got plans for a more customised set up in the medium term, but currently I don&amp;#8217;t have the time to set up blogging software.&lt;/p&gt;
&lt;p&gt;As the URL scheme of Posterous and Tumblr is different, this breaks all existing direct links to post. Moreover, many of the old posts include a footer that points back to the defunct Posterous, and comments are also gone. I&amp;#8217;m sorry for the mess.&lt;/p&gt;</description><link>http://justtesting.org/post/49161618867</link><guid>http://justtesting.org/post/49161618867</guid><pubDate>Mon, 29 Apr 2013 15:44:00 +1000</pubDate><category>blog</category></item><item><title>Optimising Purely Functional GPU Programs</title><description>&lt;p&gt;&lt;span&gt;We just completed a draft of a new paper, &lt;/span&gt;&lt;a href="http://www.cse.unsw.edu.au/~chak/papers/MCKL13.html"&gt;Optimising Purely Functional GPU Programs&lt;/a&gt;&lt;span&gt;, that explains two crucial optimisations of &lt;/span&gt;&lt;a href="https://github.com/AccelerateHS/accelerate"&gt;Accelerate&lt;/a&gt;&lt;span&gt;, our embedded array language for GPU programming in Haskell. These two optimisations are a novel typed form of sharing recovery for embedded languages and a new array fusion method for massively parallel SIMD programs. The paper includes details on eight benchmark programs that support the effectiveness of our optimisations and pit Accelerate against competing frameworks, including CUDA C code.&lt;/span&gt;&lt;/p&gt;</description><link>http://justtesting.org/post/47081649364</link><guid>http://justtesting.org/post/47081649364</guid><pubDate>Thu, 04 Apr 2013 14:40:09 +1100</pubDate><category>accelerate</category><category>edsl</category><category>fusion</category><category>gpgpu</category><category>haskell</category></item><item><title>Learn how to program GPUs with Haskell</title><description>&lt;div class="posterous_autopost"&gt;
&lt;p&gt;&lt;a href="http://research.microsoft.com/en-us/people/simonmar/"&gt;Simon Marlow&lt;/a&gt; recently taught a course on parallel programming in Haskell at the &lt;em&gt;EDF/CEA/INRIA Summer School 2012, &amp;#8220;Functional Programming for Parallel and Concurrent Applications&amp;#8221;&lt;/em&gt;. One of his lectures teaches GPU programming in Haskell with our &lt;a href="https://github.com/AccelerateHS/accelerate"&gt;Accelerate&lt;/a&gt; framework. If you like to learn to use Accelerate to program GPUs in Haskell, check out Simon&amp;#8217;s &lt;a href="http://community.haskell.org/~simonmar/slides/cadarache2012/7%20-%20accelerate.pdf"&gt;slides&lt;/a&gt; on the topic as well as the accompanying &lt;a href="http://community.haskell.org/~simonmar/lab-exercises-cadarache.pdf"&gt;programming exercises&lt;/a&gt; (see Page 14 onwards).&lt;/p&gt;
&lt;/div&gt;</description><link>http://justtesting.org/post/29753849996</link><guid>http://justtesting.org/post/29753849996</guid><pubDate>Sun, 19 Aug 2012 22:08:00 +1000</pubDate><category>accelerate</category><category>gpgpu</category><category>haskell</category><category>parallelism</category></item><item><title>Being more clever about vectorising nested data parallelism</title><description>&lt;div class="posterous_autopost"&gt;
&lt;p&gt;Our new draft paper on &lt;a href="http://www.cse.unsw.edu.au/~chak/papers/KCLLP12.html"&gt;Vectorisation Avoidance&lt;/a&gt; introduces a novel program analysis for nested data parallelism that lets us avoid vectorising purely scalar subcomputations. It includes a set of benchmark kernels that suggest that vectorisation avoidance improves runtimes over merely using array stream fusion.&lt;/p&gt;
&lt;/div&gt;</description><link>http://justtesting.org/post/24399176080</link><guid>http://justtesting.org/post/24399176080</guid><pubDate>Mon, 04 Jun 2012 22:18:00 +1000</pubDate><category>dph</category><category>haskell</category><category>parallelism</category><category>vectorisation</category></item><item><title>Repa 3: more control over array representations with indexed types</title><description>&lt;div class="posterous_autopost"&gt;
&lt;p&gt;We have got a new draft paper on &lt;a href="http://www.cse.unsw.edu.au/~chak/papers/LCKP12.html"&gt;Guiding Parallel Array Fusion with Indexed Types&lt;/a&gt;. It describes the design and use of the 3rd generation Repa API, which uses type indices to give the programmer control over the various parallel array representations. The result are clearer programs that the compiler can more easily optimise. The implementation of Repa 3 is ready for use on Hackage in the &lt;a href="http://hackage.haskell.org/package/repa"&gt;repa package&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;</description><link>http://justtesting.org/post/24398752358</link><guid>http://justtesting.org/post/24398752358</guid><pubDate>Mon, 04 Jun 2012 22:02:00 +1000</pubDate><category>haskell</category><category>multicore</category><category>parallelism</category><category>repa</category></item><item><title>GPU-accelerated array computations in Haskell</title><description>&lt;div class="posterous_autopost"&gt;
&lt;p&gt;I just published stable release 0.12 of the embedded array language &lt;a href="https://github.com/AccelerateHS/accelerate"&gt;Accelerate&lt;/a&gt; for high-performance GPU computing on Hackage. The release includes example applications, such as a real-time Canny edge detector, a fluid flow simulator, and a quasicrystal animation, as well as example algorithms, such as radixsort, matrix computations, and a Black-Scholes option pricing model.&lt;/p&gt;
&lt;p&gt;In the new modularised architecture, the Accelerate release comprises four packages:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://hackage.haskell.org/package/accelerate"&gt;accelerate&lt;/a&gt; (the main package providing the Accelerate language),&lt;/li&gt;
&lt;li&gt;&lt;a href="http://hackage.haskell.org/package/accelerate-io"&gt;accelerate-io&lt;/a&gt; (conversion operations with other Haskell array libraries, including the data-parallel companion library &lt;a href="http://hackage.haskell.org/package/repa"&gt;Repa&lt;/a&gt;),&lt;/li&gt;
&lt;li&gt;&lt;a href="http://hackage.haskell.org/package/accelerate-cuda"&gt;accelerate-cuda&lt;/a&gt; (backend targetting NVIDIA GPUs via the CUDA SDK), and&lt;/li&gt;
&lt;li&gt;&lt;a href="http://hackage.haskell.org/package/accelerate-examples"&gt;accelerate-examples&lt;/a&gt; (example applications and regression tests).&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description><link>http://justtesting.org/post/23027737253</link><guid>http://justtesting.org/post/23027737253</guid><pubDate>Mon, 14 May 2012 16:48:00 +1000</pubDate></item><item><title>Using the Glasgow Haskell Compiler (GHC) on OS X Lion with Xcode 4.3</title><description>&lt;div class="posterous_autopost"&gt;
&lt;p&gt;Here is what you need to do if you want to use the &lt;a href="http://www.haskell.org/ghc" title="GHC"&gt;Glasgow Haskell Compiler (GHC)&lt;/a&gt; on OS X Lion with a clean installation of Xcode 4.3.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Command line tools&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You need to install the command line tools from Apple. You may do that in two ways (the second is faster as it is a much smaller download):&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;Install all of Xcode:
&lt;ul&gt;&lt;li&gt;Install Xcode from the Mac App Store.&lt;/li&gt;
&lt;li&gt;Launch Xcode.&lt;/li&gt;
&lt;li&gt;In the Preferences dialog of Xcode, select the &amp;#8220;Downloads&amp;#8221; pane and install &amp;#8220;Command line tools&amp;#8221;.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Install the command line tools only:
&lt;ul&gt;&lt;li&gt;At the &lt;a href="http://developer.apple.com/downloads" title="Apple Developer downloads"&gt;downloads page of Apple Developer&lt;/a&gt;, download the latest &amp;#8220;Command line tools&amp;#8221;.&lt;/li&gt;
&lt;li&gt;Install them.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;In both cases, you need to &lt;a href="https://developer.apple.com/programs/register/" title="Register as Apple Developer"&gt;register&lt;/a&gt; as an Apple developer. (This is a free registration.)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Install GHC 7.4.1 (or later)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Older versions of GHC —including GHC 7.0.4, which is part of the &lt;a href="http://hackage.haskell.org/platform/"&gt;Haskell Platform&lt;/a&gt; 2011.4.0.0 (December 2011)— won&amp;#8217;t work. They complain about not being able to execute &amp;#8216;/Developer/usr/bin/gcc&amp;#8217;.&lt;/p&gt;
&lt;p&gt;Download and install &lt;a href="http://www.haskell.org/ghc/download_ghc_7_4_1#macosx_x86_64" title="GHC 7.4.1 (x86_64)"&gt;GHC 7.4.1&lt;/a&gt; (or a later version) — or install the Haskell Platform once a 2012 release has been made.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Using GHC&amp;#8217;s LLVM backend (optional)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you like to use GHC&amp;#8217;s LLVM backend —which is more efficient for array-based and other loop-oriented code— you need to seperately install LLVM. (This is despite the Apple tools being based on LLVM as well.)&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Install &lt;a href="http://mxcl.github.com/homebrew/" title="Homebrew"&gt;Homebrew&lt;/a&gt; (as per the instructions on that webpage).&lt;/li&gt;
&lt;li&gt;Then, execute the following: &amp;#8216;brew install llvm&amp;#8217;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Compiling GHC from the sources in the Git repositories (GHC developers only)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you plan to work on GHC itself and you need to compile the develeopment version of GHC straight from the Git repositories, you need to install the GNU auto tools as well (which are no longer distributed by Apple).&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Install &lt;a href="http://mxcl.github.com/homebrew/" title="Homebrew"&gt;Homebrew&lt;/a&gt; (as per the instructions on that webpage) — if you didn&amp;#8217;t do that already to install LLVM above.&lt;/li&gt;
&lt;li&gt;Then, execute the following: &amp;#8216;brew install autoconf automake&amp;#8217;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;The GHC Trac has more information on &lt;a href="http://hackage.haskell.org/trac/ghc/wiki/Building"&gt;Building and Porting GHC&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;</description><link>http://justtesting.org/post/21491940475</link><guid>http://justtesting.org/post/21491940475</guid><pubDate>Sat, 21 Apr 2012 22:25:00 +1000</pubDate><category>ghc</category><category>haskell</category><category>lion</category><category>mac</category></item><item><title>GPU computing in Haskell: version 0.10 of Data.Array.Accelerate</title><description>&lt;div class="posterous_autopost"&gt;
&lt;p&gt;Accelerate is an embedded language for GPU-accelerated array computations in Haskell that targets NVIDIA&amp;#8217;s CUDA framework and also has an experimental OpenCL backend (that currently does not support the whole feature set of the language). I just released &lt;a href="http://hackage.haskell.org/package/accelerate-0.10.0.0" title="accelerate 0.10.0.0"&gt;version 0.10.0.0 of Accelerate&lt;/a&gt;. A considerable amount of example code is in the companion package &lt;a href="http://hackage.haskell.org/package/accelerate-examples"&gt;accelerate-examples&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For more information, have a look at &lt;a href="https://github.com/mchakravarty/accelerate" title="Accelerate @ GitHub"&gt;Accelerate on GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;</description><link>http://justtesting.org/post/20954772035</link><guid>http://justtesting.org/post/20954772035</guid><pubDate>Thu, 12 Apr 2012 17:10:00 +1000</pubDate><category>accelerate</category><category>gpgpu</category><category>haskell</category></item><item><title>Work Efficient Higher-Order Vectorisation</title><description>&lt;div class="posterous_autopost"&gt;
&lt;p&gt;Our new draft paper on &lt;a href="http://www.cse.unsw.edu.au/~chak/papers/LCKLP12.html" title="Work Efficient Higher-Order Vectorisation" target="_blank"&gt;Work Efficient Higher-Order Vectorisation&lt;/a&gt; introduces a novel representation for nested, irregular parallel arrays that enables the work-efficient SIMD-ification of nested data parallelism — i.e., nested parallelism is transformed into flat parallelism, while maintaining the work complexity of a naive pointer-based representation of nested arrays. This solves a long standing problem that dates back to the original implementation of the language NESL.&lt;/p&gt;
&lt;/div&gt;</description><link>http://justtesting.org/post/19825349916</link><guid>http://justtesting.org/post/19825349916</guid><pubDate>Sat, 24 Mar 2012 18:36:00 +1100</pubDate><category>dph</category><category>haskell</category><category>parallelism</category><category>vectorisation</category></item><item><title>Seminar by Peter Thiemann on "A Calculus for Gradual Access Control"</title><description>&lt;div class="posterous_autopost"&gt;
&lt;p&gt;We are having the pleasure to host Peter Thiemann from the University of Freiburg at UNSW at the moment. His many contributions span the areas of functional programming, type systems, static analysis, program specialisation, and web programming.&lt;/p&gt;
&lt;p&gt;Coming Monday (19 March), Peter will give a presentation at the School of Computer Science and Engineering (CSE) of the University of New South Wales. The details are as follows.&lt;/p&gt;
&lt;p&gt;&lt;span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Time:&lt;/strong&gt; 19 March 2012 (Friday), 11AM&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Location:&lt;/strong&gt; &lt;a href="http://www.cse.unsw.edu.au/contact/map.html" title="CSE" target="_blank"&gt;CSE Seminar room (K17_113), Level 1, CSE Building (K17)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Title:&lt;/strong&gt; &lt;span&gt;A Calculus for Gradual Access Control&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Speaker:&lt;/strong&gt; &lt;span&gt;Peter Thiemann (University of Freiburg, Germany)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Abstract&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Many client-side Web applications are composed of script fragments that are independently downloaded from the Web. A recurring problem in that scenario is the need to impose an access control policy on the execution of a downloaded script. No script should be able to compromise the state of the base application, that is, it should neither access nor change sensitive data, which can be private data of the application, sensitive state of the browser, or a part of the DOM that is not explicitly assigned to it.&lt;/p&gt;
&lt;p&gt;To address this situation, we want to construct a browser-embedded facility that regulates access control according to directives in a trusted program fragment. The calculus for gradual access control is the foundation of this facility. It incorporates a component that performs dynamic access control according to the directives. It also incorporates a static component that enables the system to omit the dynamic checks if it can prove them unnecessary. The two components are tightly connected by a gradual typing approach.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;Bio&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Peter Thiemann obtained his diploma in computer science in 1987 at the Technical University of Aachen, Germany. He graduated in 1991 at the University of Tübingen, Germany, where worked as a research and teaching assistent until 1997. In 1998, he was a lecturer in Computer Science at the University of Nottingham, England. Since 1999 he is a professor at the computer science department of the University of Freiburg, Germany, where he leads the programming languages group.&lt;/p&gt;
&lt;p&gt;His research interests comprise theory and practice of modern programming languages, in particular program analysis, compiler construction, and program specialization for functional programming languages. The focus of his current research is static and dynamic program analysis for scripting languages.&lt;/p&gt;
&lt;/div&gt;</description><link>http://justtesting.org/post/19169089225</link><guid>http://justtesting.org/post/19169089225</guid><pubDate>Mon, 12 Mar 2012 16:43:00 +1100</pubDate><category>seminar</category></item><item><title>The n-body problem and vectorisation of nested data parallelism in the face of shared data structures</title><description>&lt;p&gt;&lt;div class="posterous_autopost"&gt;Last year, we spent a lot of energy on reducing the memory consumption of vectorised &lt;a href="http://www.haskell.org/haskellwiki/GHC/Data_Parallel_Haskell"&gt;Data Parallel Haskell (DPH)&lt;/a&gt; programs that use large shared data structures. This work was driven by an implementation of the &lt;a href="http://en.wikipedia.org/wiki/Barnes%E2%80%93Hut_simulation"&gt;Barnes-Hut algorithm&lt;/a&gt; in DPH. Ben produced an illustrative video animating an n-body simulation with his &lt;a href="http://hackage.haskell.org/package/gloss"&gt;Gloss library&lt;/a&gt;. The video is part of his blog article &lt;a href="http://disciple-devel.blogspot.com.au/2012/02/vectorisation-without-replication-in.html"&gt;Vectorisation without Replication in Data Parallel Haskell&lt;/a&gt;, where he explains the performance of our new DPH array library in comparison to our old library and a purely sequential implementation of Barnes-Hut based on &lt;a href="http://hackage.haskell.org/package/vector"&gt;Data.Vector&lt;/a&gt;.

&lt;div&gt;If you are interested in how vectorisation works, what the problem with shared data structures is, and how we are solving that problem, you may like to have a look at the slides of a talk that I gave in Copenhagen end of last year. It is available in two formats: &lt;a href="http://public.iwork.com/document/?d=replicate-hiperfit-dec11.key&amp;amp;a=p179149432"&gt;HTML5 slideshow&lt;/a&gt; &amp;amp; &lt;a href="http://www.cse.unsw.edu.au/~chak/papers/replicate-hiperfit-dec11.pdf"&gt;PDF&lt;/a&gt;.&lt;/div&gt;
&lt;/div&gt;&lt;/p&gt;</description><link>http://justtesting.org/post/16916036670</link><guid>http://justtesting.org/post/16916036670</guid><pubDate>Thu, 02 Feb 2012 22:16:00 +1100</pubDate><category>dph</category><category>haskell</category><category>parallelism</category></item><item><title>Released Data.Array.Accelerate 0.9.0.0 — the Haskell array library for GPUs</title><description>&lt;p&gt;&lt;div class="posterous_autopost"&gt;I just released &lt;a href="http://hackage.haskell.org/package/accelerate-0.9.0.0"&gt;accelerate 0.9.0.0&lt;/a&gt; on Hackage. This is the version that has been available from the &lt;a href="https://github.com/mchakravarty/accelerate"&gt;GitHub repository&lt;/a&gt; for a while (supporting shape polymorphism, stencil computations, block I/O, and much more), but adapted such that it works with the forthcoming GHC 7.4.1 release. (I tested it with 7.4.1 RC2).&lt;/div&gt;
&lt;div class="posterous_autopost"&gt;&lt;/div&gt;
&lt;div class="posterous_autopost"&gt;
&lt;div&gt;It doesn&amp;#8217;t yet include Trevor&amp;#8217;s recent work that improved the CUDA backend in many significant ways — you can get that code from &lt;a href="https://github.com/tmcdonell/accelerate"&gt;Trevor&amp;#8217;s fork on GitHub&lt;/a&gt;.&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;For more details, see the &lt;a href="https://github.com/mchakravarty/accelerate"&gt;main GitHub repository&lt;/a&gt; and the &lt;a href="https://github.com/mchakravarty/accelerate/wiki"&gt;GitHub wiki pages&lt;/a&gt;.&lt;/div&gt;
&lt;/div&gt;&lt;/p&gt;</description><link>http://justtesting.org/post/16853265221</link><guid>http://justtesting.org/post/16853265221</guid><pubDate>Wed, 01 Feb 2012 16:55:00 +1100</pubDate><category>accelerate</category><category>edsl</category><category>gpgpu</category><category>parallelism</category></item><item><title>Free, nicely presented textbooks with good distribution</title><description>&lt;div class="posterous_autopost"&gt;
&lt;p&gt;Free, nicely presented textbooks with good distribution have got quite an appeal.&lt;/p&gt;

&lt;blockquote class="twitter-tweet"&gt;
&lt;p&gt;Begun it has RT @&lt;a href="https://twitter.com/stevedekorte"&gt;stevedekorte&lt;/a&gt;: First version of Io Programming Guide available for free on iTunes book store &lt;a href="http://t.co/AovAFyrL" title="http://itunes.apple.com/us/book/io/id497620067?mt=11"&gt;itunes.apple.com/us/book/io/id4…&lt;/a&gt;&lt;/p&gt;
&lt;div&gt;— Mac (@wmacgyver)&lt;/div&gt;
&lt;div&gt;&lt;a href="https://twitter.com/wmacgyver/status/162351174647939073"&gt;January 26, 2012&lt;/a&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;/div&gt;</description><link>http://justtesting.org/post/16519818986</link><guid>http://justtesting.org/post/16519818986</guid><pubDate>Fri, 27 Jan 2012 00:42:00 +1100</pubDate><category>ibooks</category></item><item><title>Seminar by John Hughes &amp; Simon Peyton Jones @ UNSW</title><description>&lt;div class="posterous_autopost"&gt;&lt;p&gt;As part of &lt;a href="http://yowaustralia.com.au/" title="YOW! Conference" target="_blank"&gt;YOW! 2011 (the Australian Software Developer Conference)&lt;/a&gt;, &lt;a href="http://research.microsoft.com/en-us/people/simonpj/" title="Simon Peyton Jones" target="_blank"&gt;Simon Peyton Jones&lt;/a&gt; and &lt;a href="http://www.cse.chalmers.se/~rjmh/" title="John Hughes" target="_blank"&gt;John Hughes&lt;/a&gt; will be in Sydney on the 7th and 8th of December 2011. On the evening of the 7th, they will appear at the &lt;a href="http://yownightsydneydec11.eventbrite.com/" title="YOW! Night Sydney" target="_blank"&gt;YOW! Night Sydney&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;On Thursday (8 December), John and Simon will give two presentations at the School of Computer Science and Engineering (CSE) of the University of New South Wales. The details are as follows.&lt;/p&gt;  &lt;p style="padding-left: 30px;"&gt;Time: &lt;strong&gt;8 December 2011, 10AM&lt;/strong&gt;&lt;/p&gt;  &lt;p style="padding-left: 30px;"&gt;Location: &lt;strong&gt;CSE Seminar room (K17_113), Level 1&lt;/strong&gt;, &lt;a href="http://www.cse.unsw.edu.au/contact/map.html" title="UNSW Campus Map" target="_blank"&gt;CSE Building (K17)&lt;/a&gt;&lt;/p&gt;    &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;span style="font-size: large;"&gt;Talk #1&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Title:&lt;/strong&gt; Accelerating race condition detection through procrastination&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Speaker:&lt;/strong&gt; John Hughes (Chalmers University &amp;amp; Quviq AB)&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Abstract&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Race conditions are notoriously frustrating to find, and good tools can help. The main difficulty is reliably provoking the race condition. In previous work we presented a randomising scheduler for Erlang that helps with this task.&lt;/p&gt;  &lt;p&gt;In a language without pervasive shared mutable state, such as Erlang, performing scheduling decisions at random uncovers race conditions surprisingly well. However, it is not always enough. We describe a technique, procrastination, that aims to provoke race conditions more often than by random scheduling alone. It works by running the program and looking for pairs of events that might interfere, such as two message sends to the same process. Having found such a pair of events, we re-run the program but try to provoke a race condition by reversing the order of the two events.&lt;/p&gt;  &lt;p&gt;We apply our technique to a piece of industrial Erlang code. Compared to random scheduling alone, procrastination allows us to find minimal failing test cases more reliably and more quickly.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;John Hughes&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;John Hughes has worked with functional programming since 1980, was one of the designers of Haskell, and has been heavily involved with Erlang in recent years. In 2000 he and Koen Claessen published the first version of QuickCheck, a software testing tool which recently won the ACM SIGPLAN award for Most Influential Paper from ICFP in that year. He has focussed more and more on testing since then, co-founding Quviq AB in 2006 to market a commercial version of QuickCheck. He is currently both a Professor at Chalmers University, Sweden, and CEO of Quviq AB.&lt;/p&gt;    &lt;p&gt;&lt;span style="font-size: large;"&gt;Talk #2&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Title:&lt;/strong&gt; Termination Combinators Forever&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Speaker:&lt;/strong&gt; Simon Peyton Jones (Microsoft Research)&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Abstract&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Nobody wants their compiler, or theorem prover, to go into an infinite loop, but making sure that never happens usually means applying some over-conservative heuristic like “never unfold a recursive function”. Approaches like that don’t work at all when you are doing partial evaluation or supercompilation, which fundamentally depend on inlining recursive functions. &lt;/p&gt;  &lt;p&gt;What we need is an online termination test. That is easier said than done; it is easy to make a mistake. In this talk I’ll describe a new combinator library that lets you build complex termination tests by combining simpler ones, while guaranteeing that that the result really is a termination test. The library elegantly encapsulates some clever mathematical ideas on well-quasi orders the cunning details are hidden from the customer.&lt;/p&gt;  &lt;p&gt;I’ll use Haskell as the language of exposition, but you don’t need to be a Haskell guru to understand it, and the library would work equally well in other languages.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Simon Peyton Jones&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Simon Peyton Jones, MA, MBCS, CEng, graduated from Trinity College Cambridge in 1980. After two years in industry, he spent seven years as a lecturer at University College London, and nine years as a professor at Glasgow University, before moving to Microsoft Research (Cambridge) in 1998.&lt;/p&gt;  &lt;p&gt;His main research interest is in functional programming languages, their implementation, and their application. He has led a succession of research projects focused around the design and implementation of production-quality functional-language systems for both uniprocessors and parallel machines. He was a key contributor to the design of the now-standard functional language Haskell, and is the lead designer of the widely-used Glasgow Haskell Compiler (GHC). He has written two textbooks about the implementation of functional languages.&lt;/p&gt;  &lt;p&gt;More generally, he is interested in language design, rich type systems, software component architectures, compiler technology, code generation, runtime systems, virtual machines, and garbage collection. He is particularly motivated by direct use of principled theory to practical language design and implementation — that&amp;#8217;s one reason he loves functional programming so much.&lt;/p&gt;        &lt;p style="font-size: 10px;"&gt;  &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;   from &lt;a href="http://pls.posterous.com/seminar-by-john-hughes-simon-peyton-jones-uns"&gt;PLS @ UNSW&lt;/a&gt; | &lt;a href="http://pls.posterous.com/seminar-by-john-hughes-simon-peyton-jones-uns#comment"&gt;&lt;span style="font-size: 11px"&gt;Comment&amp;#160;»&lt;/span&gt;&lt;/a&gt;  &lt;/p&gt;  &lt;/div&gt;</description><link>http://justtesting.org/post/13097371268</link><guid>http://justtesting.org/post/13097371268</guid><pubDate>Mon, 21 Nov 2011 14:51:38 +1100</pubDate><category>erlang</category><category>haskell</category><category>seminar</category></item><item><title>Video and slides of "Data Parallelism in Haskell" @ Brisbane FP Group</title><description>&lt;p&gt;&lt;iframe frameborder="0" width="0" height="0"&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;&lt;a title="Data Parallelism in Haskell" href="http://vimeo.com/28477220"&gt;Video @ vimeo&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The &lt;a href="http://www.bfpg.org/"&gt;Brisbane FP Group (BFPG)&lt;/a&gt; kindly invited me to give a talk about our work on data parallel programming in Haskell. The talk motivates the use of functional programming for parallel, and in particular, data parallel programming and explains the difference between regular and irregular (or nested) data parallelism. It also discusses the &lt;a href="http://hackage.haskell.org/package/repa"&gt;Repa&lt;/a&gt; library (regular data parallelism for multicore CPUs), the embedded language &lt;a href="https://github.com/mchakravarty/accelerate"&gt;Accelerate&lt;/a&gt; (regular data parallelism for GPUs), and Data Parallel Haskell (nested data parallelism for multicore CPUs).  The slides of the presentation are available in two formats: &lt;a href="http://public.iwork.com/document/?d=dp-in-haskell_BFPG_Sep_2011.key&amp;amp;a=p179149432"&gt;HTML5 slideshow&lt;/a&gt; and &lt;a href="http://www.cse.unsw.edu.au/~chak/papers/dp-in-haskell.pdf"&gt;PDF&lt;/a&gt;. Thank you to everybody who attended. Special thanks go to OJ Reeves and Tony Morris for organising everything, to Rob Manthey for producing the video, to Mincom for the venue, and to &lt;a href="http://functional.io/"&gt;Functional IO&lt;/a&gt; for the sponsorship.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt; from &lt;a href="http://justtesting.org/video-and-slides-of-data-parallelism-in-haske"&gt;Just Testing&lt;/a&gt; | &lt;a href="http://justtesting.org/video-and-slides-of-data-parallelism-in-haske#comment"&gt;&lt;span&gt;Comment&amp;#160;»&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://justtesting.org/post/9744136519</link><guid>http://justtesting.org/post/9744136519</guid><pubDate>Sat, 03 Sep 2011 22:49:00 +1000</pubDate></item><item><title>Data Parallel Haskell and Repa for GHC 7.2.1</title><description>&lt;p&gt;&lt;div class="posterous_autopost"&gt;As an add-on to the just released &lt;a href="http://www.mail-archive.com/glasgow-haskell-users@haskell.org/msg20202.html"&gt;GHC 7.2.1&lt;/a&gt;, Ben just uploaded the &lt;a href="http://www.haskell.org/haskellwiki/GHC/Data_Parallel_Haskell"&gt;Data Parallel Haskell&lt;/a&gt; packages (version 0.5) to Hackage. This version is still largely a technology preview and not a production-ready system. Nevertheless, it is significantly more robust than previous versions, especially for programs with a statically fixed depth of nesting of parallelism. For further information on how to install and use Data Parallel Haskell (DPH), see the &lt;a href="http://www.haskell.org/haskellwiki/GHC/Data_Parallel_Haskell"&gt;DPH documentation.&lt;/a&gt;&lt;div&gt;Ben simultaneously released the companion library &lt;a href="http://hackage.haskell.org/package/repa"&gt;Repa&lt;/a&gt; (version 2.1.1.6) for use with GHC 7.2.1. In contrast to the DPH libraries, which enable &lt;i&gt;nested data parallelism&lt;/i&gt;, Repa implements parallel, shape-polymorphic, &lt;i&gt;regular&lt;/i&gt; multi-dimensional arrays.  See &lt;a href="http://pls.posterous.com/real-time-edge-detection-with-the-latest-rele"&gt;this previous post&lt;/a&gt; for some more details.&lt;/div&gt;      &lt;p style="font-size: 10px;"&gt;  &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;   from &lt;a href="http://pls.posterous.com/data-parallel-haskell-and-repa-for-ghc-721"&gt;PLS @ UNSW&lt;/a&gt; | &lt;a href="http://pls.posterous.com/data-parallel-haskell-and-repa-for-ghc-721#comment"&gt;&lt;span style="font-size: 11px"&gt;Comment&amp;#160;»&lt;/span&gt;&lt;/a&gt;  &lt;/p&gt;  &lt;/div&gt;&lt;/p&gt;</description><link>http://justtesting.org/post/8778213236</link><guid>http://justtesting.org/post/8778213236</guid><pubDate>Fri, 12 Aug 2011 00:17:05 +1000</pubDate><category>dph</category><category>ghc</category><category>haskell</category><category>repa</category></item><item><title>Data.Array.Accelerate now on GitHub</title><description>&lt;p&gt;&lt;div class="posterous_autopost"&gt;Prompted by GHC&amp;#8217;s move to Git and the unreliability of the &lt;a href="http://community.haskell.org"&gt;community.haskell.org&lt;/a&gt; infrastructure, I decided to move &lt;a href="http://www.cse.unsw.edu.au/~chak/project/accelerate/"&gt;Data.Array.Accelerate&lt;/a&gt; to GitHub: &lt;a href="https://github.com/mchakravarty/accelerate"&gt;mchakravarty/accelerate&lt;/a&gt;. The GitHub repository is now the main public repository for the project. I will also move the tickets of the old Trac bug tracker over to GitHub Issues.      &lt;p style="font-size: 10px;"&gt;  &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;   from &lt;a href="http://justtesting.org/dataarrayaccelerate-now-on-github"&gt;Just Testing&lt;/a&gt; | &lt;a href="http://justtesting.org/dataarrayaccelerate-now-on-github#comment"&gt;&lt;span style="font-size: 11px"&gt;Comment&amp;#160;»&lt;/span&gt;&lt;/a&gt;  &lt;/p&gt;  &lt;/div&gt;&lt;/p&gt;</description><link>http://justtesting.org/post/4685907212</link><guid>http://justtesting.org/post/4685907212</guid><pubDate>Sun, 17 Apr 2011 21:24:33 +1000</pubDate><category>edsl</category><category>gpgpu</category><category>haskell</category><category>parallelism</category></item><item><title>Real-time edge detection with the latest release of the parallel array library Repa</title><description>&lt;p&gt;&lt;div class="posterous_autopost"&gt;We just &lt;a href="http://hackage.haskell.org/package/repa"&gt;released version 2.0.0.1&lt;/a&gt; of the Repa array library for Haskell, which includes Ben&amp;#8217;s recent work on high-performance, parallel stencil computations. The work on stencil computations is described in detail in a draft paper entitled &lt;br/&gt;&lt;a href="http://www.cse.unsw.edu.au/~benl/papers/stencil/stencil-icfp2011-sub.pdf"&gt;Efficient Parallel Stencil Convolution in Haskell&lt;/a&gt;. Be sure to check out &lt;a href="http://code.ouroborus.net/beholder/video/Edge480.mov"&gt;Ben&amp;#8217;s screencast&lt;/a&gt; of a real-time edge detection application, written in Objective-C and Haskell, using the new Repa library. For more details, see &lt;a href="http://disciple-devel.blogspot.com/2011/03/real-time-edge-detection-in-haskell.html"&gt;Ben&amp;#8217;s blog post.&lt;/a&gt;      &lt;p style="font-size: 10px;"&gt;  &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;   from &lt;a href="http://pls.posterous.com/real-time-edge-detection-with-the-latest-rele"&gt;PLS @ UNSW&lt;/a&gt; | &lt;a href="http://pls.posterous.com/real-time-edge-detection-with-the-latest-rele#comment"&gt;&lt;span style="font-size: 11px"&gt;Comment&amp;#160;»&lt;/span&gt;&lt;/a&gt;  &lt;/p&gt;  &lt;/div&gt;&lt;/p&gt;</description><link>http://justtesting.org/post/4183224803</link><guid>http://justtesting.org/post/4183224803</guid><pubDate>Wed, 30 Mar 2011 03:29:18 +1100</pubDate><category>ghc</category><category>haskell</category><category>parallelism</category><category>performance</category><category>repa</category></item><item><title>Simon Peyton Jones: parallel = functional</title><description>&lt;p&gt;&lt;div class="posterous_autopost"&gt;Simon Peyton Jones recently gave a talk on parallel programming in Haskell at &lt;a href="http://skillsmatter.com/event/scala/functionalpx-2011"&gt;Functional Programming eXchange 2011&lt;/a&gt;. It provides a comprehensive overview of the state of the art of parallel programming in Haskell. It covers Software Transactional Memory, Erlang-style communicating processes, parallel strategies as well as our Data Parallel Haskell, Repa, and Accelerate projects. &lt;a href="http://skillsmatter.com/podcast/scala/talk-by-haskell-expert-simon-peyton-jones/js-1434"&gt;Watch the video.&lt;/a&gt;      &lt;p style="font-size: 10px;"&gt;  &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;   from &lt;a href="http://pls.posterous.com/simon-peyton-jones-parallel-functional"&gt;PLS @ UNSW&lt;/a&gt; | &lt;a href="http://pls.posterous.com/simon-peyton-jones-parallel-functional#comment"&gt;&lt;span style="font-size: 11px"&gt;Comment&amp;#160;»&lt;/span&gt;&lt;/a&gt;  &lt;/p&gt;  &lt;/div&gt;&lt;/p&gt;</description><link>http://justtesting.org/post/4182887250</link><guid>http://justtesting.org/post/4182887250</guid><pubDate>Wed, 30 Mar 2011 02:57:47 +1100</pubDate><category>accelerate</category><category>dph</category><category>haskell</category><category>performance</category></item></channel></rss>
