From c4b08c6324463596a6ba9fd793cf5a6f5f55d413 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20=C4=8Cajka?= Date: Mon, 3 Feb 2025 16:28:52 +0100 Subject: [PATCH] ramalama container: Make it possible to build basic container on all RHEL architectures MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jakub Čajka --- .../scripts/build_llama_and_whisper.sh | 32 ++++++++++++------- container_build.sh | 9 +++++- 2 files changed, 29 insertions(+), 12 deletions(-) diff --git a/container-images/scripts/build_llama_and_whisper.sh b/container-images/scripts/build_llama_and_whisper.sh index 954ae7c9..d0fccdf3 100755 --- a/container-images/scripts/build_llama_and_whisper.sh +++ b/container-images/scripts/build_llama_and_whisper.sh @@ -6,6 +6,7 @@ dnf_install() { "procps-ng" "git" "dnf-plugins-core" "libcurl-devel") local vulkan_rpms=("vulkan-headers" "vulkan-loader-devel" "vulkan-tools" \ "spirv-tools" "glslc" "glslang") + local blas_rpms=("openblas-devel") # All the UBI-based ones if [ "$containerfile" = "ramalama" ] || [ "$containerfile" = "rocm" ] || \ @@ -14,16 +15,21 @@ dnf_install() { dnf install -y "$url" crb enable # this is in epel-release, can only install epel-release via url dnf --enablerepo=ubi-9-appstream-rpms install -y "${rpm_list[@]}" - local uname_m - uname_m="$(uname -m)" - dnf copr enable -y slp/mesa-krunkit "epel-9-$uname_m" - url="https://mirror.stream.centos.org/9-stream/AppStream/$uname_m/os/" - dnf config-manager --add-repo "$url" - url="http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-Official" - curl --retry 8 --retry-all-errors -o \ - /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-Official "$url" - rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-Official - dnf install -y mesa-vulkan-drivers "${vulkan_rpms[@]}" + # x86_64 and aarch64 means kompute + if [ "$(uname -m)" = "x86_64" ] || [ "$(uname -m)" = "aarch64" ] ;then + local uname_m + uname_m="$(uname -m)" + dnf copr enable -y slp/mesa-krunkit "epel-9-$uname_m" + url="https://mirror.stream.centos.org/9-stream/AppStream/$uname_m/os/" + dnf config-manager --add-repo "$url" + url="http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-Official" + curl --retry 8 --retry-all-errors -o \ + /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-Official "$url" + rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-Official + dnf install -y mesa-vulkan-drivers "${vulkan_rpms[@]}" + else + dnf install -y "${blas_rpms[@]}" + fi fi if [ "$containerfile" = "asahi" ]; then @@ -114,7 +120,11 @@ main() { common_flags+=("-DLLAMA_CURL=ON") case "$containerfile" in ramalama) - common_flags+=("-DGGML_KOMPUTE=ON" "-DKOMPUTE_OPT_DISABLE_VULKAN_VERSION_CHECK=ON") + if [ "$(uname -m)" = "x86_64" ] || [ "$(uname -m)" = "aarch64" ] ;then + common_flags+=("-DGGML_KOMPUTE=ON" "-DKOMPUTE_OPT_DISABLE_VULKAN_VERSION_CHECK=ON") + else + common_flags+=("-DGGML_BLAS=ON" "-DGGML_BLAS_VENDOR=OpenBLAS") + fi ;; esac diff --git a/container_build.sh b/container_build.sh index 51e567ae..bbbcb73f 100755 --- a/container_build.sh +++ b/container_build.sh @@ -70,7 +70,14 @@ build() { } determine_platform() { - local platform="linux/amd64" + case $conman_bin in + podman) + local platform="$(podman info --format '{{ .Version.OsArch }}' 2>/dev/null)" + ;; + docker) + local platform="$(docker info --format '{{ .ClientInfo.Os }}/{{ .ClientInfo.Arch }}' 2>/dev/null)" + ;; + esac if [ "$(uname -m)" = "aarch64" ] || { [ "$(uname -s)" = "Darwin" ] && [ "$(uname -m)" = "arm64" ]; }; then platform="linux/arm64" fi