69be940bf6
The recent cuda variant changes uncovered a bug in ByLibrary which failed to group by common variant for GPU types.
60 lines
1.8 KiB
Go
60 lines
1.8 KiB
Go
package gpu
|
|
|
|
import (
|
|
"runtime"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestBasicGetGPUInfo(t *testing.T) {
|
|
info := GetGPUInfo()
|
|
assert.NotEmpty(t, len(info))
|
|
assert.Contains(t, "cuda rocm cpu metal", info[0].Library)
|
|
if info[0].Library != "cpu" {
|
|
assert.Greater(t, info[0].TotalMemory, uint64(0))
|
|
assert.Greater(t, info[0].FreeMemory, uint64(0))
|
|
}
|
|
}
|
|
|
|
func TestCPUMemInfo(t *testing.T) {
|
|
info, err := GetCPUMem()
|
|
require.NoError(t, err)
|
|
switch runtime.GOOS {
|
|
case "darwin":
|
|
t.Skip("CPU memory not populated on darwin")
|
|
case "linux", "windows":
|
|
assert.Greater(t, info.TotalMemory, uint64(0))
|
|
assert.Greater(t, info.FreeMemory, uint64(0))
|
|
default:
|
|
return
|
|
}
|
|
}
|
|
|
|
func TestByLibrary(t *testing.T) {
|
|
type testCase struct {
|
|
input []GpuInfo
|
|
expect int
|
|
}
|
|
|
|
testCases := map[string]*testCase{
|
|
"empty": {input: []GpuInfo{}, expect: 0},
|
|
"cpu": {input: []GpuInfo{{Library: "cpu"}}, expect: 1},
|
|
"cpu + GPU": {input: []GpuInfo{{Library: "cpu"}, {Library: "cuda"}}, expect: 2},
|
|
"cpu + 2 GPU no variant": {input: []GpuInfo{{Library: "cpu"}, {Library: "cuda"}, {Library: "cuda"}}, expect: 2},
|
|
"cpu + 2 GPU same variant": {input: []GpuInfo{{Library: "cpu"}, {Library: "cuda", Variant: "v11"}, {Library: "cuda", Variant: "v11"}}, expect: 2},
|
|
"cpu + 2 GPU diff variant": {input: []GpuInfo{{Library: "cpu"}, {Library: "cuda", Variant: "v11"}, {Library: "cuda", Variant: "v12"}}, expect: 3},
|
|
}
|
|
|
|
for k, v := range testCases {
|
|
t.Run(k, func(t *testing.T) {
|
|
resp := (GpuInfoList)(v.input).ByLibrary()
|
|
if len(resp) != v.expect {
|
|
t.Fatalf("expected length %d, got %d => %+v", v.expect, len(resp), resp)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
// TODO - add some logic to figure out card type through other means and actually verify we got back what we expected
|