R0CKSTAR commited on
Commit
e84b4f5
·
1 Parent(s): 50395aa

mtgpu: enable VMM (llama/9597)

Browse files

Signed-off-by: Xiaodong Ye <xiaodong.ye@mthreads.com>

Files changed (1) hide show
  1. 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) && !defined(GGML_USE_MUSA)
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) && !defined(GGML_USE_MUSA)
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) && !defined(GGML_USE_MUSA)
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) && !defined(GGML_USE_MUSA)
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) && !defined(GGML_USE_MUSA)
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) && !defined(GGML_USE_MUSA)
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