2017-12-28 5 views
0

Ich möchte wissen, wie viel mein Code schneller mit CUDA, so dass ich kompilieren OpenCV mit folgenden Schaltern (einschließlich CUDA)opencv Verwendung cuda Speicher ohnehin

cmake CMAKE_BUILD_TYPE=RELEASE \ 
CMAKE_INSTALL_PREFIX=/usr/local \ 
WITH_CUDA=ON \ 
ENABLE_FAST_MATH=1 \ 
CUDA_FAST_MATH=1 \ 
WITH_CUBLAS=1 \  
INSTALL_PYTHON_EXAMPLES=OFF \ 
OPENCV_EXTRA_MODULES_PATH=/home/saeed/opencv_contrib/modules \ 
BUILD_EXAMPLES=OFF .. 

und ich bin auf Linux-basierten Maschine und mit dedizierte GPU auf meinem System, so wie ich die GPU-Nutzung für OpenCV-Code messen kann? Ich habe das mit der Verwendung von

$ nvidia-smi 

Befehl, der mir gibt allgemeine Informationen über gpu Nutzung und usw. (in bash).

für Spur dieser Ausgang I

$ watch -n 0.1 nvidia-smi 

Befehl verwenden, die Informationen alle 0,1 Sekunden aktualisiert (0,1 Sekunden Minimum)

So habe ich einen Code wie unten in opencv (Sie kann ich don sehen ‚t jede CUDA-Funktion in es verwenden)

#include "opencv2/core.hpp" 
#include "opencv2/imgproc/imgproc.hpp" 
using namespace cv; 
int main() 
{ 
    cv::Mat src(1500,1500,CV_8UC3),res; 
    for (int var = 0; var < 70; ++var) 
    { 
     Canny(src,res,50,150,5); 
    } 

} 

Also, wenn ich über Code ausführen ich in meinem nvidia-smi Seite einen Screenshot nehmen (zu wissen, wie viel gpu rAM verwendet wird)

enter image description here

Wie man dort sehen kann, ist 23 MiB ist im Einsatz !!! Also warum passiert das !! Wenn es normal ist, wie wir das stoppen können? Wie zu stoppen GPU für dieses Problem

+0

Sie sehen eine Änderung der Speichernutzung vor und während Ihres Codes ausgeführt wird? Es kann eine normale Speichernutzung sein. – Aram

+0

Nein, ich erzwinge, dass mein Betriebssystem keine GPU-Ressourcen verwendet, ich füge es meiner Blacklist hinzu Wenn ich keinen Cuda-Code verwende, muss er immer Null sein –

+0

Aber siehst du eine Änderung der Speichernutzung? – Aram

Antwort

2

können Sie die CUDA-Laufzeit machen zeigen, dass es keine verfügbaren GPUs mit folgendem environment variable:

CUDA_VISIBLE_DEVICES="" ./my_opencv_code_that_wont_use_gpu 

Wenn Sie OpenCV eigentlich nicht mit der GPU nichts zu tun , meine beste Schätzung wäre es, es ohne CUDA-Unterstützung zu kompilieren:

cmake CMAKE_BUILD_TYPE=RELEASE \ 
CMAKE_INSTALL_PREFIX=/usr/local \ 
WITH_CUDA=ON \ ********MODIFY 
ENABLE_FAST_MATH=1 \ 
CUDA_FAST_MATH=1 \ ********MODIFY 
WITH_CUBLAS=1 \ ********MODIFY 
INSTALL_PYTHON_EXAMPLES=OFF \ 
OPENCV_EXTRA_MODULES_PATH=/home/saeed/opencv_contrib/modules \ 
BUILD_EXAMPLES=OFF .. 
+2

Es ist wahrscheinlich erwähnenswert, dass, nur weil etwas in OpenCV verbunden ist, einen Kontext auf der GPU erstellt und etwas Speicher verbraucht nicht bedeuten, dass OpenCV die GPU tatsächlich für irgendetwas verwendet – talonmies

Verwandte Themen