Skip to content

Commit 3b20e78

Browse files
committed
Change the use of vector for stack allocations.
1 parent c505a2d commit 3b20e78

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

utils.cpp

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@
55
#include <fstream>
66
#include <regex>
77

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+
814
bool gpt_params_parse(int argc, char ** argv, gpt_params & params) {
915
for (int i = 1; i < argc; i++) {
1016
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
453459

454460
assert(k % qk == 0);
455461

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));
458464

459465
char * pdst = (char *) dst;
460466

@@ -493,7 +499,7 @@ size_t ggml_quantize_q4_0(float * src, void * dst, int n, int k, int qk, int64_t
493499
pp[l/2] = vi0 | (vi1 << 4);
494500
}
495501

496-
memcpy(pb, pp.data(), pp.size());
502+
memcpy(pb, pp, pp_size);
497503
pb += bs;
498504
}
499505
}
@@ -508,8 +514,8 @@ size_t ggml_quantize_q4_1(float * src, void * dst, int n, int k, int qk, int64_t
508514

509515
assert(k % qk == 0);
510516

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));
513519

514520
char * pdst = (char *) dst;
515521

@@ -553,7 +559,7 @@ size_t ggml_quantize_q4_1(float * src, void * dst, int n, int k, int qk, int64_t
553559
pp[l/2] = vi0 | (vi1 << 4);
554560
}
555561

556-
memcpy(pb + i*qk/2, pp.data(), pp.size());
562+
memcpy(pb + i*qk/2, pp, pp_size);
557563
}
558564
}
559565
}

0 commit comments

Comments
 (0)