Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
OpenDAS
ollama
Commits
8671fded
Commit
8671fded
authored
Apr 25, 2024
by
Daniel Hiltgen
Browse files
Refactor windows generate for more modular usage
parent
2619850f
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
169 additions
and
129 deletions
+169
-129
llm/generate/gen_windows.ps1
llm/generate/gen_windows.ps1
+169
-129
No files found.
llm/generate/gen_windows.ps1
View file @
8671fded
...
@@ -26,14 +26,20 @@ function amdGPUs {
...
@@ -26,14 +26,20 @@ function amdGPUs {
$GPU_LIST
-join
';'
$GPU_LIST
-join
';'
}
}
$
script
:
cmakeTargets
=
@(
"ollama_llama_server"
)
function
init_vars
{
function
init_vars
{
if
(
!
$
script
:
SRC_DIR
)
{
$
script
:
SRC_DIR
=
$
(
resolve-path
"..\..\"
)
$
script
:
SRC_DIR
=
$
(
resolve-path
"..\..\"
)
}
if
(
!
$
script
:
llamacppDir
)
{
$
script
:
llamacppDir
=
"../llama.cpp"
$
script
:
llamacppDir
=
"../llama.cpp"
}
$
script
:
cmakeDefs
=
@(
$
script
:
cmakeDefs
=
@(
"-DBUILD_SHARED_LIBS=on"
,
"-DBUILD_SHARED_LIBS=on"
,
"-DLLAMA_NATIVE=off"
"-DLLAMA_NATIVE=off"
)
)
$
script
:
c
makeTargets
=
@(
"ollama_llama_server
"
)
$
script
:
c
ommonCpuDefs
=
@(
"-DCMAKE_POSITION_INDEPENDENT_CODE=on
"
)
$
script
:
ARCH
=
"amd64"
# arm not yet supported.
$
script
:
ARCH
=
"amd64"
# arm not yet supported.
$
script
:
DIST_BASE
=
"
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\ollama_runners"
$
script
:
DIST_BASE
=
"
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\ollama_runners"
if
(
$
env
:
CGO_CFLAGS
-contains
"-g"
)
{
if
(
$
env
:
CGO_CFLAGS
-contains
"-g"
)
{
...
@@ -166,28 +172,24 @@ function cleanup {
...
@@ -166,28 +172,24 @@ function cleanup {
}
}
}
}
init_vars
git_module_setup
apply_patches
# -DLLAMA_AVX -- 2011 Intel Sandy Bridge & AMD Bulldozer
# -DLLAMA_AVX -- 2011 Intel Sandy Bridge & AMD Bulldozer
# -DLLAMA_AVX2 -- 2013 Intel Haswell & 2015 AMD Excavator / 2017 AMD Zen
# -DLLAMA_AVX2 -- 2013 Intel Haswell & 2015 AMD Excavator / 2017 AMD Zen
# -DLLAMA_FMA (FMA3) -- 2013 Intel Haswell & 2012 AMD Piledriver
# -DLLAMA_FMA (FMA3) -- 2013 Intel Haswell & 2012 AMD Piledriver
$
script
:
commonCpuDefs
= @("
-DCMAKE_POSITION_INDEPENDENT_CODE
=
on
")
if (
$null
-eq
${env:OLLAMA_SKIP_CPU_GENERATE}
) {
function build_static(
) {
if (
$null
-eq
${env:OLLAMA_SKIP_CPU_GENERATE}
) {
# GCC build for direct linking into the Go binary
# GCC build for direct linking into the Go binary
init_vars
init_vars
# cmake will silently fallback to msvc compilers if mingw isn't in the path, so detect and fail fast
# cmake will silently fallback to msvc compilers if mingw isn't in the path, so detect and fail fast
# as we need this to be compiled by gcc for golang to be able to link with itx
# as we need this to be compiled by gcc for golang to be able to link with itx
write-host "
Checking
for
MinGW...
"
write-host "
Checking
for
MinGW...
"
# error action ensures we exit on failure
# error action ensures we exit on failure
get-command gcc
get-command gcc
get-command mingw32-make
get-command mingw32-make
$
script
:
cmakeTargets
= @("
llama
", "
ggml
")
$
script
:
cmakeTargets
= @("
llama
", "
ggml
")
$
script
:
cmakeDefs
= @(
$
script
:
cmakeDefs
= @(
"
-G
", "
MinGW
Makefiles
"
"
-G
", "
MinGW
Makefiles
"
"
-DCMAKE_C_COMPILER
=
gcc.exe
",
"
-DCMAKE_C_COMPILER
=
gcc.exe
",
"
-DCMAKE_CXX_COMPILER
=
g
++.
exe
",
"
-DCMAKE_CXX_COMPILER
=
g
++.
exe
",
...
@@ -198,11 +200,17 @@ $script:cmakeDefs = @(
...
@@ -198,11 +200,17 @@ $script:cmakeDefs = @(
"
-DLLAMA_AVX512
=
off
",
"
-DLLAMA_AVX512
=
off
",
"
-DLLAMA_F16C
=
off
",
"
-DLLAMA_F16C
=
off
",
"
-DLLAMA_FMA
=
off
")
"
-DLLAMA_FMA
=
off
")
$
script
:
buildDir
="
..
/build/windows/
${script:ARCH}
_static
"
$
script
:
buildDir
="
..
/build/windows/
${script:ARCH}
_static
"
write-host "
Building
static
library
"
write-host "
Building
static
library
"
build
build
} else {
write-host "
Skipping
CPU
generation
step
as
requested
"
}
}
# remaining llama.cpp builds use MSVC
function build_cpu() {
if (
$null
-eq
${env:OLLAMA_SKIP_CPU_GENERATE}
) {
# remaining llama.cpp builds use MSVC
init_vars
init_vars
$
script
:
cmakeDefs
=
$
script
:
commonCpuDefs
+ @("
-A
", "
x64
", "
-DLLAMA_AVX
=
off
", "
-DLLAMA_AVX2
=
off
", "
-DLLAMA_AVX512
=
off
", "
-DLLAMA_FMA
=
off
", "
-DLLAMA_F16C
=
off
") +
$
script
:
cmakeDefs
$
script
:
cmakeDefs
=
$
script
:
commonCpuDefs
+ @("
-A
", "
x64
", "
-DLLAMA_AVX
=
off
", "
-DLLAMA_AVX2
=
off
", "
-DLLAMA_AVX512
=
off
", "
-DLLAMA_FMA
=
off
", "
-DLLAMA_F16C
=
off
") +
$
script
:
cmakeDefs
$
script
:
buildDir
="
..
/build/windows/
${script:ARCH}
/cpu
"
$
script
:
buildDir
="
..
/build/windows/
${script:ARCH}
/cpu
"
...
@@ -211,7 +219,13 @@ build
...
@@ -211,7 +219,13 @@ build
build
build
sign
sign
install
install
} else {
write-host "
Skipping
CPU
generation
step
as
requested
"
}
}
function build_cpu_avx() {
if (
$null
-eq
${env:OLLAMA_SKIP_CPU_GENERATE}
) {
init_vars
init_vars
$
script
:
cmakeDefs
=
$
script
:
commonCpuDefs
+ @("
-A
", "
x64
", "
-DLLAMA_AVX
=
on
", "
-DLLAMA_AVX2
=
off
", "
-DLLAMA_AVX512
=
off
", "
-DLLAMA_FMA
=
off
", "
-DLLAMA_F16C
=
off
") +
$
script
:
cmakeDefs
$
script
:
cmakeDefs
=
$
script
:
commonCpuDefs
+ @("
-A
", "
x64
", "
-DLLAMA_AVX
=
on
", "
-DLLAMA_AVX2
=
off
", "
-DLLAMA_AVX512
=
off
", "
-DLLAMA_FMA
=
off
", "
-DLLAMA_F16C
=
off
") +
$
script
:
cmakeDefs
$
script
:
buildDir
="
..
/build/windows/
${script:ARCH}
/cpu_avx
"
$
script
:
buildDir
="
..
/build/windows/
${script:ARCH}
/cpu_avx
"
...
@@ -220,7 +234,13 @@ build
...
@@ -220,7 +234,13 @@ build
build
build
sign
sign
install
install
} else {
write-host "
Skipping
CPU
generation
step
as
requested
"
}
}
function build_cpu_avx2() {
if (
$null
-eq
${env:OLLAMA_SKIP_CPU_GENERATE}
) {
init_vars
init_vars
$
script
:
cmakeDefs
=
$
script
:
commonCpuDefs
+ @("
-A
", "
x64
", "
-DLLAMA_AVX
=
on
", "
-DLLAMA_AVX2
=
on
", "
-DLLAMA_AVX512
=
off
", "
-DLLAMA_FMA
=
on
", "
-DLLAMA_F16C
=
on
") +
$
script
:
cmakeDefs
$
script
:
cmakeDefs
=
$
script
:
commonCpuDefs
+ @("
-A
", "
x64
", "
-DLLAMA_AVX
=
on
", "
-DLLAMA_AVX2
=
on
", "
-DLLAMA_AVX512
=
off
", "
-DLLAMA_FMA
=
on
", "
-DLLAMA_F16C
=
on
") +
$
script
:
cmakeDefs
$
script
:
buildDir
="
..
/build/windows/
${script:ARCH}
/cpu_avx2
"
$
script
:
buildDir
="
..
/build/windows/
${script:ARCH}
/cpu_avx2
"
...
@@ -229,11 +249,13 @@ build
...
@@ -229,11 +249,13 @@ build
build
build
sign
sign
install
install
} else {
} else {
write-host "
Skipping
CPU
generation
step
as
requested
"
write-host "
Skipping
CPU
generation
step
as
requested
"
}
}
}
if (
$null
-ne
$
script
:
CUDA_LIB_DIR
) {
function build_cuda() {
if (
$null
-ne
$
script
:
CUDA_LIB_DIR
) {
# Then build cuda as a dynamically loaded library
# Then build cuda as a dynamically loaded library
$nvcc
= "
$
script
:
CUDA_LIB_DIR
\nvcc.exe
"
$nvcc
= "
$
script
:
CUDA_LIB_DIR
\nvcc.exe
"
$
script
:
CUDA_VERSION
=(get-item (
$nvcc
| split-path | split-path)).Basename
$
script
:
CUDA_VERSION
=(get-item (
$nvcc
| split-path | split-path)).Basename
...
@@ -257,9 +279,11 @@ if ($null -ne $script:CUDA_LIB_DIR) {
...
@@ -257,9 +279,11 @@ if ($null -ne $script:CUDA_LIB_DIR) {
cp
"
${script:CUDA_LIB_DIR}
\cudart64_*.dll"
"
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\"
cp
"
${script:CUDA_LIB_DIR}
\cudart64_*.dll"
"
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\"
cp
"
${script:CUDA_LIB_DIR}
\cublas64_*.dll"
"
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\"
cp
"
${script:CUDA_LIB_DIR}
\cublas64_*.dll"
"
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\"
cp
"
${script:CUDA_LIB_DIR}
\cublasLt64_*.dll"
"
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\"
cp
"
${script:CUDA_LIB_DIR}
\cublasLt64_*.dll"
"
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\"
}
}
}
if
(
$null
-ne
$
env
:
HIP_PATH
)
{
function
build_rocm
()
{
if
(
$null
-ne
$
env
:
HIP_PATH
)
{
$
script
:
ROCM_VERSION
=
(
get-item
$
env
:
HIP_PATH
)
.
Basename
$
script
:
ROCM_VERSION
=
(
get-item
$
env
:
HIP_PATH
)
.
Basename
if
(
$null
-ne
$
script
:
ROCM_VERSION
)
{
if
(
$null
-ne
$
script
:
ROCM_VERSION
)
{
$
script
:
ROCM_VARIANT
=
"_v"
+
$
script
:
ROCM_VERSION
$
script
:
ROCM_VARIANT
=
"_v"
+
$
script
:
ROCM_VERSION
...
@@ -308,8 +332,24 @@ if ($null -ne $env:HIP_PATH) {
...
@@ -308,8 +332,24 @@ if ($null -ne $env:HIP_PATH) {
cp "
${env:HIP_PATH}
\bin\rocblas.dll
" "
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\rocm\
"
cp "
${env:HIP_PATH}
\bin\rocblas.dll
" "
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\rocm\
"
# amdhip64.dll dependency comes from the driver and must be installed on the host to use AMD GPUs
# amdhip64.dll dependency comes from the driver and must be installed on the host to use AMD GPUs
cp "
${env:HIP_PATH}
\bin\rocblas\library\*
" "
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\rocm\rocblas\library\
"
cp "
${env:HIP_PATH}
\bin\rocblas\library\*
" "
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\rocm\rocblas\library\
"
}
}
}
init_vars
if (
$(
$args
.
count
)
-eq 0) {
git_module_setup
apply_patches
build_static
build_cpu_avx
build_cpu_avx2
build_cuda
build_rocm
cleanup
cleanup
write-host "
`ngo
generate
completed.
LLM
runners:
$(get-childitem
-path
$
script
:
DIST_BASE
)
"
write-host "
`ngo
generate
completed.
LLM
runners:
$(get-childitem
-path
$
script
:
DIST_BASE
)
"
} else {
for (
$i
= 0;
$i
-lt
$args
.count;
$i
++ ) {
write-host "
performing
$
(
$args
[
$i
])
"
&
$(
$args
[
$i
]
)
}
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment