@ -5,6 +5,12 @@
# include <fstream>
# include <fstream>
# include <regex>
# include <regex>
# if defined(_MSC_VER) || defined(__MINGW32__)
# include <malloc.h> // using malloc.h with MSC/MINGW
# elif !defined(__FreeBSD__)
# include <alloca.h>
# endif
bool gpt_params_parse ( int argc , char * * argv , gpt_params & params ) {
bool gpt_params_parse ( int argc , char * * argv , gpt_params & params ) {
for ( int i = 1 ; i < argc ; i + + ) {
for ( int i = 1 ; i < argc ; i + + ) {
std : : string arg = argv [ i ] ;
std : : string arg = argv [ i ] ;
@ -472,7 +478,8 @@ size_t ggml_quantize_q4_0(float * src, void * dst, int n, int k, int qk, int64_t
assert ( k % qk = = 0 ) ;
assert ( k % qk = = 0 ) ;
uint8_t pp [ qk / 2 ] ;
const size_t pp_size = qk / 2 ;
uint8_t * pp = static_cast < uint8_t * > ( alloca ( pp_size ) ) ;
char * pdst = ( char * ) dst ;
char * pdst = ( char * ) dst ;
@ -511,7 +518,7 @@ size_t ggml_quantize_q4_0(float * src, void * dst, int n, int k, int qk, int64_t
pp [ l / 2 ] = vi0 | ( vi1 < < 4 ) ;
pp [ l / 2 ] = vi0 | ( vi1 < < 4 ) ;
}
}
memcpy ( pb , pp , sizeof ( pp ) ) ;
memcpy ( pb , pp , pp_size ) ;
pb + = bs ;
pb + = bs ;
}
}
}
}
@ -526,7 +533,8 @@ size_t ggml_quantize_q4_1(float * src, void * dst, int n, int k, int qk, int64_t
assert ( k % qk = = 0 ) ;
assert ( k % qk = = 0 ) ;
uint8_t pp [ qk / 2 ] ;
const size_t pp_size = qk / 2 ;
uint8_t * pp = static_cast < uint8_t * > ( alloca ( pp_size ) ) ;
char * pdst = ( char * ) dst ;
char * pdst = ( char * ) dst ;
@ -570,7 +578,7 @@ size_t ggml_quantize_q4_1(float * src, void * dst, int n, int k, int qk, int64_t
pp [ l / 2 ] = vi0 | ( vi1 < < 4 ) ;
pp [ l / 2 ] = vi0 | ( vi1 < < 4 ) ;
}
}
memcpy ( pb + i * qk / 2 , pp , sizeof ( pp ) ) ;
memcpy ( pb + i * qk / 2 , pp , pp_size ) ;
}
}
}
}
}
}