Spaces:
Sleeping
Sleeping
R0CKSTAR commited on
Commit ·
e84b4f5
1
Parent(s): 50395aa
mtgpu: enable VMM (llama/9597)
Browse filesSigned-off-by: Xiaodong Ye <xiaodong.ye@mthreads.com>
- ggml/src/ggml-cuda.cu +6 -6
ggml/src/ggml-cuda.cu
CHANGED
|
@@ -187,7 +187,7 @@ static ggml_cuda_device_info ggml_cuda_init() {
|
|
| 187 |
for (int id = 0; id < info.device_count; ++id) {
|
| 188 |
int device_vmm = 0;
|
| 189 |
|
| 190 |
-
#if !defined(GGML_USE_HIPBLAS) && !defined(GGML_CUDA_NO_VMM)
|
| 191 |
CUdevice device;
|
| 192 |
CU_CHECK(cuDeviceGet(&device, id));
|
| 193 |
CU_CHECK(cuDeviceGetAttribute(&device_vmm, CU_DEVICE_ATTRIBUTE_VIRTUAL_MEMORY_MANAGEMENT_SUPPORTED, device));
|
|
@@ -199,7 +199,7 @@ static ggml_cuda_device_info ggml_cuda_init() {
|
|
| 199 |
alloc_prop.location.id = id;
|
| 200 |
CU_CHECK(cuMemGetAllocationGranularity(&info.devices[id].vmm_granularity, &alloc_prop, CU_MEM_ALLOC_GRANULARITY_RECOMMENDED));
|
| 201 |
}
|
| 202 |
-
#endif // !defined(GGML_USE_HIPBLAS) && !defined(GGML_CUDA_NO_VMM)
|
| 203 |
info.devices[id].vmm = !!device_vmm;
|
| 204 |
|
| 205 |
cudaDeviceProp prop;
|
|
@@ -335,7 +335,7 @@ struct ggml_cuda_pool_leg : public ggml_cuda_pool {
|
|
| 335 |
};
|
| 336 |
|
| 337 |
// pool with virtual memory
|
| 338 |
-
#if !defined(GGML_USE_HIPBLAS) && !defined(GGML_CUDA_NO_VMM)
|
| 339 |
struct ggml_cuda_pool_vmm : public ggml_cuda_pool {
|
| 340 |
static const size_t CUDA_POOL_VMM_MAX_SIZE = 1ull << 35; // 32 GB
|
| 341 |
|
|
@@ -429,14 +429,14 @@ struct ggml_cuda_pool_vmm : public ggml_cuda_pool {
|
|
| 429 |
GGML_ASSERT(ptr == (void *) (pool_addr + pool_used));
|
| 430 |
}
|
| 431 |
};
|
| 432 |
-
#endif // !defined(GGML_USE_HIPBLAS) && !defined(GGML_CUDA_NO_VMM)
|
| 433 |
|
| 434 |
std::unique_ptr<ggml_cuda_pool> ggml_backend_cuda_context::new_pool_for_device(int device) {
|
| 435 |
-
#if !defined(GGML_USE_HIPBLAS) && !defined(GGML_CUDA_NO_VMM)
|
| 436 |
if (ggml_cuda_info().devices[device].vmm) {
|
| 437 |
return std::unique_ptr<ggml_cuda_pool>(new ggml_cuda_pool_vmm(device));
|
| 438 |
}
|
| 439 |
-
#endif // !defined(GGML_USE_HIPBLAS) && !defined(GGML_CUDA_NO_VMM)
|
| 440 |
return std::unique_ptr<ggml_cuda_pool>(new ggml_cuda_pool_leg(device));
|
| 441 |
}
|
| 442 |
|
|
|
|
| 187 |
for (int id = 0; id < info.device_count; ++id) {
|
| 188 |
int device_vmm = 0;
|
| 189 |
|
| 190 |
+
#if !defined(GGML_USE_HIPBLAS) && !defined(GGML_CUDA_NO_VMM)
|
| 191 |
CUdevice device;
|
| 192 |
CU_CHECK(cuDeviceGet(&device, id));
|
| 193 |
CU_CHECK(cuDeviceGetAttribute(&device_vmm, CU_DEVICE_ATTRIBUTE_VIRTUAL_MEMORY_MANAGEMENT_SUPPORTED, device));
|
|
|
|
| 199 |
alloc_prop.location.id = id;
|
| 200 |
CU_CHECK(cuMemGetAllocationGranularity(&info.devices[id].vmm_granularity, &alloc_prop, CU_MEM_ALLOC_GRANULARITY_RECOMMENDED));
|
| 201 |
}
|
| 202 |
+
#endif // !defined(GGML_USE_HIPBLAS) && !defined(GGML_CUDA_NO_VMM)
|
| 203 |
info.devices[id].vmm = !!device_vmm;
|
| 204 |
|
| 205 |
cudaDeviceProp prop;
|
|
|
|
| 335 |
};
|
| 336 |
|
| 337 |
// pool with virtual memory
|
| 338 |
+
#if !defined(GGML_USE_HIPBLAS) && !defined(GGML_CUDA_NO_VMM)
|
| 339 |
struct ggml_cuda_pool_vmm : public ggml_cuda_pool {
|
| 340 |
static const size_t CUDA_POOL_VMM_MAX_SIZE = 1ull << 35; // 32 GB
|
| 341 |
|
|
|
|
| 429 |
GGML_ASSERT(ptr == (void *) (pool_addr + pool_used));
|
| 430 |
}
|
| 431 |
};
|
| 432 |
+
#endif // !defined(GGML_USE_HIPBLAS) && !defined(GGML_CUDA_NO_VMM)
|
| 433 |
|
| 434 |
std::unique_ptr<ggml_cuda_pool> ggml_backend_cuda_context::new_pool_for_device(int device) {
|
| 435 |
+
#if !defined(GGML_USE_HIPBLAS) && !defined(GGML_CUDA_NO_VMM)
|
| 436 |
if (ggml_cuda_info().devices[device].vmm) {
|
| 437 |
return std::unique_ptr<ggml_cuda_pool>(new ggml_cuda_pool_vmm(device));
|
| 438 |
}
|
| 439 |
+
#endif // !defined(GGML_USE_HIPBLAS) && !defined(GGML_CUDA_NO_VMM)
|
| 440 |
return std::unique_ptr<ggml_cuda_pool>(new ggml_cuda_pool_leg(device));
|
| 441 |
}
|
| 442 |
|