|
14 | 14 | #include <iostream> |
15 | 15 | #include <algorithm> |
16 | 16 |
|
17 | | -#ifdef GGML_USE_CUDA |
18 | | -#include "ggml_v3-cuda.h" |
19 | | -#endif |
20 | | -#if defined(GGML_USE_CLBLAST) |
21 | | -#include "ggml_v3-opencl.h" |
22 | | -#endif |
| 17 | +#include "kcpp_backend.h" |
23 | 18 |
|
24 | 19 | // load the model's weights from a file |
25 | 20 | ModelLoadResult gpt_neox_model_load(const std::string & fname, gpt_neox_model & model, gpt_vocab & vocab, FileFormat file_format, int gpulayers) { |
@@ -329,42 +324,27 @@ ModelLoadResult gpt_neox_model_load(const std::string & fname, gpt_neox_model & |
329 | 324 | fin.close(); |
330 | 325 |
|
331 | 326 | //gpu offload |
332 | | - #if defined(GGML_USE_CLBLAST) || defined(GGML_USE_CUDA) |
| 327 | + if (kcpp_backend_check(KCPP_BACKENDS_USE_CUDA)) { |
333 | 328 | if(gpulayers>0) |
334 | 329 | { |
335 | 330 | const auto & hparams = model.hparams; |
336 | 331 | size_t vram_total = 0; |
337 | 332 | const int n_gpu = std::min(gpulayers, int(hparams.n_layer)); |
338 | | - #if defined(GGML_USE_CLBLAST) |
339 | | - fprintf(stderr, "%s: [opencl] offloading %d layers to GPU\n", __func__, n_gpu); |
340 | | - #else |
341 | 333 | fprintf(stderr, "%s: [CUDA] offloading %d layers to GPU\n", __func__, n_gpu); |
342 | | - #endif |
343 | 334 | for (int i = 0; i < n_gpu; ++i) { |
344 | 335 | const auto & layer = model.layers[i]; |
345 | 336 | layer.c_attn_attn_w->backend = GGML_V3_BACKEND_GPU; |
346 | 337 | layer.c_attn_proj_w->backend = GGML_V3_BACKEND_GPU; |
347 | 338 | layer.c_mlp_fc_w->backend = GGML_V3_BACKEND_GPU; |
348 | 339 | layer.c_mlp_proj_w->backend = GGML_V3_BACKEND_GPU; |
349 | | - #if defined(GGML_USE_CLBLAST) |
350 | | - ggml_v3_cl_transform_tensor(layer.c_attn_attn_w->data,layer.c_attn_attn_w); vram_total += ggml_v3_nbytes(layer.c_attn_attn_w); |
351 | | - ggml_v3_cl_transform_tensor(layer.c_attn_proj_w->data,layer.c_attn_proj_w); vram_total += ggml_v3_nbytes(layer.c_attn_proj_w); |
352 | | - ggml_v3_cl_transform_tensor(layer.c_mlp_fc_w->data,layer.c_mlp_fc_w); vram_total += ggml_v3_nbytes(layer.c_mlp_fc_w); |
353 | | - ggml_v3_cl_transform_tensor(layer.c_mlp_proj_w->data,layer.c_mlp_proj_w); vram_total += ggml_v3_nbytes(layer.c_mlp_proj_w); |
354 | | - #else |
355 | | - ggml_v3_cuda_transform_tensor(layer.c_attn_attn_w->data,layer.c_attn_attn_w); vram_total += ggml_v3_nbytes(layer.c_attn_attn_w); |
356 | | - ggml_v3_cuda_transform_tensor(layer.c_attn_proj_w->data,layer.c_attn_proj_w); vram_total += ggml_v3_nbytes(layer.c_attn_proj_w); |
357 | | - ggml_v3_cuda_transform_tensor(layer.c_mlp_fc_w->data,layer.c_mlp_fc_w); vram_total += ggml_v3_nbytes(layer.c_mlp_fc_w); |
358 | | - ggml_v3_cuda_transform_tensor(layer.c_mlp_proj_w->data,layer.c_mlp_proj_w); vram_total += ggml_v3_nbytes(layer.c_mlp_proj_w); |
359 | | - #endif |
| 340 | + kcpp_backend_cuda_ggmlv3_transform_tensor(layer.c_attn_attn_w->data,layer.c_attn_attn_w); vram_total += ggml_v3_nbytes(layer.c_attn_attn_w); |
| 341 | + kcpp_backend_cuda_ggmlv3_transform_tensor(layer.c_attn_proj_w->data,layer.c_attn_proj_w); vram_total += ggml_v3_nbytes(layer.c_attn_proj_w); |
| 342 | + kcpp_backend_cuda_ggmlv3_transform_tensor(layer.c_mlp_fc_w->data,layer.c_mlp_fc_w); vram_total += ggml_v3_nbytes(layer.c_mlp_fc_w); |
| 343 | + kcpp_backend_cuda_ggmlv3_transform_tensor(layer.c_mlp_proj_w->data,layer.c_mlp_proj_w); vram_total += ggml_v3_nbytes(layer.c_mlp_proj_w); |
360 | 344 | } |
361 | | - #if defined(GGML_USE_CLBLAST) |
362 | | - fprintf(stderr, "%s: [opencl] total VRAM used: %zu MB\n", __func__, vram_total / 1024 / 1024); |
363 | | - #else |
364 | | - fprintf(stderr, "%s: [CUDA] total VRAM used: %zu MB\n", __func__, vram_total / 1024 / 1024); |
365 | | - #endif |
| 345 | + fprintf(stderr, "%s: [CUDA] total VRAM used: %zu MB\n", __func__, vram_total / 1024 / 1024); |
| 346 | + } |
366 | 347 | } |
367 | | - #endif |
368 | 348 |
|
369 | 349 | return ModelLoadResult::SUCCESS; |
370 | 350 | } |
|
0 commit comments