Skip to content

Commit ad755d8

Browse files
IMbackKmglambda
authored andcommitted
Hip: disable VMM on hip as it seams that it dosent work in some configurations (ggml-org#11420)
1 parent 999cf19 commit ad755d8

File tree

4 files changed

+14
-9
lines changed

4 files changed

+14
-9
lines changed

ggml/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ option(GGML_CUDA_GRAPHS "ggml: use CUDA graphs (llama.cpp on
155155

156156
option(GGML_HIP "ggml: use HIP" OFF)
157157
option(GGML_HIP_GRAPHS "ggml: use HIP graph, experimental, slow" OFF)
158+
option(GGML_HIP_NO_VMM "ggml: do not try to use HIP VMM" ON)
158159
option(GGML_HIP_UMA "ggml: use HIP unified memory architecture" OFF)
159160
option(GGML_VULKAN "ggml: use Vulkan" OFF)
160161
option(GGML_VULKAN_CHECK_RESULTS "ggml: run Vulkan op checks" OFF)

ggml/src/ggml-cuda/common.cuh

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,10 @@ typedef float dfloat; // dequantize float
131131
typedef float2 dfloat2;
132132
#endif // GGML_CUDA_F16
133133

134+
#if (!defined(GGML_USE_HIP) && !defined(GGML_CUDA_NO_VMM)) || (defined(GGML_USE_HIP) && !defined(GGML_HIP_NO_VMM))
135+
#define GGML_USE_VMM
136+
#endif // (!defined(GGML_USE_HIP) && !defined(GGML_CUDA_NO_VMM)) || (defined(GGML_USE_HIP) && !defined(GGML_HIP_NO_VMM))
137+
134138
#if (defined(GGML_USE_HIP) && defined(__HIP_PLATFORM_AMD__)) || __CUDA_ARCH__ >= GGML_CUDA_CC_PASCAL
135139
#define FP16_AVAILABLE
136140
#endif // (defined(GGML_USE_HIP) && defined(__HIP_PLATFORM_AMD__)) || __CUDA_ARCH__ >= GGML_CUDA_CC_PASCAL

ggml/src/ggml-cuda/ggml-cuda.cu

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ static ggml_cuda_device_info ggml_cuda_init() {
152152
for (int id = 0; id < info.device_count; ++id) {
153153
int device_vmm = 0;
154154

155-
#if !defined(GGML_CUDA_NO_VMM)
155+
#if defined(GGML_USE_VMM)
156156
CUdevice device;
157157
CU_CHECK(cuDeviceGet(&device, id));
158158
CU_CHECK(cuDeviceGetAttribute(&device_vmm, CU_DEVICE_ATTRIBUTE_VIRTUAL_MEMORY_MANAGEMENT_SUPPORTED, device));
@@ -164,7 +164,7 @@ static ggml_cuda_device_info ggml_cuda_init() {
164164
alloc_prop.location.id = id;
165165
CU_CHECK(cuMemGetAllocationGranularity(&info.devices[id].vmm_granularity, &alloc_prop, CU_MEM_ALLOC_GRANULARITY_RECOMMENDED));
166166
}
167-
#endif // !defined(GGML_CUDA_NO_VMM)
167+
#endif // defined(GGML_USE_VMM)
168168
info.devices[id].vmm = !!device_vmm;
169169

170170
cudaDeviceProp prop;
@@ -300,7 +300,7 @@ struct ggml_cuda_pool_leg : public ggml_cuda_pool {
300300
};
301301

302302
// pool with virtual memory
303-
#if !defined(GGML_CUDA_NO_VMM)
303+
#if defined(GGML_USE_VMM)
304304
struct ggml_cuda_pool_vmm : public ggml_cuda_pool {
305305
static const size_t CUDA_POOL_VMM_MAX_SIZE = 1ull << 35; // 32 GB
306306

@@ -408,14 +408,14 @@ struct ggml_cuda_pool_vmm : public ggml_cuda_pool {
408408
GGML_ASSERT(ptr == (void *) ((char *)(pool_addr) + pool_used));
409409
}
410410
};
411-
#endif // !defined(GGML_CUDA_NO_VMM)
411+
#endif // defined(GGML_USE_VMM)
412412

413413
std::unique_ptr<ggml_cuda_pool> ggml_backend_cuda_context::new_pool_for_device(int device) {
414-
#if !defined(GGML_CUDA_NO_VMM)
414+
#if defined(GGML_USE_VMM)
415415
if (ggml_cuda_info().devices[device].vmm) {
416416
return std::unique_ptr<ggml_cuda_pool>(new ggml_cuda_pool_vmm(device));
417417
}
418-
#endif // !defined(GGML_CUDA_NO_VMM)
418+
#endif // defined(GGML_USE_VMM)
419419
return std::unique_ptr<ggml_cuda_pool>(new ggml_cuda_pool_leg(device));
420420
}
421421

@@ -3250,7 +3250,7 @@ static ggml_backend_feature * ggml_backend_cuda_get_features(ggml_backend_reg_t
32503250
features.push_back({ "FORCE_CUBLAS", "1" });
32513251
#endif
32523252

3253-
#ifdef GGML_CUDA_NO_VMM
3253+
#ifndef GGML_USE_VMM
32543254
features.push_back({ "NO_VMM", "1" });
32553255
#endif
32563256

ggml/src/ggml-hip/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,8 @@ if (GGML_HIP_GRAPHS)
9696
add_compile_definitions(GGML_HIP_GRAPHS)
9797
endif()
9898

99-
if (GGML_CUDA_NO_VMM)
100-
add_compile_definitions(GGML_CUDA_NO_VMM)
99+
if (GGML_HIP_NO_VMM)
100+
add_compile_definitions(GGML_HIP_NO_VMM)
101101
endif()
102102

103103
if (CXX_IS_HIPCC)

0 commit comments

Comments
 (0)