1+ # -*- DISCLAIMER: this file contains code derived from gputil (https://github.com/anderskm/gputil)
2+ # and therefore is distributed under to the following license:
3+ #
4+ # MIT License
5+ #
6+ # Copyright (c) 2017 anderskm
7+ #
8+ # Permission is hereby granted, free of charge, to any person obtaining a copy
9+ # of this software and associated documentation files (the "Software"), to deal
10+ # in the Software without restriction, including without limitation the rights
11+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12+ # copies of the Software, and to permit persons to whom the Software is
13+ # furnished to do so, subject to the following conditions:
14+ #
15+ # The above copyright notice and this permission notice shall be included in all
16+ # copies or substantial portions of the Software.
17+ #
18+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
24+ # SOFTWARE.
25+ 26+ import platform
27+ import shutil
28+ from subprocess import Popen , PIPE
29+ import os
30+ 31+ def gpu_count ():
32+ try :
33+ if platform .system () == "Windows" :
34+ nvidia_smi = shutil .which ('nvidia-smi' )
35+ if nvidia_smi is None :
36+ nvidia_smi = "%s\\ Program Files\\ NVIDIA Corporation\\ NVSMI\\ nvidia-smi.exe" % os .environ ['systemdrive' ]
37+ else :
38+ nvidia_smi = "nvidia-smi"
39+ 40+ p = Popen ([nvidia_smi ,
41+ "--query-gpu=name" ,
42+ "--format=csv,noheader,nounits" ], stdout = PIPE )
43+ stdout , stderror = p .communicate ()
44+ 45+ output = stdout .decode ('UTF-8' )
46+ lines = output .split (os .linesep )
47+ num_devices = len (lines ) - 1
48+ return num_devices
49+ except :
50+ return 0
0 commit comments