[PATCH] D42642: [CUDA] Detect installation in PATH

Artem Belevich via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue Jan 30 12:56:27 PST 2018


tra added inline comments.


================
Comment at: lib/Driver/ToolChains/Cuda.cpp:96-105
+      if (llvm::ErrorOr<std::string> ptxas =
+              llvm::sys::findProgramByName("ptxas")) {
+        SmallString<256> ptxasAbsolutePath;
+        llvm::sys::fs::real_path(*ptxas, ptxasAbsolutePath);
+
+        StringRef ptxasDir = llvm::sys::path::parent_path(ptxasAbsolutePath);
+        if (llvm::sys::path::filename(ptxasDir) == "bin")
----------------
Another corner case:
Debian scatters CUDA install all over the filesystem. To make it work with clang it has a 'shim' package which re-creates complete CUDA install using symlinks to its scattered bits. https://bugs.llvm.org/show_bug.cgi?id=35249.  If PATH includes such a shim with a symlink pointing to location somewhere else in the filesystem, this variant of the patch will not work.

I'd add another candidate derived from the path returned by find. This should cover all reasonable scenarios I can think of.

Caveat: clang on Debian already has a special case to add this shim to the list of candidates ( D40453 ), so this patch should not affect it. Still, it's possible for the similar case to happen somewhere else where we do not have any explicit workarounds in clang.

BTW, should this heuristic apply on Windows, too? IIRC cuda installer does add CUDA's bin dir to PATH.



https://reviews.llvm.org/D42642





More information about the cfe-commits mailing list