cuda-api-wrappers
cuda-api-wrappers copied to clipboard
Integrate or supersede the functionality in nVIDIA's jitify
NVIDIA's jitify library provides a C++'ish interface to (some of? all of?) the real-time compilation / JIT compilation facilities nVIDIA provides. This library should provide this functionality, in particular; and it doesn't right now. Technically it's separate from the CUDA Runtime API per se, but still.
Jittify has some capabilities we don't. For example - it has some support for reflected instantiation of templates.
Also, need to make sure we offer all of those standard-C-library-header snippets which are device-safe, at least optionally.
Of course, it also has functionality which we specifically want to avoid, like logging to stdout and this weird serialization.
So, this is resolved on the driver-wrappers branch. The reason you're seeing so many notifications here is that that branch gets routinely rebased off of development.
So, what's not covered here, but provided by jitify? Here is a partial list:
- [ ] Cache of compiled programs which you can lookup in (using names ?)
- [ ] Name demangling
- [ ] PTX parsing
- [ ] NVRTC-compatible versions of standard headers, e.g. for preinclusion: algorithm, assert.h, cassert, cfloat, climits, cmath, complex, cstddef, cstdint, cstdio, cstdlib, cstring, ctime, float.h, iostream, istream, iterator, jitify_preinclude.h, limits, limits.h, math.h, memory.h, mutex, ostream, sstream, stddef.h, stdexcept, stdint.h, stdio.h, stdlib.h, string, string.h, time.h, tuple, type_traits, utility, vector
Headers are certainly outside our scope, plus, jitify's headers make a bunch of assumptions regarding what you need and why you're including some of the headers, which I wouldn't make.
Caching is beyond our scope as well, plus you have some of it by adding modules to the context of your liking.