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