@@ -36,15 +36,35 @@ SRC=`pwd`
3636CMAKE_EXTRA=" "
3737CTEST_EXTRA=" "
3838
39+ if [ ! -z ${GG_BUILD_METAL} ]; then
40+ CMAKE_EXTRA=" ${CMAKE_EXTRA} -DGGML_METAL=ON"
41+ fi
42+
3943if [ ! -z ${GG_BUILD_CUDA} ]; then
4044 CMAKE_EXTRA=" ${CMAKE_EXTRA} -DGGML_CUDA=ON"
45+
46+ if command -v nvidia-smi > /dev/null 2>&1 ; then
47+ CUDA_ARCH=$( nvidia-smi --query-gpu=compute_cap --format=csv,noheader,nounits 2> /dev/null | head -1 | tr -d ' .' )
48+ if [[ -n " $CUDA_ARCH " && " $CUDA_ARCH " =~ ^[0-9]+$ ]]; then
49+ CMAKE_EXTRA=" ${CMAKE_EXTRA} -DCMAKE_CUDA_ARCHITECTURES=${CUDA_ARCH} "
50+ else
51+ echo " Warning: Using fallback CUDA architectures"
52+ CMAKE_EXTRA=" ${CMAKE_EXTRA} -DCMAKE_CUDA_ARCHITECTURES=61;70;75;80;86;89"
53+ fi
54+ else
55+ echo " Error: nvidia-smi not found, cannot build with CUDA"
56+ exit 1
57+ fi
4158fi
4259
43- if [ ! -z ${GG_BUILD_METAL} ]; then
44- # TODO: this should use -DGGML_METAL_SHADER_DEBUG=ON instead, but currently it fails because
45- # the binaries cannot locate default.metallib eventhough it is in bin/. cannot figure out
46- # why this is happening, so temporary workaround is to use -DGGML_METAL_EMBED_LIBRARY=ON
47- CMAKE_EXTRA=" ${CMAKE_EXTRA} -DGGML_METAL=ON -DGGML_METAL_EMBED_LIBRARY=ON"
60+ if [ ! -z ${GG_BUILD_ROCM} ]; then
61+ CMAKE_EXTRA=" ${CMAKE_EXTRA} -DGGML_HIP=ON"
62+ if [ -z ${GG_BUILD_AMDGPU_TARGETS} ]; then
63+ echo " Missing GG_BUILD_AMDGPU_TARGETS, please set it to your GPU architecture (e.g. gfx90a, gfx1100, etc.)"
64+ exit 1
65+ fi
66+
67+ CMAKE_EXTRA=" ${CMAKE_EXTRA} -DAMDGPU_TARGETS=${GG_BUILD_AMDGPU_TARGETS} "
4868fi
4969
5070if [ ! -z ${GG_BUILD_SYCL} ]; then
@@ -53,13 +73,40 @@ if [ ! -z ${GG_BUILD_SYCL} ]; then
5373 echo " source /opt/intel/oneapi/setvars.sh"
5474 exit 1
5575 fi
76+ # Use only main GPU
5677 export ONEAPI_DEVICE_SELECTOR=" level_zero:0"
78+ # Enable sysman for correct memory reporting
5779 export ZES_ENABLE_SYSMAN=1
58- # No plan to implement backward pass for now / disable test-opt
59- CTEST_EXTRA =" -E test-opt "
80+ # to circumvent precision issues on CPY operations
81+ export SYCL_PROGRAM_COMPILE_OPTIONS =" -cl-fp32-correctly-rounded-divide-sqrt "
6082 CMAKE_EXTRA=" ${CMAKE_EXTRA} -DGGML_SYCL=1 -DCMAKE_C_COMPILER=icx -DCMAKE_CXX_COMPILER=icpx -DGGML_SYCL_F16=ON"
6183fi
6284
85+ if [ ! -z ${GG_BUILD_VULKAN} ]; then
86+ CMAKE_EXTRA=" ${CMAKE_EXTRA} -DGGML_VULKAN=1"
87+
88+ # if on Mac, disable METAL
89+ if [[ " $OSTYPE " == " darwin" * ]]; then
90+ CMAKE_EXTRA=" ${CMAKE_EXTRA} -DGGML_METAL=OFF -DGGML_BLAS=OFF"
91+ fi
92+
93+ fi
94+
95+ if [ ! -z ${GG_BUILD_WEBGPU} ]; then
96+ CMAKE_EXTRA=" ${CMAKE_EXTRA} -DGGML_WEBGPU=1"
97+ fi
98+
99+ if [ ! -z ${GG_BUILD_MUSA} ]; then
100+ # Use qy1 by default (MTT S80)
101+ MUSA_ARCH=${MUSA_ARCH:- 21}
102+ CMAKE_EXTRA=" ${CMAKE_EXTRA} -DGGML_MUSA=ON -DMUSA_ARCHITECTURES=${MUSA_ARCH} "
103+ fi
104+
105+ if [ ! -z ${GG_BUILD_NO_SVE} ]; then
106+ # arm 9 and newer enables sve by default, adjust these flags depending on the cpu used
107+ CMAKE_EXTRA=" ${CMAKE_EXTRA} -DGGML_NATIVE=OFF -DGGML_CPU_ARM_ARCH=armv8.5-a+fp16+i8mm"
108+ fi
109+
63110# # helpers
64111
65112# download a file if it does not exist or if it is outdated
@@ -112,13 +159,9 @@ function gg_run_ctest_debug {
112159 set -e
113160
114161 (time cmake -DCMAKE_BUILD_TYPE=Debug ${CMAKE_EXTRA} .. ) 2>&1 | tee -a $OUT /${ci} -cmake.log
115- (time make -j ) 2>&1 | tee -a $OUT /${ci} -make.log
116-
117- if [ ! -z ${GG_BUILD_METAL} ]; then
118- export GGML_METAL_PATH_RESOURCES=" $( pwd) /bin"
119- fi
162+ (time make -j$( nproc) ) 2>&1 | tee -a $OUT /${ci} -make.log
120163
121- (time ctest ${CTEST_EXTRA} --output-on-failure -E test-opt ) 2>&1 | tee -a $OUT /${ci} -ctest.log
164+ (time ctest ${CTEST_EXTRA} --output-on-failure -E " test-opt|test-backend-ops " ) 2>&1 | tee -a $OUT /${ci} -ctest.log
122165
123166 set +e
124167}
@@ -144,11 +187,7 @@ function gg_run_ctest_release {
144187 set -e
145188
146189 (time cmake -DCMAKE_BUILD_TYPE=Release ${CMAKE_EXTRA} .. ) 2>&1 | tee -a $OUT /${ci} -cmake.log
147- (time make -j ) 2>&1 | tee -a $OUT /${ci} -make.log
148-
149- if [ ! -z ${GG_BUILD_METAL} ]; then
150- export GGML_METAL_PATH_RESOURCES=" $( pwd) /bin"
151- fi
190+ (time make -j$( nproc) ) 2>&1 | tee -a $OUT /${ci} -make.log
152191
153192 if [ -z $GG_BUILD_LOW_PERF ]; then
154193 (time ctest ${CTEST_EXTRA} --output-on-failure ) 2>&1 | tee -a $OUT /${ci} -ctest.log
@@ -316,7 +355,7 @@ function gg_sum_yolo {
316355
317356# # main
318357
319- if [ -z ${GG_BUILD_LOW_PERF} ] ; then
358+ if true ; then
320359 # Create symlink: ./ggml/models-mnt -> $MNT/models/models-mnt
321360 rm -rf ${SRC} /models-mnt
322361 mnt_models=${MNT} /models
335374
336375
337376ret=0
338- if [ -z ${GG_BUILD_SYCL} ]; then
339- test $ret -eq 0 && gg_run ctest_debug
340- fi
377+ test $ret -eq 0 && gg_run ctest_debug
341378test $ret -eq 0 && gg_run ctest_release
342379
343- if [ ! -z ${GG_BUILD_METAL} ]; then
344- export GGML_METAL_PATH_RESOURCES=" ${SRC} /build-ci-release/bin"
345- fi
346-
347- if [ -z ${GG_BUILD_NO_DOWNLOAD} ]; then
348- test $ret -eq 0 && gg_run gpt_2
349- # test $ret -eq 0 && gg_run mnist
350- test $ret -eq 0 && gg_run sam
351- test $ret -eq 0 && gg_run yolo
352- fi
380+ test $ret -eq 0 && gg_run gpt_2
381+ # test $ret -eq 0 && gg_run mnist
382+ test $ret -eq 0 && gg_run sam
383+ test $ret -eq 0 && gg_run yolo
353384
354385if [ -z $GG_BUILD_LOW_PERF ]; then
355- if [ -z ${GG_BUILD_VRAM_GB} ] || [ ${GG_BUILD_VRAM_GB} -ge 16 ]; then
356- # run tests that require GPU with at least 16GB of VRAM
357- date
358- fi
386+ # run tests meant for low-perf runners
387+ date
359388fi
360389
361390exit $ret
0 commit comments