Skip to content

Commit

Permalink
chore: handle undefined gpus
Browse files Browse the repository at this point in the history
  • Loading branch information
urmauur committed Feb 3, 2025
1 parent 8708dd1 commit b1386e4
Show file tree
Hide file tree
Showing 6 changed files with 33 additions and 29 deletions.
30 changes: 17 additions & 13 deletions extensions/engine-management-extension/src/node/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,10 @@ const gpuRunMode = (settings?: GpuSetting): string => {

if (!settings) return ''

return settings.vulkan === true || settings.gpus.some((gpu) => gpu.activated !== true) ? '' : 'cuda'
return settings.vulkan === true ||
settings.gpus?.some((gpu) => gpu.activated !== true)
? ''
: 'cuda'
}

/**
Expand All @@ -31,10 +34,10 @@ const os = (): string => {
return process.platform === 'win32'
? 'windows-amd64'
: process.platform === 'darwin'
? process.arch === 'arm64'
? 'mac-arm64'
: 'mac-amd64'
: 'linux-amd64'
? process.arch === 'arm64'
? 'mac-arm64'
: 'mac-amd64'
: 'linux-amd64'
}

/**
Expand All @@ -45,12 +48,14 @@ const os = (): string => {
const cudaVersion = (settings?: GpuSetting): '12-0' | '11-7' | undefined => {
const isUsingCuda =
settings?.vulkan !== true &&
settings?.gpus.some((gpu) => gpu.activated === true ? 'gpu' : 'cpu') &&
settings?.gpus?.some((gpu) => (gpu.activated === true ? 'gpu' : 'cpu')) &&
!os().includes('mac')

if (!isUsingCuda) return undefined
// return settings?.cuda?.version === '11' ? '11-7' : '12-0'
return settings.gpus.some(gpu => gpu.version.includes("12")) ? "12-0" : "11-7"
return settings.gpus?.some((gpu) => gpu.version.includes('12'))
? '12-0'
: '11-7'
}

/**
Expand All @@ -62,16 +67,15 @@ const cudaVersion = (settings?: GpuSetting): '12-0' | '11-7' | undefined => {
* Find which variant to run based on the current platform.
*/
const engineVariant = async (gpuSetting?: GpuSetting): Promise<string> => {

let engineVariant = [
os(),
gpuSetting?.vulkan
? 'vulkan'
: gpuRunMode(gpuSetting) === 'cuda'
&& // GPU mode - packaged CUDA variants of avx2 and noavx
gpuSetting.cpu.instructions.some((inst) => inst === 'avx2') || gpuSetting.cpu.instructions.some((inst) => inst === 'avx512')
? 'avx2'
: 'noavx',
: (gpuRunMode(gpuSetting) === 'cuda' && // GPU mode - packaged CUDA variants of avx2 and noavx
gpuSetting.cpu.instructions.some((inst) => inst === 'avx2')) ||
gpuSetting.cpu.instructions.some((inst) => inst === 'avx512')
? 'avx2'
: 'noavx',
gpuRunMode(gpuSetting),
cudaVersion(gpuSetting),
]
Expand Down
24 changes: 12 additions & 12 deletions extensions/yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -509,61 +509,61 @@ __metadata:

"@janhq/core@file:../../core/package.tgz::locator=%40janhq%2Fassistant-extension%40workspace%3Aassistant-extension":
version: 0.1.10
resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=8a4445&locator=%40janhq%2Fassistant-extension%40workspace%3Aassistant-extension"
resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=2f3de8&locator=%40janhq%2Fassistant-extension%40workspace%3Aassistant-extension"
dependencies:
rxjs: "npm:^7.8.1"
ulidx: "npm:^2.3.0"
checksum: 10c0/74cb4d1126dd504b81b31a3a1da89b1f332e327e980a99d645a9088cba0ccd5fafdb94e1c31d40991cbfc7e18615cf6644f4882ff8df29293ea6adc6a2977d65
checksum: 10c0/80086e7244f3d221b319f897fccf50ef1786e1d38c74cc2a0d8de22d2d2f0e5365bb904d6dd2c25ac4cf5f1cf9719a096fc167db95864e525aa00f5b931ca9b8
languageName: node
linkType: hard

"@janhq/core@file:../../core/package.tgz::locator=%40janhq%2Fconversational-extension%40workspace%3Aconversational-extension":
version: 0.1.10
resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=8a4445&locator=%40janhq%2Fconversational-extension%40workspace%3Aconversational-extension"
resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=2f3de8&locator=%40janhq%2Fconversational-extension%40workspace%3Aconversational-extension"
dependencies:
rxjs: "npm:^7.8.1"
ulidx: "npm:^2.3.0"
checksum: 10c0/74cb4d1126dd504b81b31a3a1da89b1f332e327e980a99d645a9088cba0ccd5fafdb94e1c31d40991cbfc7e18615cf6644f4882ff8df29293ea6adc6a2977d65
checksum: 10c0/80086e7244f3d221b319f897fccf50ef1786e1d38c74cc2a0d8de22d2d2f0e5365bb904d6dd2c25ac4cf5f1cf9719a096fc167db95864e525aa00f5b931ca9b8
languageName: node
linkType: hard

"@janhq/core@file:../../core/package.tgz::locator=%40janhq%2Fengine-management-extension%40workspace%3Aengine-management-extension":
version: 0.1.10
resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=8a4445&locator=%40janhq%2Fengine-management-extension%40workspace%3Aengine-management-extension"
resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=2f3de8&locator=%40janhq%2Fengine-management-extension%40workspace%3Aengine-management-extension"
dependencies:
rxjs: "npm:^7.8.1"
ulidx: "npm:^2.3.0"
checksum: 10c0/74cb4d1126dd504b81b31a3a1da89b1f332e327e980a99d645a9088cba0ccd5fafdb94e1c31d40991cbfc7e18615cf6644f4882ff8df29293ea6adc6a2977d65
checksum: 10c0/80086e7244f3d221b319f897fccf50ef1786e1d38c74cc2a0d8de22d2d2f0e5365bb904d6dd2c25ac4cf5f1cf9719a096fc167db95864e525aa00f5b931ca9b8
languageName: node
linkType: hard

"@janhq/core@file:../../core/package.tgz::locator=%40janhq%2Fhardware-management-extension%40workspace%3Ahardware-management-extension":
version: 0.1.10
resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=8a4445&locator=%40janhq%2Fhardware-management-extension%40workspace%3Ahardware-management-extension"
resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=2f3de8&locator=%40janhq%2Fhardware-management-extension%40workspace%3Ahardware-management-extension"
dependencies:
rxjs: "npm:^7.8.1"
ulidx: "npm:^2.3.0"
checksum: 10c0/74cb4d1126dd504b81b31a3a1da89b1f332e327e980a99d645a9088cba0ccd5fafdb94e1c31d40991cbfc7e18615cf6644f4882ff8df29293ea6adc6a2977d65
checksum: 10c0/80086e7244f3d221b319f897fccf50ef1786e1d38c74cc2a0d8de22d2d2f0e5365bb904d6dd2c25ac4cf5f1cf9719a096fc167db95864e525aa00f5b931ca9b8
languageName: node
linkType: hard

"@janhq/core@file:../../core/package.tgz::locator=%40janhq%2Finference-cortex-extension%40workspace%3Ainference-cortex-extension":
version: 0.1.10
resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=8a4445&locator=%40janhq%2Finference-cortex-extension%40workspace%3Ainference-cortex-extension"
resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=2f3de8&locator=%40janhq%2Finference-cortex-extension%40workspace%3Ainference-cortex-extension"
dependencies:
rxjs: "npm:^7.8.1"
ulidx: "npm:^2.3.0"
checksum: 10c0/74cb4d1126dd504b81b31a3a1da89b1f332e327e980a99d645a9088cba0ccd5fafdb94e1c31d40991cbfc7e18615cf6644f4882ff8df29293ea6adc6a2977d65
checksum: 10c0/80086e7244f3d221b319f897fccf50ef1786e1d38c74cc2a0d8de22d2d2f0e5365bb904d6dd2c25ac4cf5f1cf9719a096fc167db95864e525aa00f5b931ca9b8
languageName: node
linkType: hard

"@janhq/core@file:../../core/package.tgz::locator=%40janhq%2Fmodel-extension%40workspace%3Amodel-extension":
version: 0.1.10
resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=8a4445&locator=%40janhq%2Fmodel-extension%40workspace%3Amodel-extension"
resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=2f3de8&locator=%40janhq%2Fmodel-extension%40workspace%3Amodel-extension"
dependencies:
rxjs: "npm:^7.8.1"
ulidx: "npm:^2.3.0"
checksum: 10c0/74cb4d1126dd504b81b31a3a1da89b1f332e327e980a99d645a9088cba0ccd5fafdb94e1c31d40991cbfc7e18615cf6644f4882ff8df29293ea6adc6a2977d65
checksum: 10c0/80086e7244f3d221b319f897fccf50ef1786e1d38c74cc2a0d8de22d2d2f0e5365bb904d6dd2c25ac4cf5f1cf9719a096fc167db95864e525aa00f5b931ca9b8
languageName: node
linkType: hard

Expand Down
2 changes: 1 addition & 1 deletion web/hooks/useSettings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ export const useSettings = () => {
settings.vulkan = vulkan
// GPU enabled, set run_mode to 'gpu'
if (settings.vulkan === true) {
settings?.gpus.some((gpu: { activated: boolean }) =>
settings?.gpus?.some((gpu: { activated: boolean }) =>
gpu.activated === true ? 'gpu' : 'cpu'
)
}
Expand Down
2 changes: 1 addition & 1 deletion web/screens/Hub/ModelList/ModelHeader/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ const ModelItemHeader = ({ model, onClick, open }: Props) => {

// Default nvidia returns vram in MB, need to convert to bytes to match the unit of totalRamW
let ram = nvidiaTotalVram * 1024 * 1024
if (ram === 0 || settings?.gpus.some((gpu) => gpu.activated !== true)) {
if (ram === 0 || settings?.gpus?.some((gpu) => gpu.activated !== true)) {
ram = totalRam
}
const serverEnabled = useAtomValue(serverEnabledAtom)
Expand Down
2 changes: 1 addition & 1 deletion web/screens/Settings/Advanced/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@ const Advanced = ({ setSubdir }: { setSubdir: (subdir: string) => void }) => {
const setUseGpuIfPossible = async () => {
const settings = await readSettings()
setGpuEnabled(
settings.gpus.some(
settings.gpus?.some(
(gpu: { activated: boolean }) => gpu.activated === true
) === 'gpu' && settings.gpus?.length > 0
)
Expand Down
2 changes: 1 addition & 1 deletion web/screens/Settings/Hardware/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ const Hardware = () => {
// Append GPUs from the previous state that are not in the hardware.gpus
// This preserves user-reordered GPUs that aren't present in the new data
const remainingGpus = prevGpus.filter(
(prevGpu) => !hardware.gpus.some((gpu) => gpu.uuid === prevGpu.uuid)
(prevGpu) => !hardware.gpus?.some((gpu) => gpu.uuid === prevGpu.uuid)
)

return [...updatedGpus, ...remainingGpus]
Expand Down

0 comments on commit b1386e4

Please sign in to comment.