On 09.04.2012 6:49, Josh Klontz wrote:
On Saturday, 7 April 2012 at 18:47:21 UTC, Robert Jacques wrote:
On Sat, 07 Apr 2012 11:38:15 -0500, Josh Klontz
<josh.klo...@gmail.com> wrote:

Greetings! As someone with a research interest in software
abstractions for image processing, the D programming language
appears to offer unsurpassed language features for constructing
beautiful and efficient programs. With that said, what would
really get me to abandon C++ is if D supported a heterogenous
programming model.

My personal inclination would be something closer to OpenACC than
anything else I've seen available. Though only in the sense that
I like the idea of writing code once and being able to
compile/run/debug it with or without automatic
vectorization/kernelization. Presumably we could achieve more
elegant syntax with tighter integration into the language. Has
anyone been working on anything like this? Is this something the
community would be interested in seeing? What should the solution
look like?

One path forward could be a patch to the compiler to generate and
execute OpenCL kernels for appropriately marked-up D code. While
I'm new the the D language, I'd be happy to work on a proof of
concept of this if it is something the community thinks would be
valuable and I could get specific feedback about the right way to
approach it.


I've been using D with CUDA via a high-level wrapper around the driver
API. It works very nicely, but it doesn't address the language
integration issues. Might I recommend looking into hooking up LDC to
the PTX LLVM back-end. That would seem much faster than writing your
own back-end.

Yes, I certainly don't want to be in the business of writing back-ends.
Another idea that came to mind recently was implementing a keyword
similar in spirit to "asm":

opencl {
// Valid opencl code here
}

And have the compiler automatically handle memory copying of D variables
referenced in the kernel code. Would be entirely back-end independent
and perhaps pleasant to implement?

Take a look at C++ AMP it's almost exactly this thing added to Visual C++ (but of course for now it's DirectCompute):
http://msdn.microsoft.com/en-us/library/hh265136(v=vs.110).aspx

--
Dmitry Olshansky

Reply via email to