chore: shared cuda dependencies

This commit is contained in:
Louis 2024-10-28 16:36:58 +07:00
parent 3643c8866e
commit 2c11caf87e
No known key found for this signature in database
GPG Key ID: 44FA9F4D33C37DE2
7 changed files with 36 additions and 25 deletions

View File

@ -1 +1 @@
oxlint --fix || npm run lint --fix npx oxlint@latest --fix

View File

@ -18,7 +18,8 @@
"docs/**/*", "docs/**/*",
"scripts/**/*", "scripts/**/*",
"icons/**/*", "icons/**/*",
"themes" "themes",
"shared"
], ],
"asarUnpack": [ "asarUnpack": [
"pre-install", "pre-install",
@ -26,7 +27,8 @@
"docs", "docs",
"scripts", "scripts",
"icons", "icons",
"themes" "themes",
"shared"
], ],
"publish": [ "publish": [
{ {

0
electron/shared/.gitkeep Normal file
View File

View File

@ -1,5 +1,6 @@
@echo off @echo off
set BIN_PATH=./bin set BIN_PATH=./bin
set SHARED_PATH=./../../electron/shared
set /p CORTEX_VERSION=<./bin/version.txt set /p CORTEX_VERSION=<./bin/version.txt
@REM Download cortex.llamacpp binaries @REM Download cortex.llamacpp binaries
@ -18,8 +19,8 @@ call .\node_modules\.bin\download %DOWNLOAD_URL%-avx.tar.gz -e --strip 1 -o %BIN
call .\node_modules\.bin\download %DOWNLOAD_URL%-avx2.tar.gz -e --strip 1 -o %BIN_PATH%/avx2/engines/cortex.llamacpp call .\node_modules\.bin\download %DOWNLOAD_URL%-avx2.tar.gz -e --strip 1 -o %BIN_PATH%/avx2/engines/cortex.llamacpp
call .\node_modules\.bin\download %DOWNLOAD_URL%-avx512.tar.gz -e --strip 1 -o %BIN_PATH%/avx512/engines/cortex.llamacpp call .\node_modules\.bin\download %DOWNLOAD_URL%-avx512.tar.gz -e --strip 1 -o %BIN_PATH%/avx512/engines/cortex.llamacpp
call .\node_modules\.bin\download %DOWNLOAD_URL%-vulkan.tar.gz -e --strip 1 -o %BIN_PATH%/vulkan/engines/cortex.llamacpp call .\node_modules\.bin\download %DOWNLOAD_URL%-vulkan.tar.gz -e --strip 1 -o %BIN_PATH%/vulkan/engines/cortex.llamacpp
call .\node_modules\.bin\download %CUDA_DOWNLOAD_URL%/cuda-12-0-windows-amd64.tar.gz -e --strip 1 -o %BIN_PATH% call .\node_modules\.bin\download %CUDA_DOWNLOAD_URL%/cuda-12-0-windows-amd64.tar.gz -e --strip 1 -o %SHARED_PATH%
call .\node_modules\.bin\download %CUDA_DOWNLOAD_URL%/cuda-11-7-windows-amd64.tar.gz -e --strip 1 -o %BIN_PATH% call .\node_modules\.bin\download %CUDA_DOWNLOAD_URL%/cuda-11-7-windows-amd64.tar.gz -e --strip 1 -o %SHARED_PATH%
@REM Loop through each folder and move DLLs (excluding engine.dll) @REM Loop through each folder and move DLLs (excluding engine.dll)

View File

@ -23,8 +23,8 @@ if [ "$OS_TYPE" == "Linux" ]; then
download "${ENGINE_DOWNLOAD_URL}-linux-amd64-noavx-cuda-12-0.tar.gz" -e --strip 1 -o "./bin/noavx-cuda-12-0/engines/cortex.llamacpp" 1 download "${ENGINE_DOWNLOAD_URL}-linux-amd64-noavx-cuda-12-0.tar.gz" -e --strip 1 -o "./bin/noavx-cuda-12-0/engines/cortex.llamacpp" 1
download "${ENGINE_DOWNLOAD_URL}-linux-amd64-noavx-cuda-11-7.tar.gz" -e --strip 1 -o "./bin/noavx-cuda-11-7/engines/cortex.llamacpp" 1 download "${ENGINE_DOWNLOAD_URL}-linux-amd64-noavx-cuda-11-7.tar.gz" -e --strip 1 -o "./bin/noavx-cuda-11-7/engines/cortex.llamacpp" 1
download "${ENGINE_DOWNLOAD_URL}-linux-amd64-vulkan.tar.gz" -e --strip 1 -o "./bin/vulkan/engines/cortex.llamacpp" 1 download "${ENGINE_DOWNLOAD_URL}-linux-amd64-vulkan.tar.gz" -e --strip 1 -o "./bin/vulkan/engines/cortex.llamacpp" 1
download "${CUDA_DOWNLOAD_URL}/cuda-12-0-linux-amd64.tar.gz" -e --strip 1 -o "./bin" 1 download "${CUDA_DOWNLOAD_URL}/cuda-12-0-linux-amd64.tar.gz" -e --strip 1 -o "../../electron/shared" 1
download "${CUDA_DOWNLOAD_URL}/cuda-11-7-linux-amd64.tar.gz" -e --strip 1 -o "./bin" 1 download "${CUDA_DOWNLOAD_URL}/cuda-11-7-linux-amd64.tar.gz" -e --strip 1 -o "../../electron/shared" 1
elif [ "$OS_TYPE" == "Darwin" ]; then elif [ "$OS_TYPE" == "Darwin" ]; then
# macOS downloads # macOS downloads

View File

@ -2,6 +2,7 @@ import path from 'path'
import { getJanDataFolderPath, log, SystemInformation } from '@janhq/core/node' import { getJanDataFolderPath, log, SystemInformation } from '@janhq/core/node'
import { executableCortexFile } from './execute' import { executableCortexFile } from './execute'
import { ProcessWatchdog } from './watchdog' import { ProcessWatchdog } from './watchdog'
import { appResourcePath } from '@janhq/core/node'
// The HOST address to use for the Nitro subprocess // The HOST address to use for the Nitro subprocess
const LOCAL_PORT = '39291' const LOCAL_PORT = '39291'
@ -19,9 +20,9 @@ function run(systemInfo?: SystemInformation): Promise<any> {
// If ngl is not set or equal to 0, run on CPU with correct instructions // If ngl is not set or equal to 0, run on CPU with correct instructions
systemInfo?.gpuSetting systemInfo?.gpuSetting
? { ? {
...systemInfo.gpuSetting, ...systemInfo.gpuSetting,
run_mode: systemInfo.gpuSetting.run_mode, run_mode: systemInfo.gpuSetting.run_mode,
} }
: undefined : undefined
) )
@ -29,20 +30,9 @@ function run(systemInfo?: SystemInformation): Promise<any> {
log(`[CORTEX]:: Spawn cortex at path: ${executableOptions.executablePath}`) log(`[CORTEX]:: Spawn cortex at path: ${executableOptions.executablePath}`)
log(`[CORTEX]:: Cortex engine path: ${executableOptions.enginePath}`) log(`[CORTEX]:: Cortex engine path: ${executableOptions.enginePath}`)
// Add engine path to the PATH and LD_LIBRARY_PATH addEnvPaths(path.join(appResourcePath(), 'shared'))
process.env.PATH = (process.env.PATH || '').concat( addEnvPaths(executableOptions.binPath)
path.delimiter, addEnvPaths(executableOptions.enginePath)
executableOptions.enginePath,
path.delimiter,
executableOptions.binPath
)
log(`[CORTEX] PATH: ${process.env.PATH}`)
process.env.LD_LIBRARY_PATH = (process.env.LD_LIBRARY_PATH || '').concat(
path.delimiter,
executableOptions.enginePath,
path.delimiter,
executableOptions.binPath
)
const dataFolderPath = getJanDataFolderPath() const dataFolderPath = getJanDataFolderPath()
watchdog = new ProcessWatchdog( watchdog = new ProcessWatchdog(
@ -83,6 +73,23 @@ function dispose() {
watchdog?.terminate() watchdog?.terminate()
} }
function addEnvPaths(dest: string) {
// Add engine path to the PATH and LD_LIBRARY_PATH
if (process.platform === 'win32') {
process.env.PATH = (process.env.PATH || '').concat(
path.delimiter,
dest,
)
log(`[CORTEX] PATH: ${process.env.PATH}`)
} else {
process.env.LD_LIBRARY_PATH = (process.env.LD_LIBRARY_PATH || '').concat(
path.delimiter,
dest,
)
log(`[CORTEX] LD_LIBRARY_PATH: ${process.env.LD_LIBRARY_PATH}`)
}
}
/** /**
* Cortex process info * Cortex process info
*/ */

View File

@ -13,6 +13,7 @@ import {
import { CortexAPI } from './cortex' import { CortexAPI } from './cortex'
import { scanModelsFolder } from './legacy/model-json' import { scanModelsFolder } from './legacy/model-json'
import { downloadModel } from './legacy/download' import { downloadModel } from './legacy/download'
import { systemInformation } from '@janhq/core'
declare const SETTINGS: Array<any> declare const SETTINGS: Array<any>
@ -65,7 +66,7 @@ export default class JanModelExtension extends ModelExtension {
model.engine === InferenceEngine.nitro_tensorrt_llm || model.engine === InferenceEngine.nitro_tensorrt_llm ||
model.settings.vision_model model.settings.vision_model
) { ) {
return downloadModel(model) return downloadModel(model, (await systemInformation()).gpuSetting)
} }
} }
/** /**