123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- 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
|