[Haskell-cafe] Does this library already exist? template haskell + generate/compile C code + dlopen
Ryan Newton
newton at mit.edu
Wed Jun 8 18:58:17 CEST 2011
The Nikola GPU programming system has a very neat, flexible approach to how
you compile the EDSL-generated code. You can do it dynamically, calling
nvcc at runtime, OR it can play a trick where it calls nvcc at compile time
(via template haskell) and caches the result in a string literal within the
TH-generated Haskell code.
That is a pretty cool trick IMHO. Moreover, we can do that with any tool
that generates C code or native code, as follows:
At compile time, via Template Haskell:
1. call tool which creates C code
2. create temp files and call C compiler
3. load resulting object file as a bytestring and store it as a string
constant
Then at runtime:
1. put bytestring back into a file
2. call dlopen
3. call dlsym, get FunPtr, voila!
Anyway, I was going to put together a simple library that encapsulates the
above steps. Such a library could be used, for example, in making this
stencil compiler project <http://people.csail.mit.edu/yuantang/> available
to Haskell users as well as C++ users. (The compiler is written in Haskell
already anyway!)
But first I thought I'd ask if this already exists. Also, is there a
better way to do it? In particular, is there any way to get static linking
to work, rather than the silliness with strings, tempfiles, and dlopen.
Thanks,
-Ryan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20110608/2dfed050/attachment.htm>
More information about the Haskell-Cafe
mailing list