🐛fix/update vulkan active syntax (#5869)
This commit is contained in:
parent
3e30c61fb0
commit
fd26270e78
@ -1,6 +1,14 @@
|
|||||||
import { describe, it, expect, vi, beforeEach } from 'vitest'
|
import { describe, it, expect, vi, beforeEach } from 'vitest'
|
||||||
import { renderHook, act } from '@testing-library/react'
|
import { renderHook, act } from '@testing-library/react'
|
||||||
import { useHardware, HardwareData, SystemUsage, CPU, GPU, OS, RAM } from '../useHardware'
|
import {
|
||||||
|
useHardware,
|
||||||
|
HardwareData,
|
||||||
|
SystemUsage,
|
||||||
|
CPU,
|
||||||
|
GPU,
|
||||||
|
OS,
|
||||||
|
RAM,
|
||||||
|
} from '../useHardware'
|
||||||
|
|
||||||
// Mock dependencies
|
// Mock dependencies
|
||||||
vi.mock('@/constants/localStorage', () => ({
|
vi.mock('@/constants/localStorage', () => ({
|
||||||
@ -328,7 +336,13 @@ describe('useHardware', () => {
|
|||||||
const { result } = renderHook(() => useHardware())
|
const { result } = renderHook(() => useHardware())
|
||||||
|
|
||||||
const initialData: HardwareData = {
|
const initialData: HardwareData = {
|
||||||
cpu: { arch: 'x86_64', core_count: 4, extensions: [], name: 'CPU', usage: 0 },
|
cpu: {
|
||||||
|
arch: 'x86_64',
|
||||||
|
core_count: 4,
|
||||||
|
extensions: [],
|
||||||
|
name: 'CPU',
|
||||||
|
usage: 0,
|
||||||
|
},
|
||||||
gpus: [
|
gpus: [
|
||||||
{
|
{
|
||||||
name: 'GPU 1',
|
name: 'GPU 1',
|
||||||
@ -338,7 +352,12 @@ describe('useHardware', () => {
|
|||||||
driver_version: '1.0',
|
driver_version: '1.0',
|
||||||
activated: true,
|
activated: true,
|
||||||
nvidia_info: { index: 0, compute_capability: '8.0' },
|
nvidia_info: { index: 0, compute_capability: '8.0' },
|
||||||
vulkan_info: { index: 0, device_id: 1, device_type: 'discrete', api_version: '1.0' },
|
vulkan_info: {
|
||||||
|
index: 0,
|
||||||
|
device_id: 1,
|
||||||
|
device_type: 'discrete',
|
||||||
|
api_version: '1.0',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'GPU 2',
|
name: 'GPU 2',
|
||||||
@ -348,7 +367,12 @@ describe('useHardware', () => {
|
|||||||
driver_version: '2.0',
|
driver_version: '2.0',
|
||||||
activated: false,
|
activated: false,
|
||||||
nvidia_info: { index: 1, compute_capability: '7.0' },
|
nvidia_info: { index: 1, compute_capability: '7.0' },
|
||||||
vulkan_info: { index: 1, device_id: 2, device_type: 'discrete', api_version: '1.0' },
|
vulkan_info: {
|
||||||
|
index: 1,
|
||||||
|
device_id: 2,
|
||||||
|
device_type: 'discrete',
|
||||||
|
api_version: '1.0',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
os_type: 'windows',
|
os_type: 'windows',
|
||||||
@ -384,7 +408,13 @@ describe('useHardware', () => {
|
|||||||
const { result } = renderHook(() => useHardware())
|
const { result } = renderHook(() => useHardware())
|
||||||
|
|
||||||
const initialData: HardwareData = {
|
const initialData: HardwareData = {
|
||||||
cpu: { arch: 'x86_64', core_count: 4, extensions: [], name: 'CPU', usage: 0 },
|
cpu: {
|
||||||
|
arch: 'x86_64',
|
||||||
|
core_count: 4,
|
||||||
|
extensions: [],
|
||||||
|
name: 'CPU',
|
||||||
|
usage: 0,
|
||||||
|
},
|
||||||
gpus: [
|
gpus: [
|
||||||
{
|
{
|
||||||
name: 'GPU 1',
|
name: 'GPU 1',
|
||||||
@ -394,7 +424,12 @@ describe('useHardware', () => {
|
|||||||
driver_version: '1.0',
|
driver_version: '1.0',
|
||||||
activated: true,
|
activated: true,
|
||||||
nvidia_info: { index: 0, compute_capability: '8.0' },
|
nvidia_info: { index: 0, compute_capability: '8.0' },
|
||||||
vulkan_info: { index: 0, device_id: 1, device_type: 'discrete', api_version: '1.0' },
|
vulkan_info: {
|
||||||
|
index: 0,
|
||||||
|
device_id: 1,
|
||||||
|
device_type: 'discrete',
|
||||||
|
api_version: '1.0',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
os_type: 'windows',
|
os_type: 'windows',
|
||||||
@ -417,7 +452,12 @@ describe('useHardware', () => {
|
|||||||
uuid: 'gpu-new',
|
uuid: 'gpu-new',
|
||||||
driver_version: '3.0',
|
driver_version: '3.0',
|
||||||
nvidia_info: { index: 1, compute_capability: '7.0' },
|
nvidia_info: { index: 1, compute_capability: '7.0' },
|
||||||
vulkan_info: { index: 1, device_id: 3, device_type: 'discrete', api_version: '1.0' },
|
vulkan_info: {
|
||||||
|
index: 1,
|
||||||
|
device_id: 3,
|
||||||
|
device_type: 'discrete',
|
||||||
|
api_version: '1.0',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
@ -451,7 +491,13 @@ describe('useHardware', () => {
|
|||||||
expect(result.current.hardwareData.gpus.length).toBe(0)
|
expect(result.current.hardwareData.gpus.length).toBe(0)
|
||||||
|
|
||||||
const hardwareData: HardwareData = {
|
const hardwareData: HardwareData = {
|
||||||
cpu: { arch: 'x86_64', core_count: 4, extensions: [], name: 'CPU', usage: 0 },
|
cpu: {
|
||||||
|
arch: 'x86_64',
|
||||||
|
core_count: 4,
|
||||||
|
extensions: [],
|
||||||
|
name: 'CPU',
|
||||||
|
usage: 0,
|
||||||
|
},
|
||||||
gpus: [
|
gpus: [
|
||||||
{
|
{
|
||||||
name: 'GPU 1',
|
name: 'GPU 1',
|
||||||
@ -460,7 +506,12 @@ describe('useHardware', () => {
|
|||||||
uuid: 'gpu-1',
|
uuid: 'gpu-1',
|
||||||
driver_version: '1.0',
|
driver_version: '1.0',
|
||||||
nvidia_info: { index: 0, compute_capability: '8.0' },
|
nvidia_info: { index: 0, compute_capability: '8.0' },
|
||||||
vulkan_info: { index: 0, device_id: 1, device_type: 'discrete', api_version: '1.0' },
|
vulkan_info: {
|
||||||
|
index: 0,
|
||||||
|
device_id: 1,
|
||||||
|
device_type: 'discrete',
|
||||||
|
api_version: '1.0',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
os_type: 'windows',
|
os_type: 'windows',
|
||||||
@ -489,7 +540,12 @@ describe('useHardware', () => {
|
|||||||
driver_version: '1.0',
|
driver_version: '1.0',
|
||||||
activated: false,
|
activated: false,
|
||||||
nvidia_info: { index: 0, compute_capability: '8.0' },
|
nvidia_info: { index: 0, compute_capability: '8.0' },
|
||||||
vulkan_info: { index: 0, device_id: 1, device_type: 'discrete', api_version: '1.0' },
|
vulkan_info: {
|
||||||
|
index: 0,
|
||||||
|
device_id: 1,
|
||||||
|
device_type: 'discrete',
|
||||||
|
api_version: '1.0',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'GPU 2',
|
name: 'GPU 2',
|
||||||
@ -499,7 +555,12 @@ describe('useHardware', () => {
|
|||||||
driver_version: '2.0',
|
driver_version: '2.0',
|
||||||
activated: false,
|
activated: false,
|
||||||
nvidia_info: { index: 1, compute_capability: '7.0' },
|
nvidia_info: { index: 1, compute_capability: '7.0' },
|
||||||
vulkan_info: { index: 1, device_id: 2, device_type: 'discrete', api_version: '1.0' },
|
vulkan_info: {
|
||||||
|
index: 1,
|
||||||
|
device_id: 2,
|
||||||
|
device_type: 'discrete',
|
||||||
|
api_version: '1.0',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -534,7 +595,12 @@ describe('useHardware', () => {
|
|||||||
driver_version: '1.0',
|
driver_version: '1.0',
|
||||||
activated: false,
|
activated: false,
|
||||||
nvidia_info: { index: 0, compute_capability: '8.0' },
|
nvidia_info: { index: 0, compute_capability: '8.0' },
|
||||||
vulkan_info: { index: 0, device_id: 1, device_type: 'discrete', api_version: '1.0' },
|
vulkan_info: {
|
||||||
|
index: 0,
|
||||||
|
device_id: 1,
|
||||||
|
device_type: 'discrete',
|
||||||
|
api_version: '1.0',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -568,7 +634,12 @@ describe('useHardware', () => {
|
|||||||
driver_version: '1.0',
|
driver_version: '1.0',
|
||||||
activated: false,
|
activated: false,
|
||||||
nvidia_info: { index: 0, compute_capability: '8.0' },
|
nvidia_info: { index: 0, compute_capability: '8.0' },
|
||||||
vulkan_info: { index: 0, device_id: 1, device_type: 'discrete', api_version: '1.0' },
|
vulkan_info: {
|
||||||
|
index: 0,
|
||||||
|
device_id: 1,
|
||||||
|
device_type: 'discrete',
|
||||||
|
api_version: '1.0',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'GPU 2',
|
name: 'GPU 2',
|
||||||
@ -578,7 +649,12 @@ describe('useHardware', () => {
|
|||||||
driver_version: '2.0',
|
driver_version: '2.0',
|
||||||
activated: false,
|
activated: false,
|
||||||
nvidia_info: { index: 1, compute_capability: '7.0' },
|
nvidia_info: { index: 1, compute_capability: '7.0' },
|
||||||
vulkan_info: { index: 1, device_id: 2, device_type: 'discrete', api_version: '1.0' },
|
vulkan_info: {
|
||||||
|
index: 1,
|
||||||
|
device_id: 2,
|
||||||
|
device_type: 'discrete',
|
||||||
|
api_version: '1.0',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'GPU 3',
|
name: 'GPU 3',
|
||||||
@ -588,7 +664,12 @@ describe('useHardware', () => {
|
|||||||
driver_version: '3.0',
|
driver_version: '3.0',
|
||||||
activated: false,
|
activated: false,
|
||||||
nvidia_info: { index: 2, compute_capability: '6.0' },
|
nvidia_info: { index: 2, compute_capability: '6.0' },
|
||||||
vulkan_info: { index: 2, device_id: 3, device_type: 'discrete', api_version: '1.0' },
|
vulkan_info: {
|
||||||
|
index: 2,
|
||||||
|
device_id: 3,
|
||||||
|
device_type: 'discrete',
|
||||||
|
api_version: '1.0',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -617,7 +698,12 @@ describe('useHardware', () => {
|
|||||||
driver_version: '1.0',
|
driver_version: '1.0',
|
||||||
activated: false,
|
activated: false,
|
||||||
nvidia_info: { index: 0, compute_capability: '8.0' },
|
nvidia_info: { index: 0, compute_capability: '8.0' },
|
||||||
vulkan_info: { index: 0, device_id: 1, device_type: 'discrete', api_version: '1.0' },
|
vulkan_info: {
|
||||||
|
index: 0,
|
||||||
|
device_id: 1,
|
||||||
|
device_type: 'discrete',
|
||||||
|
api_version: '1.0',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -654,7 +740,12 @@ describe('useHardware', () => {
|
|||||||
driver_version: '1.0',
|
driver_version: '1.0',
|
||||||
activated: false,
|
activated: false,
|
||||||
nvidia_info: { index: 0, compute_capability: '8.0' },
|
nvidia_info: { index: 0, compute_capability: '8.0' },
|
||||||
vulkan_info: { index: 0, device_id: 1, device_type: 'discrete', api_version: '1.0' },
|
vulkan_info: {
|
||||||
|
index: 0,
|
||||||
|
device_id: 1,
|
||||||
|
device_type: 'discrete',
|
||||||
|
api_version: '1.0',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -678,7 +769,12 @@ describe('useHardware', () => {
|
|||||||
driver_version: '1.0',
|
driver_version: '1.0',
|
||||||
activated: true,
|
activated: true,
|
||||||
nvidia_info: { index: 0, compute_capability: '8.0' },
|
nvidia_info: { index: 0, compute_capability: '8.0' },
|
||||||
vulkan_info: { index: 0, device_id: 1, device_type: 'discrete', api_version: '1.0' },
|
vulkan_info: {
|
||||||
|
index: 0,
|
||||||
|
device_id: 1,
|
||||||
|
device_type: 'discrete',
|
||||||
|
api_version: '1.0',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -702,7 +798,12 @@ describe('useHardware', () => {
|
|||||||
driver_version: '1.0',
|
driver_version: '1.0',
|
||||||
activated: true,
|
activated: true,
|
||||||
nvidia_info: { index: 0, compute_capability: '8.0' },
|
nvidia_info: { index: 0, compute_capability: '8.0' },
|
||||||
vulkan_info: { index: 1, device_id: 2, device_type: 'discrete', api_version: '1.0' },
|
vulkan_info: {
|
||||||
|
index: 1,
|
||||||
|
device_id: 2,
|
||||||
|
device_type: 'discrete',
|
||||||
|
api_version: '1.0',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -711,7 +812,7 @@ describe('useHardware', () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
const deviceString = result.current.getActivatedDeviceString('vulkan')
|
const deviceString = result.current.getActivatedDeviceString('vulkan')
|
||||||
expect(deviceString).toBe('vulkan:1')
|
expect(deviceString).toBe('Vulkan1')
|
||||||
})
|
})
|
||||||
|
|
||||||
it('should handle mixed backend correctly', () => {
|
it('should handle mixed backend correctly', () => {
|
||||||
@ -726,7 +827,12 @@ describe('useHardware', () => {
|
|||||||
driver_version: '1.0',
|
driver_version: '1.0',
|
||||||
activated: true,
|
activated: true,
|
||||||
nvidia_info: { index: 0, compute_capability: '8.0' },
|
nvidia_info: { index: 0, compute_capability: '8.0' },
|
||||||
vulkan_info: { index: 0, device_id: 1, device_type: 'discrete', api_version: '1.0' },
|
vulkan_info: {
|
||||||
|
index: 0,
|
||||||
|
device_id: 1,
|
||||||
|
device_type: 'discrete',
|
||||||
|
api_version: '1.0',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'AMD GPU',
|
name: 'AMD GPU',
|
||||||
@ -737,7 +843,12 @@ describe('useHardware', () => {
|
|||||||
activated: true,
|
activated: true,
|
||||||
// AMD GPU shouldn't have nvidia_info, just vulkan_info
|
// AMD GPU shouldn't have nvidia_info, just vulkan_info
|
||||||
nvidia_info: { index: 1, compute_capability: '7.0' },
|
nvidia_info: { index: 1, compute_capability: '7.0' },
|
||||||
vulkan_info: { index: 1, device_id: 2, device_type: 'discrete', api_version: '1.0' },
|
vulkan_info: {
|
||||||
|
index: 1,
|
||||||
|
device_id: 2,
|
||||||
|
device_type: 'discrete',
|
||||||
|
api_version: '1.0',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -747,7 +858,8 @@ describe('useHardware', () => {
|
|||||||
|
|
||||||
// Based on the implementation, both GPUs will use CUDA since they both have nvidia_info
|
// Based on the implementation, both GPUs will use CUDA since they both have nvidia_info
|
||||||
// The test should match the actual behavior
|
// The test should match the actual behavior
|
||||||
const deviceString = result.current.getActivatedDeviceString('cuda+vulkan')
|
const deviceString =
|
||||||
|
result.current.getActivatedDeviceString('cuda+vulkan')
|
||||||
expect(deviceString).toBe('cuda:0,cuda:1')
|
expect(deviceString).toBe('cuda:0,cuda:1')
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -763,7 +875,12 @@ describe('useHardware', () => {
|
|||||||
driver_version: '1.0',
|
driver_version: '1.0',
|
||||||
activated: true,
|
activated: true,
|
||||||
nvidia_info: { index: 0, compute_capability: '8.0' },
|
nvidia_info: { index: 0, compute_capability: '8.0' },
|
||||||
vulkan_info: { index: 0, device_id: 1, device_type: 'discrete', api_version: '1.0' },
|
vulkan_info: {
|
||||||
|
index: 0,
|
||||||
|
device_id: 1,
|
||||||
|
device_type: 'discrete',
|
||||||
|
api_version: '1.0',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'GPU 2',
|
name: 'GPU 2',
|
||||||
@ -773,7 +890,12 @@ describe('useHardware', () => {
|
|||||||
driver_version: '1.0',
|
driver_version: '1.0',
|
||||||
activated: true,
|
activated: true,
|
||||||
nvidia_info: { index: 1, compute_capability: '8.0' },
|
nvidia_info: { index: 1, compute_capability: '8.0' },
|
||||||
vulkan_info: { index: 1, device_id: 2, device_type: 'discrete', api_version: '1.0' },
|
vulkan_info: {
|
||||||
|
index: 1,
|
||||||
|
device_id: 2,
|
||||||
|
device_type: 'discrete',
|
||||||
|
api_version: '1.0',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -799,7 +921,12 @@ describe('useHardware', () => {
|
|||||||
driver_version: '1.0',
|
driver_version: '1.0',
|
||||||
activated: false,
|
activated: false,
|
||||||
nvidia_info: { index: 0, compute_capability: '8.0' },
|
nvidia_info: { index: 0, compute_capability: '8.0' },
|
||||||
vulkan_info: { index: 0, device_id: 1, device_type: 'discrete', api_version: '1.0' },
|
vulkan_info: {
|
||||||
|
index: 0,
|
||||||
|
device_id: 1,
|
||||||
|
device_type: 'discrete',
|
||||||
|
api_version: '1.0',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'GPU 2',
|
name: 'GPU 2',
|
||||||
@ -809,7 +936,12 @@ describe('useHardware', () => {
|
|||||||
driver_version: '2.0',
|
driver_version: '2.0',
|
||||||
activated: false,
|
activated: false,
|
||||||
nvidia_info: { index: 1, compute_capability: '7.0' },
|
nvidia_info: { index: 1, compute_capability: '7.0' },
|
||||||
vulkan_info: { index: 1, device_id: 2, device_type: 'discrete', api_version: '1.0' },
|
vulkan_info: {
|
||||||
|
index: 1,
|
||||||
|
device_id: 2,
|
||||||
|
device_type: 'discrete',
|
||||||
|
api_version: '1.0',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -818,7 +950,7 @@ describe('useHardware', () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
act(() => {
|
act(() => {
|
||||||
result.current.updateGPUActivationFromDeviceString('cuda:0,vulkan:1')
|
result.current.updateGPUActivationFromDeviceString('cuda:0,Vulkan1')
|
||||||
})
|
})
|
||||||
|
|
||||||
expect(result.current.hardwareData.gpus[0].activated).toBe(true)
|
expect(result.current.hardwareData.gpus[0].activated).toBe(true)
|
||||||
@ -837,7 +969,12 @@ describe('useHardware', () => {
|
|||||||
driver_version: '1.0',
|
driver_version: '1.0',
|
||||||
activated: true,
|
activated: true,
|
||||||
nvidia_info: { index: 0, compute_capability: '8.0' },
|
nvidia_info: { index: 0, compute_capability: '8.0' },
|
||||||
vulkan_info: { index: 0, device_id: 1, device_type: 'discrete', api_version: '1.0' },
|
vulkan_info: {
|
||||||
|
index: 0,
|
||||||
|
device_id: 1,
|
||||||
|
device_type: 'discrete',
|
||||||
|
api_version: '1.0',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -864,7 +1001,12 @@ describe('useHardware', () => {
|
|||||||
driver_version: '1.0',
|
driver_version: '1.0',
|
||||||
activated: false,
|
activated: false,
|
||||||
nvidia_info: { index: 0, compute_capability: '8.0' },
|
nvidia_info: { index: 0, compute_capability: '8.0' },
|
||||||
vulkan_info: { index: 0, device_id: 1, device_type: 'discrete', api_version: '1.0' },
|
vulkan_info: {
|
||||||
|
index: 0,
|
||||||
|
device_id: 1,
|
||||||
|
device_type: 'discrete',
|
||||||
|
api_version: '1.0',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -893,7 +1035,12 @@ describe('useHardware', () => {
|
|||||||
driver_version: '1.0',
|
driver_version: '1.0',
|
||||||
activated: false,
|
activated: false,
|
||||||
nvidia_info: { index: 0, compute_capability: '8.0' },
|
nvidia_info: { index: 0, compute_capability: '8.0' },
|
||||||
vulkan_info: { index: 0, device_id: 1, device_type: 'discrete', api_version: '1.0' },
|
vulkan_info: {
|
||||||
|
index: 0,
|
||||||
|
device_id: 1,
|
||||||
|
device_type: 'discrete',
|
||||||
|
api_version: '1.0',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -923,7 +1070,12 @@ describe('useHardware', () => {
|
|||||||
driver_version: '1.0',
|
driver_version: '1.0',
|
||||||
activated: false,
|
activated: false,
|
||||||
nvidia_info: { index: 0, compute_capability: '8.0' },
|
nvidia_info: { index: 0, compute_capability: '8.0' },
|
||||||
vulkan_info: { index: 0, device_id: 1, device_type: 'discrete', api_version: '1.0' },
|
vulkan_info: {
|
||||||
|
index: 0,
|
||||||
|
device_id: 1,
|
||||||
|
device_type: 'discrete',
|
||||||
|
api_version: '1.0',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -938,12 +1090,16 @@ describe('useHardware', () => {
|
|||||||
await act(async () => {
|
await act(async () => {
|
||||||
await result.current.toggleGPUActivation(5)
|
await result.current.toggleGPUActivation(5)
|
||||||
})
|
})
|
||||||
|
|
||||||
expect(result.current.hardwareData.gpus[0].activated).toBe(originalState)
|
expect(result.current.hardwareData.gpus[0].activated).toBe(
|
||||||
|
originalState
|
||||||
|
)
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
// If it throws an error due to index bounds, that's expected behavior
|
// If it throws an error due to index bounds, that's expected behavior
|
||||||
expect(result.current.hardwareData.gpus[0].activated).toBe(originalState)
|
expect(result.current.hardwareData.gpus[0].activated).toBe(
|
||||||
|
originalState
|
||||||
|
)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|||||||
@ -51,6 +51,8 @@ export interface HardwareData {
|
|||||||
os_type: string
|
os_type: string
|
||||||
os_name: string
|
os_name: string
|
||||||
total_memory: number
|
total_memory: number
|
||||||
|
os?: OS
|
||||||
|
ram?: RAM
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface SystemUsage {
|
export interface SystemUsage {
|
||||||
@ -364,20 +366,20 @@ export const useHardware = create<HardwareStore>()(
|
|||||||
if (gpu.nvidia_info) {
|
if (gpu.nvidia_info) {
|
||||||
return `cuda:${gpu.nvidia_info.index}`
|
return `cuda:${gpu.nvidia_info.index}`
|
||||||
} else if (gpu.vulkan_info) {
|
} else if (gpu.vulkan_info) {
|
||||||
return `vulkan:${gpu.vulkan_info.index}`
|
return `Vulkan${gpu.vulkan_info.index}`
|
||||||
}
|
}
|
||||||
} else if (isCudaBackend && gpu.nvidia_info) {
|
} else if (isCudaBackend && gpu.nvidia_info) {
|
||||||
// CUDA backend - only use CUDA-compatible GPUs
|
// CUDA backend - only use CUDA-compatible GPUs
|
||||||
return `cuda:${gpu.nvidia_info.index}`
|
return `cuda:${gpu.nvidia_info.index}`
|
||||||
} else if (isVulkanBackend && gpu.vulkan_info) {
|
} else if (isVulkanBackend && gpu.vulkan_info) {
|
||||||
// Vulkan backend - only use Vulkan-compatible GPUs
|
// Vulkan backend - only use Vulkan-compatible GPUs
|
||||||
return `vulkan:${gpu.vulkan_info.index}`
|
return `Vulkan${gpu.vulkan_info.index}`
|
||||||
} else if (!backendType) {
|
} else if (!backendType) {
|
||||||
// No backend specified, use GPU's preferred type
|
// No backend specified, use GPU's preferred type
|
||||||
if (gpu.nvidia_info) {
|
if (gpu.nvidia_info) {
|
||||||
return `cuda:${gpu.nvidia_info.index}`
|
return `cuda:${gpu.nvidia_info.index}`
|
||||||
} else if (gpu.vulkan_info) {
|
} else if (gpu.vulkan_info) {
|
||||||
return `vulkan:${gpu.vulkan_info.index}`
|
return `Vulkan${gpu.vulkan_info.index}`
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null
|
return null
|
||||||
@ -398,11 +400,19 @@ export const useHardware = create<HardwareStore>()(
|
|||||||
.map((device) => device.trim())
|
.map((device) => device.trim())
|
||||||
.filter((device) => device.length > 0)
|
.filter((device) => device.length > 0)
|
||||||
.map((device) => {
|
.map((device) => {
|
||||||
const match = device.match(/^(cuda|vulkan):(\d+)$/)
|
// Handle both formats: "cuda:0" and "Vulkan1"
|
||||||
if (match) {
|
const cudaMatch = device.match(/^cuda:(\d+)$/)
|
||||||
|
const vulkanMatch = device.match(/^Vulkan(\d+)$/)
|
||||||
|
|
||||||
|
if (cudaMatch) {
|
||||||
return {
|
return {
|
||||||
type: match[1] as 'cuda' | 'vulkan',
|
type: 'cuda' as const,
|
||||||
index: parseInt(match[2]),
|
index: parseInt(cudaMatch[1]),
|
||||||
|
}
|
||||||
|
} else if (vulkanMatch) {
|
||||||
|
return {
|
||||||
|
type: 'vulkan' as const,
|
||||||
|
index: parseInt(vulkanMatch[1]),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null
|
return null
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user