nvidia-smi
GG_BUILD_CUDA=1 bash ./ci/run.sh ~/results/llama.cpp ~/mnt/llama.cpp
+ gpu-rocm:
+ runs-on: [self-hosted, Linux, AMD]
+
+ steps:
+ - name: Clone
+ id: checkout
+ uses: actions/checkout@v6
+
+ - name: Test
+ id: ggml-ci
+ # HIP_LAUNCH_BLOCKING=1: workaround for an async-execution correctness
+ # issue on integrated RDNA3.5 (gfx1151) where batched inference returns
+ # incorrect output (perplexity ~88 vs ~9.4). Serializing kernel launches
+ # restores correctness. Remove once the underlying ROCm/HIP issue is fixed.
+ env:
+ HIP_LAUNCH_BLOCKING: "1"
+ run: |
+ rocminfo
+ GG_BUILD_ROCM=1 GG_BUILD_AMDGPU_TARGETS=gfx1151 bash ./ci/run.sh ~/results/llama.cpp ~/mnt/llama.cpp
+
gpu-vulkan-nvidia-cm:
runs-on: [self-hosted, Linux, NVIDIA]
# # with CUDA support
# GG_BUILD_CUDA=1 bash ./ci/run.sh ./tmp/results ./tmp/mnt
#
+# # with ROCm support
+# GG_BUILD_ROCM=1 GG_BUILD_AMDGPU_TARGETS=gfx1151 bash ./ci/run.sh ./tmp/results ./tmp/mnt
+#
# # with SYCL support
# GG_BUILD_SYCL=1 bash ./ci/run.sh ./tmp/results ./tmp/mnt
#
fi
if [ ! -z ${GG_BUILD_ROCM} ]; then
- CMAKE_EXTRA="${CMAKE_EXTRA} -DGGML_HIP=ON"
+ CMAKE_EXTRA="${CMAKE_EXTRA} -DCMAKE_HIP_COMPILER=$(hipconfig -l)/clang -DGGML_HIP=ON -DGGML_HIP_ROCWMMA_FATTN=ON"
if [ -z ${GG_BUILD_AMDGPU_TARGETS} ]; then
echo "Missing GG_BUILD_AMDGPU_TARGETS, please set it to your GPU architecture (e.g. gfx90a, gfx1100, etc.)"
exit 1
continue;
}
#ifndef NDEBUG
- assert(node->buffer->buft == ggml_backend_cuda_buffer_type(cuda_ctx->device));
+ // On integrated GPUs (APUs, e.g. RDNA3.5) the scheduler may place a
+ // node's output on the host-visible buffer, which the compute path
+ // handles. Allow that here, mirroring the src-tensor check below.
+ assert(node->buffer->buft == ggml_backend_cuda_buffer_type(cuda_ctx->device) ||
+ (integrated && ggml_backend_buft_is_cuda_host(node->buffer->buft)));
for (int j = 0; j < GGML_MAX_SRC; j++) {
if (node->src[j] != nullptr) {
assert(node->src[j]->buffer);
}
} else {
for (const auto & test : BACKEND_TESTS) {
- if (test.enabled_by_default) {
- selected.push_back(&test);
+ if (!test.enabled_by_default) {
+ continue;
+ }
+#ifdef GGML_USE_HIP
+ // TODO: remove this when https://github.com/ggml-org/llama.cpp/pull/26592 is merged
+ if (test.name == "penalties" || test.name == "set_sampler" ||
+ test.name == "mixed" || test.name == "top_p") {
+ fprintf(stderr, "Skipping test '%s' on HIP backend (no backend TOP_K support)\n", test.name.c_str());
+ continue;
}
+#endif // GGML_USE_HIP
+ selected.push_back(&test);
}
}
}
#endif // GGML_USE_WEBGPU
+ // FIXME: jamba produces incorrect output (~0.55 NMSE vs CPU) on the HIP
+ // backend on RDNA3.5 (gfx1151); the SSM kernels need investigation.
+#ifdef GGML_USE_HIP
+ if (arch == LLM_ARCH_JAMBA) {
+ return false;
+ }
+#endif // GGML_USE_HIP
+
return true;
}