diff --git a/.devops/intel.Dockerfile b/.devops/intel.Dockerfile index 0f13e59e6932..0ec63524c20d 100644 --- a/.devops/intel.Dockerfile +++ b/.devops/intel.Dockerfile @@ -44,7 +44,7 @@ RUN if [ "${GGML_SYCL_F16}" = "ON" ]; then \ && export SYCL_PROGRAM_COMPILE_OPTIONS="-cl-fp32-correctly-rounded-divide-sqrt"; \ fi && \ echo "Building with dynamic libs" && \ - cmake -B build -DGGML_NATIVE=OFF -DGGML_SYCL=ON -DCMAKE_C_COMPILER=icx -DCMAKE_CXX_COMPILER=icpx -DGGML_BACKEND_DL=ON -DGGML_CPU_ALL_VARIANTS=ON -DLLAMA_BUILD_TESTS=OFF ${OPT_SYCL_F16} && \ + cmake -B build -DGGML_NATIVE=OFF -DGGML_SYCL=ON -DCMAKE_C_COMPILER=icx -DCMAKE_CXX_COMPILER=icpx -DGGML_BACKEND_DL=ON -DGGML_CPU_ALL_VARIANTS=ON -DLLAMA_BUILD_TESTS=OFF -DLLAMA_OPENSSL=ON ${OPT_SYCL_F16} && \ cmake --build build --config Release -j$(nproc) RUN mkdir -p /app/lib && \ @@ -102,7 +102,7 @@ RUN mkdir /tmp/neo/ && cd /tmp/neo/ \ && dpkg --install *.deb RUN apt-get update \ - && apt-get install -y libgomp1 curl ffmpeg \ + && apt-get install -y libgomp1 curl ffmpeg openssl libssl-dev \ && apt autoremove -y \ && apt clean -y \ && rm -rf /tmp/* /var/tmp/* \ diff --git a/.github/workflows/build-sycl.yml b/.github/workflows/build-sycl.yml index 741c9ce77c1c..24032f9efba0 100644 --- a/.github/workflows/build-sycl.yml +++ b/.github/workflows/build-sycl.yml @@ -79,6 +79,12 @@ jobs: wget -q "https://github.com/oneapi-src/level-zero/releases/download/v${LEVEL_ZERO_VERSION}/libze-dev_${LEVEL_ZERO_VERSION}%2B${LEVEL_ZERO_UBUNTU_VERSION}_amd64.deb" -O libze-dev.deb sudo apt-get install -y ./libze1.deb ./libze-dev.deb + - name: Dependencies + id: depends + run: | + sudo apt-get update + sudo apt-get install -y libssl-dev + - name: ccache uses: ggml-org/ccache-action@v1.2.24 with: @@ -104,7 +110,7 @@ jobs: -DGGML_SYCL=ON \ -DCMAKE_C_COMPILER=icx \ -DCMAKE_CXX_COMPILER=icpx \ - -DLLAMA_OPENSSL=OFF \ + -DLLAMA_OPENSSL=ON \ -DGGML_NATIVE=OFF \ -DGGML_SYCL_F16=${{ matrix.fp16 }} \ -DGGML_SYCL_SUPPORT_LEVEL_ZERO_API=ON \ diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9745230f500c..e0d0c9e8991f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1442,6 +1442,12 @@ jobs: name: llama-ui.zip path: tools/ui/dist + - name: Dependencies + id: depends + run: | + sudo apt-get update + sudo apt-get install -y libssl-dev + - name: ccache uses: ggml-org/ccache-action@v1.2.24 with: @@ -1460,7 +1466,7 @@ jobs: -DCMAKE_CXX_COMPILER=icpx \ -DCMAKE_INSTALL_RPATH='$ORIGIN' \ -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \ - -DLLAMA_OPENSSL=OFF \ + -DLLAMA_OPENSSL=ON \ -DGGML_NATIVE=OFF \ -DGGML_SYCL_F16=${{ matrix.fp16 }} time cmake --build build --config Release -j $(nproc) diff --git a/examples/sycl/build.sh b/examples/sycl/build.sh index 9dd66cb67655..dc9e44a8ea28 100755 --- a/examples/sycl/build.sh +++ b/examples/sycl/build.sh @@ -4,15 +4,18 @@ # SPDX-License-Identifier: MIT print_usage() { - echo "Usage: ./build.sh [fp32|fp16] [--help]" + echo "Usage: ./build.sh [fp32|fp16] [ssl|nossl] [--help]" echo "" echo "Options:" echo " fp32 Build with FP32 precision (default)" echo " fp16 Build with FP16 precision (faster for long-prompt inference)" + echo " ssl Build with OpenSSL (default)" + echo " nossl Build without OpenSSL" echo " --help Print this help message" } PRECISION=fp32 +SSL=ON for arg in "$@"; do case "$arg" in @@ -23,6 +26,12 @@ for arg in "$@"; do fp32|fp16) PRECISION="$arg" ;; + ssl) + SSL=ON + ;; + nossl) + SSL=OFF + ;; *) echo "Error: unknown option '$arg'" print_usage @@ -37,10 +46,13 @@ source /opt/intel/oneapi/setvars.sh if [ "$PRECISION" = "fp16" ]; then #for FP16 - cmake .. -DGGML_SYCL=ON -DCMAKE_C_COMPILER=icx -DCMAKE_CXX_COMPILER=icpx -DGGML_SYCL_F16=ON -DLLAMA_OPENSSL=OFF # faster for long-prompt inference + echo "cmake .. -DGGML_SYCL=ON -DCMAKE_C_COMPILER=icx -DCMAKE_CXX_COMPILER=icpx -DGGML_SYCL_F16=ON -DLLAMA_OPENSSL=$SSL # faster for long-prompt inference +" + cmake .. -DGGML_SYCL=ON -DCMAKE_C_COMPILER=icx -DCMAKE_CXX_COMPILER=icpx -DGGML_SYCL_F16=ON -DLLAMA_OPENSSL="$SSL" # faster for long-prompt inference else #for FP32 - cmake .. -DGGML_SYCL=ON -DCMAKE_C_COMPILER=icx -DCMAKE_CXX_COMPILER=icpx -DLLAMA_OPENSSL=OFF + echo "cmake .. -DGGML_SYCL=ON -DCMAKE_C_COMPILER=icx -DCMAKE_CXX_COMPILER=icpx -DLLAMA_OPENSSL=$SSL" + cmake .. -DGGML_SYCL=ON -DCMAKE_C_COMPILER=icx -DCMAKE_CXX_COMPILER=icpx -DLLAMA_OPENSSL="$SSL" fi #build example/main @@ -50,4 +62,5 @@ fi #cmake --build . --config Release --target llama-bench #build all binary +echo "cmake --build . --config Release -j$((($(nproc)+1)/2)) -v" cmake --build . --config Release -j$((($(nproc)+1)/2)) -v diff --git a/examples/sycl/win-build-sycl.bat b/examples/sycl/win-build-sycl.bat index 9a82edbefe62..4b3906a6371f 100644 --- a/examples/sycl/win-build-sycl.bat +++ b/examples/sycl/win-build-sycl.bat @@ -3,23 +3,62 @@ :: Copyright (C) 2024 Intel Corporation :: SPDX-License-Identifier: MIT -IF /I "%1"=="--help" ( - echo Usage: win-build-sycl.bat [fp32^|fp16] [--help] - echo. - echo Options: - echo fp32 Build with FP32 precision ^(default^) - echo fp16 Build with FP16 precision ^(faster for long-prompt inference^) - echo --help Print this help message - exit /B 0 -) +SET "PRECISION=fp32" +SET "SSL=ON" +SET "OPENSSL_OPTION=" -SET PRECISION=%1 -IF "%PRECISION%"=="" SET PRECISION=fp32 -IF /I NOT "%PRECISION%"=="fp32" IF /I NOT "%PRECISION%"=="fp16" ( - echo Error: invalid value '%PRECISION%'. Use 'fp32' or 'fp16'. - echo Usage: win-build-sycl.bat [fp32^|fp16] [--help] - exit /B 1 -) +:PARSE_ARGS +IF "%~1"=="" GOTO ARGS_DONE +IF /I "%~1"=="--help" GOTO HELP +IF /I "%~1"=="fp32" GOTO ARG_FP32 +IF /I "%~1"=="fp16" GOTO ARG_FP16 +IF /I "%~1"=="ssl" GOTO ARG_SSL +IF /I "%~1"=="nossl" GOTO ARG_NOSSL +GOTO INVALID_ARG + +:ARG_FP32 +SET "PRECISION=fp32" +GOTO NEXT_ARG + +:ARG_FP16 +SET "PRECISION=fp16" +GOTO NEXT_ARG + +:ARG_SSL +SET "SSL=ON" +SET "OPENSSL_OPTION=" +GOTO NEXT_ARG + +:ARG_NOSSL +SET "SSL=OFF" +SET "OPENSSL_OPTION=-DLLAMA_OPENSSL=OFF" +GOTO NEXT_ARG + +:NEXT_ARG +SHIFT +GOTO PARSE_ARGS + +:HELP +SET "ARG_ERROR=0" +GOTO PRINT_USAGE + +:INVALID_ARG +SET "ARG_ERROR=1" +echo Error: unknown option '%~1' + +:PRINT_USAGE +echo Usage: win-build-sycl.bat [fp32^|fp16] [ssl^|nossl] [--help] +echo. +echo Options: +echo fp32 Build with FP32 precision ^(default^) +echo fp16 Build with FP16 precision ^(faster for long-prompt inference^) +echo ssl Build with BoringSSL ^(default^) +echo nossl Build without BoringSSL +echo --help Print this help message +IF "%ARG_ERROR%"=="1" exit /B 1 +exit /B 0 + +:ARGS_DONE IF not exist build (mkdir build) cd build @@ -31,10 +70,10 @@ if %errorlevel% neq 0 goto ERROR IF /I "%PRECISION%"=="fp16" ( :: for FP16 :: faster for long-prompt inference - cmake -G "MinGW Makefiles" .. -DLLAMA_OPENSSL=OFF -DGGML_SYCL=ON -DCMAKE_CXX_COMPILER=icx -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release -DGGML_SYCL_F16=ON + cmake -G "MinGW Makefiles" .. -DLLAMA_BUILD_BORINGSSL=%SSL% %OPENSSL_OPTION% -DGGML_SYCL=ON -DCMAKE_CXX_COMPILER=icx -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release -DGGML_SYCL_F16=ON ) ELSE ( :: for FP32 - cmake -G "Ninja" .. -DLLAMA_OPENSSL=OFF -DGGML_SYCL=ON -DCMAKE_C_COMPILER=cl -DCMAKE_CXX_COMPILER=icx -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release + cmake -G "Ninja" .. -DLLAMA_BUILD_BORINGSSL=%SSL% %OPENSSL_OPTION% -DGGML_SYCL=ON -DCMAKE_C_COMPILER=cl -DCMAKE_CXX_COMPILER=icx -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release ) if %errorlevel% neq 0 goto ERROR