File tree 7 files changed +60
-34
lines changed
7 files changed +60
-34
lines changed Original file line number Diff line number Diff line change @@ -60,15 +60,21 @@ import (
60
60
)
61
61
62
62
func main () {
63
- ret := nvml.Init ()
63
+ ret , err := nvml.Init ()
64
+ if err != nil {
65
+ log.Fatalf (" Unable to open NVML library: %v " , err)
66
+ }
64
67
if ret != nvml.SUCCESS {
65
68
log.Fatalf (" Unable to initialize NVML: %v " , nvml.ErrorString (ret))
66
69
}
67
70
defer func () {
68
- ret := nvml.Shutdown ()
71
+ ret , err := nvml.Shutdown ()
69
72
if ret != nvml.SUCCESS {
70
73
log.Fatalf (" Unable to shutdown NVML: %v " , nvml.ErrorString (ret))
71
74
}
75
+ if err != nil {
76
+ log.Fatalf (" Unable to close NVML library: %v " , err)
77
+ }
72
78
}()
73
79
74
80
count , ret := nvml.DeviceGetCount ()
Original file line number Diff line number Diff line change @@ -24,15 +24,21 @@ import (
24
24
)
25
25
26
26
func main () {
27
- ret := nvml .Init ()
27
+ ret , err := nvml .Init ()
28
+ if err != nil {
29
+ log .Fatalf ("Unable to open NVML library: %v" , err )
30
+ }
28
31
if ret != nvml .SUCCESS {
29
32
log .Fatalf ("Unable to initialize NVML: %v" , nvml .ErrorString (ret ))
30
33
}
31
34
defer func () {
32
- ret := nvml .Shutdown ()
35
+ ret , err := nvml .Shutdown ()
33
36
if ret != nvml .SUCCESS {
34
37
log .Fatalf ("Unable to shutdown NVML: %v" , nvml .ErrorString (ret ))
35
38
}
39
+ if err != nil {
40
+ log .Fatalf ("Unable to close NVML library: %v" , err )
41
+ }
36
42
}()
37
43
38
44
count , ret := nvml .DeviceGetCount ()
Original file line number Diff line number Diff line change @@ -24,15 +24,21 @@ import (
24
24
)
25
25
26
26
func main () {
27
- ret := nvml .Init ()
27
+ ret , err := nvml .Init ()
28
+ if err != nil {
29
+ log .Fatalf ("Unable to open NVML library: %v" , err )
30
+ }
28
31
if ret != nvml .SUCCESS {
29
32
log .Fatalf ("Unable to initialize NVML: %v" , nvml .ErrorString (ret ))
30
33
}
31
34
defer func () {
32
- ret := nvml .Shutdown ()
35
+ ret , err := nvml .Shutdown ()
33
36
if ret != nvml .SUCCESS {
34
37
log .Fatalf ("Unable to shutdown NVML: %v" , nvml .ErrorString (ret ))
35
38
}
39
+ if err != nil {
40
+ log .Fatalf ("Unable to close NVML library: %v" , err )
41
+ }
36
42
}()
37
43
38
44
count , ret := nvml .DeviceGetCount ()
Original file line number Diff line number Diff line change 15
15
package nvml
16
16
17
17
import (
18
- "fmt"
19
-
20
18
"github.com/NVIDIA/go-nvml/pkg/dl"
21
19
)
22
20
@@ -30,45 +28,45 @@ const (
30
28
var nvml * dl.DynamicLibrary
31
29
32
30
// nvml.Init()
33
- func Init () Return {
31
+ func Init () ( Return , error ) {
34
32
lib := dl .New (nvmlLibraryName , nvmlLibraryLoadFlags )
35
33
err := lib .Open ()
36
34
if err != nil {
37
- return ERROR_LIBRARY_NOT_FOUND
35
+ return ERROR_LIBRARY_NOT_FOUND , err
38
36
}
39
37
40
38
nvml = lib
41
39
updateVersionedSymbols ()
42
40
43
- return nvmlInit ()
41
+ return nvmlInit (), nil
44
42
}
45
43
46
44
// nvml.InitWithFlags()
47
- func InitWithFlags (Flags uint32 ) Return {
45
+ func InitWithFlags (Flags uint32 ) ( Return , error ) {
48
46
lib := dl .New (nvmlLibraryName , nvmlLibraryLoadFlags )
49
47
err := lib .Open ()
50
48
if err != nil {
51
- return ERROR_LIBRARY_NOT_FOUND
49
+ return ERROR_LIBRARY_NOT_FOUND , err
52
50
}
53
51
54
52
nvml = lib
55
53
56
- return nvmlInitWithFlags (Flags )
54
+ return nvmlInitWithFlags (Flags ), nil
57
55
}
58
56
59
57
// nvml.Shutdown()
60
- func Shutdown () Return {
58
+ func Shutdown () ( Return , error ) {
61
59
ret := nvmlShutdown ()
62
60
if ret != SUCCESS {
63
- return ret
61
+ return ret , nil
64
62
}
65
63
66
64
err := nvml .Close ()
67
65
if err != nil {
68
- panic ( fmt . Sprintf ( "error closing %s: %v" , nvmlLibraryName , err ))
66
+ return ret , err
69
67
}
70
68
71
- return ret
69
+ return ret , nil
72
70
}
73
71
74
72
// Default all versioned APIs to v1 (to infer the types)
Original file line number Diff line number Diff line change @@ -19,19 +19,25 @@ import (
19
19
)
20
20
21
21
func TestInit (t * testing.T ) {
22
- ret := Init ()
22
+ ret , err := Init ()
23
+ if err != nil {
24
+ t .Errorf ("NVML open: %v" , err )
25
+ }
23
26
if ret != SUCCESS {
24
27
t .Errorf ("Init: %v" , ret )
25
28
} else {
26
29
t .Logf ("Init: %v" , ret )
27
30
}
28
31
29
- ret = Shutdown ()
32
+ ret , err = Shutdown ()
30
33
if ret != SUCCESS {
31
34
t .Errorf ("Shutdown: %v" , ret )
32
35
} else {
33
36
t .Logf ("Shutdown: %v" , ret )
34
37
}
38
+ if err != nil {
39
+ t .Errorf ("NVML close: %v" , err )
40
+ }
35
41
}
36
42
37
43
func TestSystem (t * testing.T ) {
Original file line number Diff line number Diff line change 15
15
package nvml
16
16
17
17
import (
18
- "fmt"
19
-
20
18
"github.com/NVIDIA/go-nvml/pkg/dl"
21
19
)
22
20
@@ -30,45 +28,45 @@ const (
30
28
var nvml * dl.DynamicLibrary
31
29
32
30
// nvml.Init()
33
- func Init () Return {
31
+ func Init () ( Return , error ) {
34
32
lib := dl .New (nvmlLibraryName , nvmlLibraryLoadFlags )
35
33
err := lib .Open ()
36
34
if err != nil {
37
- return ERROR_LIBRARY_NOT_FOUND
35
+ return ERROR_LIBRARY_NOT_FOUND , err
38
36
}
39
37
40
38
nvml = lib
41
39
updateVersionedSymbols ()
42
40
43
- return nvmlInit ()
41
+ return nvmlInit (), nil
44
42
}
45
43
46
44
// nvml.InitWithFlags()
47
- func InitWithFlags (Flags uint32 ) Return {
45
+ func InitWithFlags (Flags uint32 ) ( Return , error ) {
48
46
lib := dl .New (nvmlLibraryName , nvmlLibraryLoadFlags )
49
47
err := lib .Open ()
50
48
if err != nil {
51
- return ERROR_LIBRARY_NOT_FOUND
49
+ return ERROR_LIBRARY_NOT_FOUND , err
52
50
}
53
51
54
52
nvml = lib
55
53
56
- return nvmlInitWithFlags (Flags )
54
+ return nvmlInitWithFlags (Flags ), nil
57
55
}
58
56
59
57
// nvml.Shutdown()
60
- func Shutdown () Return {
58
+ func Shutdown () ( Return , error ) {
61
59
ret := nvmlShutdown ()
62
60
if ret != SUCCESS {
63
- return ret
61
+ return ret , nil
64
62
}
65
63
66
64
err := nvml .Close ()
67
65
if err != nil {
68
- panic ( fmt . Sprintf ( "error closing %s: %v" , nvmlLibraryName , err ))
66
+ return ret , err
69
67
}
70
68
71
- return ret
69
+ return ret , nil
72
70
}
73
71
74
72
// Default all versioned APIs to v1 (to infer the types)
Original file line number Diff line number Diff line change @@ -19,19 +19,25 @@ import (
19
19
)
20
20
21
21
func TestInit (t * testing.T ) {
22
- ret := Init ()
22
+ ret , err := Init ()
23
+ if err != nil {
24
+ t .Errorf ("NVML open: %v" , err )
25
+ }
23
26
if ret != SUCCESS {
24
27
t .Errorf ("Init: %v" , ret )
25
28
} else {
26
29
t .Logf ("Init: %v" , ret )
27
30
}
28
31
29
- ret = Shutdown ()
32
+ ret , err = Shutdown ()
30
33
if ret != SUCCESS {
31
34
t .Errorf ("Shutdown: %v" , ret )
32
35
} else {
33
36
t .Logf ("Shutdown: %v" , ret )
34
37
}
38
+ if err != nil {
39
+ t .Errorf ("NVML close: %v" , err )
40
+ }
35
41
}
36
42
37
43
func TestSystem (t * testing.T ) {
You can’t perform that action at this time.
0 commit comments