making amdgpu work on arm achitecutre with vulkan
This commit is contained in:
parent
e61c329435
commit
4b74cee096
|
|
@ -175,6 +175,7 @@ var (
|
|||
CudaVisibleDevices = String("CUDA_VISIBLE_DEVICES")
|
||||
HipVisibleDevices = String("HIP_VISIBLE_DEVICES")
|
||||
RocrVisibleDevices = String("ROCR_VISIBLE_DEVICES")
|
||||
VkVisibleDevices = String("GGML_VK_VISIBLE_DEVICES")
|
||||
GpuDeviceOrdinal = String("GPU_DEVICE_ORDINAL")
|
||||
HsaOverrideGfxVersion = String("HSA_OVERRIDE_GFX_VERSION")
|
||||
)
|
||||
|
|
@ -263,6 +264,7 @@ func AsMap() map[string]EnvVar {
|
|||
ret["CUDA_VISIBLE_DEVICES"] = EnvVar{"CUDA_VISIBLE_DEVICES", CudaVisibleDevices(), "Set which NVIDIA devices are visible"}
|
||||
ret["HIP_VISIBLE_DEVICES"] = EnvVar{"HIP_VISIBLE_DEVICES", HipVisibleDevices(), "Set which AMD devices are visible"}
|
||||
ret["ROCR_VISIBLE_DEVICES"] = EnvVar{"ROCR_VISIBLE_DEVICES", RocrVisibleDevices(), "Set which AMD devices are visible"}
|
||||
ret["GGML_VK_VISIBLE_DEVICES"] = EnvVar{"GGML_VK_VISIBLE_DEVICES", VkVisibleDevices(), "Set which VK AMD devices are visible"}
|
||||
ret["GPU_DEVICE_ORDINAL"] = EnvVar{"GPU_DEVICE_ORDINAL", GpuDeviceOrdinal(), "Set which AMD devices are visible"}
|
||||
ret["HSA_OVERRIDE_GFX_VERSION"] = EnvVar{"HSA_OVERRIDE_GFX_VERSION", HsaOverrideGfxVersion(), "Override the gfx used for all detected AMD GPUs"}
|
||||
ret["OLLAMA_INTEL_GPU"] = EnvVar{"OLLAMA_INTEL_GPU", IntelGPU(), "Enable experimental Intel GPU detection"}
|
||||
|
|
|
|||
|
|
@ -410,7 +410,7 @@ func GetGPUInfo() GpuInfoList {
|
|||
|
||||
rocmGPUs = AMDGetGPUInfo()
|
||||
bootstrapped = true
|
||||
if len(cudaGPUs) == 0 && len(rocmGPUs) == 0 && len(oneapiGPUs) == 0 {
|
||||
if len(cudaGPUs) == 0 && len(rocmGPUs) == 0 && len(oneapiGPUs) == 0 && len(vulkanGPUs) == 0 {
|
||||
slog.Info("no compatible GPUs were discovered")
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -53,12 +53,12 @@ var (
|
|||
)
|
||||
|
||||
var VulkanGlobs = []string{
|
||||
"/usr/lib/x86_64-linux-gnu/libvulkan.so*",
|
||||
"/usr/lib/aarch64-linux-gnu/libvulkan.so*",
|
||||
"/usr/lib*/libvulkan.so*",
|
||||
}
|
||||
|
||||
var capLinuxGlobs = []string{
|
||||
"/usr/lib/x86_64-linux-gnu/libcap.so*",
|
||||
"/usr/lib/aarch64-linux-gnu/libcap.so*",
|
||||
"/usr/lib*/libcap.so*",
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ init_vars() {
|
|||
WHOLE_ARCHIVE="-Wl,-force_load"
|
||||
NO_WHOLE_ARCHIVE=""
|
||||
GCC_ARCH="-arch ${ARCH}"
|
||||
DIST_BASE=../../dist/darwin-${GOARCH}/
|
||||
DIST_BASE=../../dist/darwin-${GOARCH}
|
||||
PAYLOAD_BASE=../../build/darwin/${GOARCH}
|
||||
;;
|
||||
"Linux")
|
||||
|
|
@ -40,7 +40,7 @@ init_vars() {
|
|||
|
||||
# Cross compiling not supported on linux - Use docker
|
||||
GCC_ARCH=""
|
||||
DIST_BASE=../../dist/linux-${GOARCH}/
|
||||
DIST_BASE=../../dist/linux-${GOARCH}
|
||||
PAYLOAD_BASE=../../build/linux/${GOARCH}
|
||||
;;
|
||||
*)
|
||||
|
|
|
|||
|
|
@ -224,9 +224,9 @@ fi
|
|||
if [ -z "${OLLAMA_SKIP_VULKAN_GENERATE}" -a -d "${VULKAN_ROOT}" ] && [ -z "${OLLAMA_SKIP_VULKAN_GENERATE}" -a -d "${CAP_ROOT}" ]; then
|
||||
echo "Vulkan and capabilities libraries detected - building dynamic Vulkan library"
|
||||
init_vars
|
||||
|
||||
CMAKE_DEFS="${COMMON_CMAKE_DEFS} ${CMAKE_DEFS} -DLLAMA_VULKAN=1"
|
||||
BUILD_DIR="../build/linux/${ARCH}/vulkan"
|
||||
RUNNER=vulkan
|
||||
CMAKE_DEFS="-DCMAKE_SKIP_RPATH=on -DBUILD_SHARED_LIBS=on -DCMAKE_POSITION_INDEPENDENT_CODE=on -DGGML_NATIVE=off -DGGML_AVX=off -DGGML_AVX2=off -DGGML_AVX512=off -DGGML_FMA=off -DGGML_F16C=off -DGGML_OPENMP=off"
|
||||
BUILD_DIR="../build/linux/${ARCH}/${RUNNER}"
|
||||
EXTRA_LIBS="-L${VULKAN_ROOT} -L${CAP_ROOT} -lvulkan -lcap"
|
||||
build
|
||||
|
||||
|
|
@ -234,8 +234,10 @@ if [ -z "${OLLAMA_SKIP_VULKAN_GENERATE}" -a -d "${VULKAN_ROOT}" ] && [ -z "${OLL
|
|||
for dep in $(ldd "${BUILD_DIR}/bin/ollama_llama_server" | grep "=>" | cut -f2 -d= | cut -f2 -d' ' | grep -e vulkan -e cap); do
|
||||
cp "${dep}" "${BUILD_DIR}/bin/"
|
||||
done
|
||||
cp "${VULKAN_ROOT}/libvulkan.so*" "${BUILD_DIR}/bin/"
|
||||
cp "${CAP_ROOT}/libcap.so*" "${BUILD_DIR}/bin/"
|
||||
cp ${VULKAN_ROOT}/libvulkan.so* "${BUILD_DIR}/bin/"
|
||||
cp ${CAP_ROOT}/libcap.so* "${BUILD_DIR}/bin/"
|
||||
install
|
||||
dist
|
||||
compress
|
||||
fi
|
||||
|
||||
|
|
|
|||
|
|
@ -417,7 +417,7 @@ function build_vulkan() {
|
|||
init_vars
|
||||
$script:buildDir="../build/windows/${script:ARCH}/vulkan"
|
||||
$script:distDir="$script:DIST_BASE\vulkan"
|
||||
$script:cmakeDefs += @("-A", "x64", "-DLLAMA_VULKAN=1")
|
||||
$script:cmakeDefs += @("-A", "x64", "-DDGGML_VULKAN=1")
|
||||
write-host "Building Vulkan"
|
||||
build
|
||||
sign
|
||||
|
|
|
|||
Loading…
Reference in New Issue