if (CudaPath.empty() || !D.getVFS().exists(CudaPath))
continue;
- CudaInstallPath = CudaPath;
- CudaBinPath = CudaPath + "/bin";
- CudaIncludePath = CudaInstallPath + "/include";
- CudaLibDevicePath = CudaInstallPath + "/nvvm/libdevice";
- CudaLibPath =
- CudaInstallPath + (TargetTriple.isArch64Bit() ? "/lib64" : "/lib");
-
- if (!(D.getVFS().exists(CudaIncludePath) &&
- D.getVFS().exists(CudaBinPath) && D.getVFS().exists(CudaLibPath) &&
- D.getVFS().exists(CudaLibDevicePath)))
+ InstallPath = CudaPath;
+ BinPath = CudaPath + "/bin";
+ IncludePath = InstallPath + "/include";
+ LibDevicePath = InstallPath + "/nvvm/libdevice";
+ LibPath = InstallPath + (TargetTriple.isArch64Bit() ? "/lib64" : "/lib");
+
+ auto &FS = D.getVFS();
+ if (!(FS.exists(IncludePath) && FS.exists(BinPath) && FS.exists(LibPath) &&
+ FS.exists(LibDevicePath)))
continue;
std::error_code EC;
- for (llvm::sys::fs::directory_iterator LI(CudaLibDevicePath, EC), LE;
+ for (llvm::sys::fs::directory_iterator LI(LibDevicePath, EC), LE;
!EC && LI != LE; LI = LI.increment(EC)) {
StringRef FilePath = LI->path();
StringRef FileName = llvm::sys::path::filename(FilePath);
continue;
StringRef GpuArch = FileName.slice(
LibDeviceName.size(), FileName.find('.', LibDeviceName.size()));
- CudaLibDeviceMap[GpuArch] = FilePath.str();
+ LibDeviceMap[GpuArch] = FilePath.str();
// Insert map entries for specifc devices with this compute capability.
if (GpuArch == "compute_20") {
- CudaLibDeviceMap["sm_20"] = FilePath;
- CudaLibDeviceMap["sm_21"] = FilePath;
+ LibDeviceMap["sm_20"] = FilePath;
+ LibDeviceMap["sm_21"] = FilePath;
} else if (GpuArch == "compute_30") {
- CudaLibDeviceMap["sm_30"] = FilePath;
- CudaLibDeviceMap["sm_32"] = FilePath;
+ LibDeviceMap["sm_30"] = FilePath;
+ LibDeviceMap["sm_32"] = FilePath;
} else if (GpuArch == "compute_35") {
- CudaLibDeviceMap["sm_35"] = FilePath;
- CudaLibDeviceMap["sm_37"] = FilePath;
+ LibDeviceMap["sm_35"] = FilePath;
+ LibDeviceMap["sm_37"] = FilePath;
} else if (GpuArch == "compute_50") {
- CudaLibDeviceMap["sm_50"] = FilePath;
- CudaLibDeviceMap["sm_52"] = FilePath;
- CudaLibDeviceMap["sm_53"] = FilePath;
- CudaLibDeviceMap["sm_60"] = FilePath;
- CudaLibDeviceMap["sm_61"] = FilePath;
- CudaLibDeviceMap["sm_62"] = FilePath;
+ LibDeviceMap["sm_50"] = FilePath;
+ LibDeviceMap["sm_52"] = FilePath;
+ LibDeviceMap["sm_53"] = FilePath;
+ LibDeviceMap["sm_60"] = FilePath;
+ LibDeviceMap["sm_61"] = FilePath;
+ LibDeviceMap["sm_62"] = FilePath;
}
}
void Generic_GCC::CudaInstallationDetector::print(raw_ostream &OS) const {
if (isValid())
- OS << "Found CUDA installation: " << CudaInstallPath << "\n";
+ OS << "Found CUDA installation: " << InstallPath << "\n";
}
namespace {
GCCInstallationDetector GCCInstallation;
// \brief A class to find a viable CUDA installation
-
class CudaInstallationDetector {
- bool IsValid;
+ private:
const Driver &D;
- std::string CudaInstallPath;
- std::string CudaBinPath;
- std::string CudaLibPath;
- std::string CudaLibDevicePath;
- std::string CudaIncludePath;
- llvm::StringMap<std::string> CudaLibDeviceMap;
+ bool IsValid = false;
+ std::string InstallPath;
+ std::string BinPath;
+ std::string LibPath;
+ std::string LibDevicePath;
+ std::string IncludePath;
+ llvm::StringMap<std::string> LibDeviceMap;
public:
- CudaInstallationDetector(const Driver &D) : IsValid(false), D(D) {}
+ CudaInstallationDetector(const Driver &D) : D(D) {}
void init(const llvm::Triple &TargetTriple, const llvm::opt::ArgList &Args);
/// \brief Check whether we detected a valid Cuda install.
void print(raw_ostream &OS) const;
/// \brief Get the detected Cuda installation path.
- StringRef getInstallPath() const { return CudaInstallPath; }
+ StringRef getInstallPath() const { return InstallPath; }
/// \brief Get the detected path to Cuda's bin directory.
- StringRef getBinPath() const { return CudaBinPath; }
+ StringRef getBinPath() const { return BinPath; }
/// \brief Get the detected Cuda Include path.
- StringRef getIncludePath() const { return CudaIncludePath; }
+ StringRef getIncludePath() const { return IncludePath; }
/// \brief Get the detected Cuda library path.
- StringRef getLibPath() const { return CudaLibPath; }
+ StringRef getLibPath() const { return LibPath; }
/// \brief Get the detected Cuda device library path.
- StringRef getLibDevicePath() const { return CudaLibDevicePath; }
+ StringRef getLibDevicePath() const { return LibDevicePath; }
/// \brief Get libdevice file for given architecture
std::string getLibDeviceFile(StringRef Gpu) const {
- return CudaLibDeviceMap.lookup(Gpu);
+ return LibDeviceMap.lookup(Gpu);
}
};