On Sunday, 26 October 2014 at 05:31:52 UTC, Dmitri Nesteruk wrote:
On Tuesday, 21 October 2014 at 08:31:03 UTC, ponce wrote:
On Thursday, 16 October 2014 at 21:18:15 UTC, ponce wrote:
Dear D users,
I'd like to announce DerelictCUDA, dynamic bindings to the
CUDA library.
https://github.com/derelictorg/derelictcuda
For now, only the CUDA Driver API is exposed, providing most
of the warp control.
For a visual explanation of the different APIs in CUDA, see
http://stackoverflow.com/questions/242894/cuda-driver-api-vs-cuda-runtime
More APIs could be implemented if the interest happens to be
non-null.
CUDA Runtime API added.
This is great! I know that C++ uses <<< and >>> to enclose
kernel calls and thus create the link between CPU and GPU code
when NVCC rips things apart. How is this done in your bindings?
The kernel launch syntax can only be used in CUDA when compiling
for both device and host through nvcc. This isn't possible to
have such with D code since nvcc won't take it. You have to
compile the kernels separately, load them, and then use
cudaLaunch or cuKernelLaunch instead (I suggest using string
imports with PTX outputs or fatbin).
This makes CUDA programming arguably less practical than with
C++, but combined host+device code tend to complicate build