diff options
author | Ray Molenkamp <github@lazydodo.com> | 2018-02-03 20:59:09 +0300 |
---|---|---|
committer | Ray Molenkamp <github@lazydodo.com> | 2018-02-03 20:59:09 +0300 |
commit | a5052770b85fefe00511886429e6fc1f5056e1e8 (patch) | |
tree | 5dbe529f230833e71ee2504657ccec32364f4a01 /extern | |
parent | db989e1f118071aae6dcd9f29d10182bd5ebed0b (diff) |
cycles: Add an nvrtc based cubin cli compiler.
nvcc is very picky regarding compiler versions, severely limiting the compiler we can use, this commit adds a nvrtc based compiler that'll allow us to build the cubins even if the host compiler is unsupported. for details see D2913.
Differential Revision: http://developer.blender.org/D2913
Diffstat (limited to 'extern')
-rw-r--r-- | extern/cuew/include/cuew.h | 1 | ||||
-rw-r--r-- | extern/cuew/src/cuew.c | 11 |
2 files changed, 11 insertions, 1 deletions
diff --git a/extern/cuew/include/cuew.h b/extern/cuew/include/cuew.h index 0eace96bc3f..f5009d4f2c7 100644 --- a/extern/cuew/include/cuew.h +++ b/extern/cuew/include/cuew.h @@ -1323,6 +1323,7 @@ int cuewInit(void); const char *cuewErrorString(CUresult result); const char *cuewCompilerPath(void); int cuewCompilerVersion(void); +int cuewNvrtcVersion(void); #ifdef __cplusplus } diff --git a/extern/cuew/src/cuew.c b/extern/cuew/src/cuew.c index 962059bfcce..b68dc597049 100644 --- a/extern/cuew/src/cuew.c +++ b/extern/cuew/src/cuew.c @@ -329,7 +329,7 @@ int cuewInit(void) { #ifdef _WIN32 /* Expected in c:/windows/system or similar, no path needed. */ const char *cuda_paths[] = {"nvcuda.dll", NULL}; - const char *nvrtc_paths[] = {"nvrtc.dll", NULL}; + const char *nvrtc_paths[] = {"nvrtc64_80.dll", "nvrtc64_90.dll", "nvrtc64_91.dll", NULL}; #elif defined(__APPLE__) /* Default installation path. */ const char *cuda_paths[] = {"/usr/local/cuda/lib/libcuda.dylib", NULL}; @@ -766,6 +766,15 @@ const char *cuewCompilerPath(void) { return NULL; } +int cuewNvrtcVersion(void) { + int major, minor; + if (nvrtcVersion) { + nvrtcVersion(&major, &minor); + return 10 * major + minor; + } + return 0; +} + int cuewCompilerVersion(void) { const char *path = cuewCompilerPath(); const char *marker = "Cuda compilation tools, release "; |