/
cuda.go
55 lines (46 loc) · 1.2 KB
/
cuda.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package cuda
// #include <cuda.h>
// #include <stdlib.h>
import "C"
/*********************************
** Initialization
*********************************/
func Init(flags uint32) int {
return int(C.cuInit(C.uint(flags)))
}
/*********************************
** Driver Version Query
*********************************/
func DriverGetVersion() (driverVersion, err int) {
var cDriverVersion, cErr C.int
cErr = C.int(C.cuDriverGetVersion(&cDriverVersion))
driverVersion = int(cDriverVersion)
err = int(cErr)
return
}
/************************************
** Device management
***********************************/
func DeviceGet(ordinal int) (device, err int) {
var cDevice C.CUdevice
var cErr C.int
cErr = C.int(C.cuDeviceGet(&cDevice, C.int(ordinal)))
device = int(cDevice)
err = int(cErr)
return
}
func DeviceGetCount() (count, err int) {
var cCount, cErr C.int
cErr = C.int(C.cuDeviceGetCount(&cCount))
count = int(cCount)
err = int(cErr)
return
}
func DeviceComputeCapability(dev int) (major, minor, err int) {
var cErr, cMajor, cMinor C.int
cErr = C.int(C.cuDeviceComputeCapability(&cMajor, &cMinor, C.CUdevice(dev)))
major = int(cMajor)
minor = int(cMinor)
err = int(cErr)
return
}