<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"><channel><description>Random ramblings by me.</description><title>Just Testing</title><generator>Tumblr (3.0; @justtesting)</generator><link>http://justtesting.org/</link><item><title>Converting typed term representations: from HOAS to de Bruijn.</title><description>&lt;a href="http://www.cse.unsw.edu.au/~chak/haskell/term-conv/"&gt;Converting typed term representations: from HOAS to de Bruijn.&lt;/a&gt;: Given a GADT representation of a typed higher-order term language using higher-order abstract syntax (HOAS), it is more difficult to convert to an alternative GADT representation using de Bruijn indices for bound variables than I at first expected.  Here is a solution using explicit type representations (with Data.Typeable).</description><link>http://justtesting.org/post/134566537</link><guid>http://justtesting.org/post/134566537</guid><pubDate>Fri, 03 Jul 2009 14:24:25 +1000</pubDate><category>haskell</category><category>GADTs</category></item><item><title>Instant Generics now has a website!</title><description>&lt;a href="http://www.cse.unsw.edu.au/~chak/project/generics/"&gt;Instant Generics now has a website!&lt;/a&gt;: It also has a tar ball with some example code.</description><link>http://justtesting.org/post/115191589</link><guid>http://justtesting.org/post/115191589</guid><pubDate>Sat, 30 May 2009 15:49:42 +1000</pubDate></item><item><title>Instant Generics: Fast and Easy.</title><description>&lt;a href="http://www.cse.unsw.edu.au/~chak/papers/CDL09.html"&gt;Instant Generics: Fast and Easy.&lt;/a&gt;: This paper introduces a novel approach to datatype-generic programming based on type classes and type families. It is fairly easy to use, is very expressive, and incurs minimal overhead over handwritten datatype-specific code.</description><link>http://justtesting.org/post/106219682</link><guid>http://justtesting.org/post/106219682</guid><pubDate>Mon, 11 May 2009 21:31:58 +1000</pubDate></item><item><title>Program for "Workshop on Exploiting Parallelism using GPUs and other Hardware-Assisted Methods (EPHAM 2009)".</title><description>&lt;a href="http://www.gpgpu.org/EPHAM09/"&gt;Program for "Workshop on Exploiting Parallelism using GPUs and other Hardware-Assisted Methods (EPHAM 2009)".&lt;/a&gt;</description><link>http://justtesting.org/post/87224151</link><guid>http://justtesting.org/post/87224151</guid><pubDate>Tue, 17 Mar 2009 21:49:01 +1100</pubDate><category>GPGPU</category></item><item><title>Final version of "GPU Kernels as Data-Parallel Array Computations in Haskell".</title><description>&lt;a href="http://www.cse.unsw.edu.au/~chak/papers/LCGK09.html"&gt;Final version of "GPU Kernels as Data-Parallel Array Computations in Haskell".&lt;/a&gt;: This paper will be presented at the &lt;a href="http://www.cgo.org/cgo2009/workshops.html#EPHAM"&gt;Workshop on Exploiting Parallelism using GPUs and other Hardware-Assisted Methods (EPHAM 2009)&lt;/a&gt;, co-located with CGO’09 in Seattle, WA.</description><link>http://justtesting.org/post/86905420</link><guid>http://justtesting.org/post/86905420</guid><pubDate>Mon, 16 Mar 2009 21:32:52 +1100</pubDate><category>haskell</category><category>GPGPU</category><category>EDSL</category></item><item><title>These graphs summarise the performance of Data Parallel Haskell...</title><description>&lt;img src="http://2.media.tumblr.com/VtG26AnzIkvn16advfFBzxwbo1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;These graphs summarise the performance of &lt;a href="http://www.cse.unsw.edu.au/~chak/project/dph/"&gt;Data Parallel Haskell&lt;/a&gt; for three simple benchmarks on two different architectures, both of which have 8 cores. At the top, we have 8 cores with one hardware thread each, in the form of two Quad-Core 3GHz Xeon processors. At the bottom, we have 8 cores with 8 hardware threads each (for a total of 64 hardware threads), in the form of a single 1.4GHz UltraSPARC T2.&lt;/p&gt;
&lt;p&gt;The benchmarks are the following: (1) &lt;code&gt;sumsq&lt;/code&gt; computes the parallel sum of the squares from 1 to 10 million; (2) &lt;code&gt;dotp&lt;/code&gt; computes the dot product of two dense vectors of 100 million double-precision floating-point numbers; and (3) &lt;code&gt;smvm&lt;/code&gt; multiplies a sparse matrix with 10 million non-zero double-precision floating-point elements with a dense vector.&lt;/p&gt;
&lt;p&gt;The graphs show the speedup of Data Parallel Haskell with respect to a &lt;i&gt;sequential C&lt;/i&gt; implementation of each benchmark – whenever, a curve climbs above 1 on the y-axis, the parallel Haskell program beats the sequential C program in absolute runtime.&lt;/p&gt;
&lt;p&gt;The scalability of these three programs in Data Parallel Haskell is very good, although &lt;code&gt;dotp&lt;/code&gt; is limited by memory bandwidth on the Quad-Core Xeon processors, as discussed in my previous post. The grey curve is a parallel C implementation of &lt;code&gt;dotp&lt;/code&gt; that is bandwidth limited in the same manner.&lt;/p&gt;</description><link>http://justtesting.org/post/85103645</link><guid>http://justtesting.org/post/85103645</guid><pubDate>Tue, 10 Mar 2009 15:39:44 +1100</pubDate></item><item><title>Installing GtK2Hs on a Mac with the native GTK+ OS X Framework.</title><description>&lt;a href="http://www.haskell.org/haskellwiki/Gtk2Hs#Using_the_GTK.2B_OS_X_Framework"&gt;Installing GtK2Hs on a Mac with the native GTK+ OS X Framework.&lt;/a&gt;</description><link>http://justtesting.org/post/83333955</link><guid>http://justtesting.org/post/83333955</guid><pubDate>Wed, 04 Mar 2009 14:06:49 +1100</pubDate><category>haskell</category><category>GTK+</category><category>macos</category></item><item><title>This is the performance of a dot product of two vectors of 10...</title><description>&lt;img src="http://18.media.tumblr.com/VtG26AnzIklk0sh6YkZSLYNPo1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;This is the performance of a dot product of two vectors of 10 million doubles each using &lt;a href="http://haskell.org/haskellwiki/GHC/Data_Parallel_Haskell"&gt;Data Parallel Haskell.&lt;/a&gt; Both machines have 8 cores. Each core of the T2 has 8 hardware thread contexts. The performance is memory bound. The DPH code is&lt;/p&gt;
&lt;pre&gt;dotp' :: [:Double:] -&gt; [:Double:] -&gt; Double
dotp' v w = D.sumP (zipWithP (*) v w)&lt;/pre&gt;
&lt;p&gt;Interesting is that despite the much lower single-thread performance, the T2 makes it all up in excellent multi-threading performance. Interesting to Haskell folks is that the corresponding multi-threaded C code using pthreads is much harder to write and barely any faster when using all parallelism (the Sun C-Compiler still manages to reduce the runtime by about 30% with 64 threads, but on the Xeons, there is no significant difference).&lt;/p&gt;
&lt;p&gt;NB: This uses the latest development version of GHC and DPH.  Thanks to Ben Lippmeier for his nice work on the SPARC backend of GHC.&lt;/p&gt;</description><link>http://justtesting.org/post/83014052</link><guid>http://justtesting.org/post/83014052</guid><pubDate>Tue, 03 Mar 2009 14:17:00 +1100</pubDate></item><item><title>Call for Presentations: Commercial Users of Functional Programming Workshop (CUFP) 2009!</title><description>&lt;a href="http://cufp.galois.com/2009/call.html"&gt;Call for Presentations: Commercial Users of Functional Programming Workshop (CUFP) 2009!&lt;/a&gt;: Show the world how you have used functional programming!</description><link>http://justtesting.org/post/82961874</link><guid>http://justtesting.org/post/82961874</guid><pubDate>Tue, 03 Mar 2009 11:00:10 +1100</pubDate></item><item><title>Complete and Decidable Type Inference for GADTs.</title><description>&lt;a href="http://tomschrijvers.blogspot.com/2009/03/complete-and-decidable-type-inferennce.html"&gt;Complete and Decidable Type Inference for GADTs.&lt;/a&gt;</description><link>http://justtesting.org/post/82957421</link><guid>http://justtesting.org/post/82957421</guid><pubDate>Tue, 03 Mar 2009 10:43:48 +1100</pubDate><category>haskell</category><category>GADTs</category></item><item><title>Industrial Haskell Group.</title><description>&lt;a href="http://industry.haskell.org/"&gt;Industrial Haskell Group.&lt;/a&gt;</description><link>http://justtesting.org/post/82947078</link><guid>http://justtesting.org/post/82947078</guid><pubDate>Tue, 03 Mar 2009 10:04:34 +1100</pubDate><category>haskell</category></item><item><title>Version 0.16.0 of the C-&gt;Haskell interface generator.</title><description>&lt;a href="http://hackage.haskell.org/cgi-bin/hackage-scripts/package/c2hs"&gt;Version 0.16.0 of the C-&gt;Haskell interface generator.&lt;/a&gt;</description><link>http://justtesting.org/post/82394454</link><guid>http://justtesting.org/post/82394454</guid><pubDate>Sun, 01 Mar 2009 12:19:03 +1100</pubDate><category>haskell</category><category>c2hs</category></item><item><title>Mark your Haskell tweets with #haskell</title><description>This makes for easy searching and let’s us use &lt;a href="http://twitterfall.com/#haskell"&gt;Twitterfall&lt;/a&gt; (which is partly implemented in Erlang, btw).</description><link>http://justtesting.org/post/80211621</link><guid>http://justtesting.org/post/80211621</guid><pubDate>Sat, 21 Feb 2009 23:03:38 +1100</pubDate><category>haskell</category><category>twitter</category></item><item><title>Comparison of type families with functional dependencies.</title><description>&lt;a href="http://article.gmane.org/gmane.comp.lang.haskell.cafe/52948"&gt;Comparison of type families with functional dependencies.&lt;/a&gt;: This is a haskell-cafe post of a brief summary of the commonalities and differences of the two language features.</description><link>http://justtesting.org/post/78667708</link><guid>http://justtesting.org/post/78667708</guid><pubDate>Mon, 16 Feb 2009 14:10:43 +1100</pubDate><category>Haskell</category><category>type families</category><category>ghc</category></item><item><title>The slides of the invited talks about multicore programming from DAMP'09 are online.</title><description>&lt;a href="http://www.cse.unsw.edu.au/~pls/damp09/programme.html"&gt;The slides of the invited talks about multicore programming from DAMP'09 are online.&lt;/a&gt;: John Reppy talked about &lt;a href="http://www.cse.unsw.edu.au/~pls/damp09/damp09-reppy-keynote.pdf"&gt;The Manticore Project&lt;/a&gt; and Ulf Wiger talked about &lt;a href="http://www.cse.unsw.edu.au/~pls/damp09/damp09-wiger-keynote.pdf"&gt;Erlang Programming for Multi-core&lt;/a&gt;.</description><link>http://justtesting.org/post/73929672</link><guid>http://justtesting.org/post/73929672</guid><pubDate>Thu, 29 Jan 2009 13:56:54 +1100</pubDate><category>DAMP2009</category><category>multicore</category><category>functional programming</category></item><item><title>Some nice code examples showing how to use type families.</title><description>&lt;a href="http://martijn.van.steenbergen.nl/journal/2009/01/11/type-synonym-families/"&gt;Some nice code examples showing how to use type families.&lt;/a&gt;: They are inspired by code from the MTL and from parser combinators.</description><link>http://justtesting.org/post/70895924</link><guid>http://justtesting.org/post/70895924</guid><pubDate>Fri, 16 Jan 2009 23:50:34 +1100</pubDate><category>Haskell</category><category>type families</category></item><item><title>Enforcing a relation between independent type families.</title><description>&lt;a href="http://www.haskell.org/pipermail/haskell-cafe/2009-January/053696.html"&gt;Enforcing a relation between independent type families.&lt;/a&gt;: The question of how to ensure that one type family is the inverse of another comes up once in a while.  Here some concrete code.</description><link>http://justtesting.org/post/70893530</link><guid>http://justtesting.org/post/70893530</guid><pubDate>Fri, 16 Jan 2009 23:31:08 +1100</pubDate><category>Haskell</category><category>GHC</category><category>type families</category></item><item><title>Workshop on Exploiting Parallelism using GPUs and other Hardware-Assisted Methods (EPHAM 2009).</title><description>&lt;a href="http://www.gpgpu.org/EPHAM09/"&gt;Workshop on Exploiting Parallelism using GPUs and other Hardware-Assisted Methods (EPHAM 2009).&lt;/a&gt;: Check out the CFP!  EPHAM09 is co-located with 2009 International Symposium on Code Generation and Optimization (CGO) in Seattle, Washington.</description><link>http://justtesting.org/post/69886191</link><guid>http://justtesting.org/post/69886191</guid><pubDate>Mon, 12 Jan 2009 15:04:34 +1100</pubDate><category>GPGPU</category></item><item><title>GPU Kernels as Data-Parallel Array Computations in Haskell.</title><description>&lt;a href="http://www.cse.unsw.edu.au/~chak/papers/LCGK09.html"&gt;GPU Kernels as Data-Parallel Array Computations in Haskell.&lt;/a&gt;: This paper provides a brief overview of our approach to GPU programming with Haskell by embedding GPU kernels with a domain-specific language of data-parallel array computations in Haskell code. The paper also presents some preliminary benchmarks.</description><link>http://justtesting.org/post/68696876</link><guid>http://justtesting.org/post/68696876</guid><pubDate>Tue, 06 Jan 2009 22:58:46 +1100</pubDate><category>GPGPU</category><category>Haskell</category><category>EDSL</category></item><item><title>ICFP calls for functional programming Experience Reports.</title><description>&lt;a href="http://web.cecs.pdx.edu/~apt/icfp09_cfer.html"&gt;ICFP calls for functional programming Experience Reports.&lt;/a&gt;: If you have used functional programming in a real world application, we want to hear about it!</description><link>http://justtesting.org/post/65063500</link><guid>http://justtesting.org/post/65063500</guid><pubDate>Tue, 16 Dec 2008 12:22:00 +1100</pubDate><category>functional programming</category><category>ICFP</category></item></channel></rss>
