gen_linux.sh 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. #!/bin/bash
  2. # This script is intended to run inside the go generate
  3. # working directory must be ../llm/llama.cpp
  4. set -ex
  5. set -o pipefail
  6. echo "Starting linux generate script"
  7. if [ -z "${CUDACXX}" -a -x /usr/local/cuda/bin/nvcc ] ; then
  8. export CUDACXX=/usr/local/cuda/bin/nvcc
  9. fi
  10. source $(dirname $0)/gen_common.sh
  11. init_vars
  12. git_module_setup
  13. apply_patches
  14. if [ -d /usr/local/cuda/lib64/ ] ; then
  15. CMAKE_DEFS="-DLLAMA_CUBLAS=on -DCMAKE_POSITION_INDEPENDENT_CODE=on -DLLAMA_NATIVE=off -DLLAMA_AVX=on -DLLAMA_AVX2=off -DLLAMA_AVX512=off -DLLAMA_FMA=off -DLLAMA_F16C=off ${CMAKE_DEFS}"
  16. else
  17. CMAKE_DEFS="-DCMAKE_POSITION_INDEPENDENT_CODE=on -DLLAMA_NATIVE=off -DLLAMA_AVX=on -DLLAMA_AVX2=off -DLLAMA_AVX512=off -DLLAMA_FMA=off -DLLAMA_F16C=off ${CMAKE_DEFS}"
  18. fi
  19. BUILD_DIR="gguf/build/cuda"
  20. LIB_DIR="${BUILD_DIR}/lib"
  21. mkdir -p ../../dist/
  22. build
  23. if [ -d /usr/local/cuda/lib64/ ] ; then
  24. pwd
  25. ar -M <<EOF
  26. create ${BUILD_DIR}/libollama.a
  27. addlib ${BUILD_DIR}/examples/server/libext_server.a
  28. addlib ${BUILD_DIR}/common/libcommon.a
  29. addlib ${BUILD_DIR}/libllama.a
  30. addlib ${BUILD_DIR}/libggml_static.a
  31. addlib /usr/local/cuda/lib64/libcudart_static.a
  32. addlib /usr/local/cuda/lib64/libcublas_static.a
  33. addlib /usr/local/cuda/lib64/libcublasLt_static.a
  34. addlib /usr/local/cuda/lib64/libcudadevrt.a
  35. addlib /usr/local/cuda/lib64/libculibos.a
  36. save
  37. end
  38. EOF
  39. else
  40. ar -M <<EOF
  41. create ${BUILD_DIR}/libollama.a
  42. addlib ${BUILD_DIR}/examples/server/libext_server.a
  43. addlib ${BUILD_DIR}/common/libcommon.a
  44. addlib ${BUILD_DIR}/libllama.a
  45. addlib ${BUILD_DIR}/libggml_static.a
  46. save
  47. end
  48. EOF
  49. fi
  50. if [ -z "${ROCM_PATH}" ] ; then
  51. # Try the default location in case it exists
  52. ROCM_PATH=/opt/rocm
  53. fi
  54. if [ -z "${CLBlast_DIR}" ] ; then
  55. # Try the default location in case it exists
  56. if [ -d /usr/lib/cmake/CLBlast ]; then
  57. export CLBlast_DIR=/usr/lib/cmake/CLBlast
  58. fi
  59. fi
  60. BUILD_DIR="gguf/build/rocm"
  61. LIB_DIR="${BUILD_DIR}/lib"
  62. mkdir -p ${LIB_DIR}
  63. # Ensure we have at least one file present for the embed
  64. touch ${LIB_DIR}/.generated
  65. if [ -d "${ROCM_PATH}" ] ; then
  66. echo "Building ROCm"
  67. init_vars
  68. CMAKE_DEFS="-DCMAKE_POSITION_INDEPENDENT_CODE=on -DCMAKE_VERBOSE_MAKEFILE=on -DLLAMA_HIPBLAS=on -DCMAKE_C_COMPILER=$ROCM_PATH/llvm/bin/clang -DCMAKE_CXX_COMPILER=$ROCM_PATH/llvm/bin/clang++ -DAMDGPU_TARGETS='gfx803;gfx900;gfx906:xnack-;gfx908:xnack-;gfx90a:xnack+;gfx90a:xnack-;gfx1010;gfx1012;gfx1030;gfx1100;gfx1101;gfx1102' -DGPU_TARGETS='gfx803;gfx900;gfx906:xnack-;gfx908:xnack-;gfx90a:xnack+;gfx90a:xnack-;gfx1010;gfx1012;gfx1030;gfx1100;gfx1101;gfx1102'"
  69. CMAKE_DEFS="-DLLAMA_ACCELERATE=on -DLLAMA_NATIVE=off -DLLAMA_AVX=on -DLLAMA_AVX2=off -DLLAMA_AVX512=off -DLLAMA_FMA=off -DLLAMA_F16C=off ${CMAKE_DEFS}"
  70. build
  71. gcc -fPIC -g -shared -o ${LIB_DIR}/librocm_server.so \
  72. -Wl,--whole-archive \
  73. ${BUILD_DIR}/examples/server/libext_server.a \
  74. ${BUILD_DIR}/common/libcommon.a \
  75. ${BUILD_DIR}/libllama.a \
  76. -Wl,--no-whole-archive \
  77. -lrt -lpthread -ldl -lstdc++ -lm \
  78. -L/opt/rocm/lib -L/opt/amdgpu/lib/x86_64-linux-gnu/ \
  79. -Wl,-rpath,/opt/rocm/lib,-rpath,/opt/amdgpu/lib/x86_64-linux-gnu/ \
  80. -lhipblas -lrocblas -lamdhip64 -lrocsolver -lamd_comgr -lhsa-runtime64 -lrocsparse -ldrm -ldrm_amdgpu
  81. fi