From d1f8cd1b481d773790508d38545fc0f6856744a5 Mon Sep 17 00:00:00 2001 From: Tom Deakin Date: Thu, 28 Apr 2016 23:06:06 +0100 Subject: [PATCH] Implement some CUDA routines for device info --- src/CUDAStream.cu | 22 ++++++++++++++++++++++ src/CUDAStream.h | 4 ++++ src/Stream.h | 7 ++++--- 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/src/CUDAStream.cu b/src/CUDAStream.cu index 7c9afb3..3a65f15 100644 --- a/src/CUDAStream.cu +++ b/src/CUDAStream.cu @@ -134,6 +134,28 @@ void CUDAStream::triad() check_error(); } +template +std::string CUDAStream::getDeviceName(const int device) +{ + cudaSetDevice(device); + check_error(); + cudaDeviceProp props; + cudaGetDeviceProperties(&props, device); + check_error(); + return std::string(props.name); +} + +template +std::string CUDAStream::getDeviceDriver(const int device) +{ + cudaSetDevice(device); + check_error(); + int driver; + cudaDriverGetVersion(&driver); + check_error(); + return std::to_string(driver); +} + template class CUDAStream; template class CUDAStream; diff --git a/src/CUDAStream.h b/src/CUDAStream.h index 34e0303..c741f5c 100644 --- a/src/CUDAStream.h +++ b/src/CUDAStream.h @@ -31,5 +31,9 @@ class CUDAStream : public Stream virtual void write_arrays(const std::vector& a, const std::vector& b, const std::vector& c) override; virtual void read_arrays(std::vector& a, std::vector& b, std::vector& c) override; + static void listDevices(void); + static std::string getDeviceName(const int device); + static std::string getDeviceDriver(const int device); + }; diff --git a/src/Stream.h b/src/Stream.h index ecf043b..573af83 100644 --- a/src/Stream.h +++ b/src/Stream.h @@ -2,6 +2,7 @@ #pragma once #include +#include template class Stream @@ -19,9 +20,9 @@ class Stream virtual void read_arrays(std::vector& a, std::vector& b, std::vector& c) = 0; // Implementation specific device functions - static std::vector getDeviceList(); - static std::vector getDeviceName(); - static std::vector getDeviceDriver(); + static void listDevices(void); + static std::string getDeviceName(const int); + static std::string getDeviceDriver(const int); };