5
5
#include < fstream>
6
6
#include < regex>
7
7
8
+ #if defined(_MSC_VER) || defined(__MINGW32__)
9
+ #include < malloc.h> // using malloc.h with MSC/MINGW
10
+ #elif !defined(__FreeBSD__)
11
+ #include < alloca.h>
12
+ #endif
13
+
8
14
bool gpt_params_parse (int argc, char ** argv, gpt_params & params) {
9
15
for (int i = 1 ; i < argc; i++) {
10
16
std::string arg = argv[i];
@@ -453,8 +459,8 @@ size_t ggml_quantize_q4_0(float * src, void * dst, int n, int k, int qk, int64_t
453
459
454
460
assert (k % qk == 0 );
455
461
456
- std::vector< uint8_t > pp ;
457
- pp. reserve (qk/ 2 );
462
+ const size_t pp_size = qk / 2 ;
463
+ uint8_t *pp = static_cast < uint8_t *>( alloca (pp_size) );
458
464
459
465
char * pdst = (char *) dst;
460
466
@@ -493,7 +499,7 @@ size_t ggml_quantize_q4_0(float * src, void * dst, int n, int k, int qk, int64_t
493
499
pp[l/2 ] = vi0 | (vi1 << 4 );
494
500
}
495
501
496
- memcpy (pb, pp. data (), pp. size () );
502
+ memcpy (pb, pp, pp_size );
497
503
pb += bs;
498
504
}
499
505
}
@@ -508,8 +514,8 @@ size_t ggml_quantize_q4_1(float * src, void * dst, int n, int k, int qk, int64_t
508
514
509
515
assert (k % qk == 0 );
510
516
511
- std::vector< uint8_t > pp ;
512
- pp. reserve (qk/ 2 );
517
+ const size_t pp_size = qk / 2 ;
518
+ uint8_t *pp = static_cast < uint8_t *>( alloca (pp_size) );
513
519
514
520
char * pdst = (char *) dst;
515
521
@@ -553,7 +559,7 @@ size_t ggml_quantize_q4_1(float * src, void * dst, int n, int k, int qk, int64_t
553
559
pp[l/2 ] = vi0 | (vi1 << 4 );
554
560
}
555
561
556
- memcpy (pb + i*qk/2 , pp. data (), pp. size () );
562
+ memcpy (pb + i*qk/2 , pp, pp_size );
557
563
}
558
564
}
559
565
}
0 commit comments