Merge branch 'master' into concedo_experimental
This commit is contained in:
commit
d1824f1e88
3 changed files with 55 additions and 23 deletions
|
@ -578,6 +578,37 @@ void console_set_color(console_state & con_st, console_color_t color) {
|
||||||
}
|
}
|
||||||
|
|
||||||
char32_t getchar32() {
|
char32_t getchar32() {
|
||||||
|
#if defined(_WIN32)
|
||||||
|
HANDLE hConsole = GetStdHandle(STD_INPUT_HANDLE);
|
||||||
|
wchar_t high_surrogate = 0;
|
||||||
|
|
||||||
|
while (true) {
|
||||||
|
INPUT_RECORD record;
|
||||||
|
DWORD count;
|
||||||
|
if (!ReadConsoleInputW(hConsole, &record, 1, &count) || count == 0) {
|
||||||
|
return WEOF;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (record.EventType == KEY_EVENT && record.Event.KeyEvent.bKeyDown) {
|
||||||
|
wchar_t wc = record.Event.KeyEvent.uChar.UnicodeChar;
|
||||||
|
if (wc == 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((wc >= 0xD800) && (wc <= 0xDBFF)) { // Check if wc is a high surrogate
|
||||||
|
high_surrogate = wc;
|
||||||
|
continue;
|
||||||
|
} else if ((wc >= 0xDC00) && (wc <= 0xDFFF)) { // Check if wc is a low surrogate
|
||||||
|
if (high_surrogate != 0) { // Check if we have a high surrogate
|
||||||
|
return ((high_surrogate - 0xD800) << 10) + (wc - 0xDC00) + 0x10000;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
high_surrogate = 0; // Reset the high surrogate
|
||||||
|
return static_cast<char32_t>(wc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#else
|
||||||
wchar_t wc = getwchar();
|
wchar_t wc = getwchar();
|
||||||
if (static_cast<wint_t>(wc) == WEOF) {
|
if (static_cast<wint_t>(wc) == WEOF) {
|
||||||
return WEOF;
|
return WEOF;
|
||||||
|
@ -596,6 +627,7 @@ char32_t getchar32() {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return static_cast<char32_t>(wc);
|
return static_cast<char32_t>(wc);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void pop_cursor(console_state & con_st) {
|
void pop_cursor(console_state & con_st) {
|
||||||
|
|
6
ggml.c
6
ggml.c
|
@ -512,7 +512,7 @@ static inline int hsum_i32_4(const __m128i a) {
|
||||||
return _mm_cvtsi128_si32(_mm_add_epi32(sum64, hi32));
|
return _mm_cvtsi128_si32(_mm_add_epi32(sum64, hi32));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if __AVX2__ || __AVX512F__
|
#if defined(__AVX2__) || defined(__AVX512F__)
|
||||||
// spread 32 bits to 32 bytes { 0x00, 0xFF }
|
// spread 32 bits to 32 bytes { 0x00, 0xFF }
|
||||||
static inline __m256i bytes_from_bits_32(const uint8_t * x) {
|
static inline __m256i bytes_from_bits_32(const uint8_t * x) {
|
||||||
uint32_t x32;
|
uint32_t x32;
|
||||||
|
@ -688,7 +688,7 @@ static inline float hsum_float_4x4(const __m128 a, const __m128 b, const __m128
|
||||||
#endif // __AVX__ || __AVX2__ || __AVX512F__
|
#endif // __AVX__ || __AVX2__ || __AVX512F__
|
||||||
#endif // defined(__AVX__) || defined(__AVX2__) || defined(__AVX512F__) || defined(__SSSE3__)
|
#endif // defined(__AVX__) || defined(__AVX2__) || defined(__AVX512F__) || defined(__SSSE3__)
|
||||||
|
|
||||||
#if __ARM_NEON
|
#if defined(__ARM_NEON)
|
||||||
|
|
||||||
#if !defined(__aarch64__)
|
#if !defined(__aarch64__)
|
||||||
|
|
||||||
|
@ -2481,7 +2481,7 @@ static void ggml_vec_dot_q4_1_q8_1(const int n, float * restrict s, const void *
|
||||||
sumi += (v0 * y[i].qs[j]) + (v1 * y[i].qs[j + qk/2]);
|
sumi += (v0 * y[i].qs[j]) + (v1 * y[i].qs[j + qk/2]);
|
||||||
}
|
}
|
||||||
|
|
||||||
sumf += (GGML_FP16_TO_FP32(x[i]).d*y[i].d)*sumi + GGML_FP16_TO_FP32(x[i].m)*y[i].s;
|
sumf += (GGML_FP16_TO_FP32(x[i].d)*y[i].d)*sumi + GGML_FP16_TO_FP32(x[i].m)*y[i].s;
|
||||||
}
|
}
|
||||||
|
|
||||||
*s = sumf;
|
*s = sumf;
|
||||||
|
|
40
llama-util.h
40
llama-util.h
|
@ -101,12 +101,12 @@ struct llama_file {
|
||||||
LLAMA_ASSERT(ret == 0); // same
|
LLAMA_ASSERT(ret == 0); // same
|
||||||
}
|
}
|
||||||
|
|
||||||
void read_raw(void * ptr, size_t size) {
|
void read_raw(void * ptr, size_t len) const {
|
||||||
if (size == 0) {
|
if (len == 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
errno = 0;
|
errno = 0;
|
||||||
std::size_t ret = std::fread(ptr, size, 1, fp);
|
std::size_t ret = std::fread(ptr, len, 1, fp);
|
||||||
if (ferror(fp)) {
|
if (ferror(fp)) {
|
||||||
throw std::runtime_error(format("read error: %s", strerror(errno)));
|
throw std::runtime_error(format("read error: %s", strerror(errno)));
|
||||||
}
|
}
|
||||||
|
@ -127,12 +127,12 @@ struct llama_file {
|
||||||
return std::string(chars.data(), len);
|
return std::string(chars.data(), len);
|
||||||
}
|
}
|
||||||
|
|
||||||
void write_raw(const void * ptr, size_t size) {
|
void write_raw(const void * ptr, size_t len) const {
|
||||||
if (size == 0) {
|
if (len == 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
errno = 0;
|
errno = 0;
|
||||||
size_t ret = std::fwrite(ptr, size, 1, fp);
|
size_t ret = std::fwrite(ptr, len, 1, fp);
|
||||||
if (ret != 1) {
|
if (ret != 1) {
|
||||||
throw std::runtime_error(format("write error: %s", strerror(errno)));
|
throw std::runtime_error(format("write error: %s", strerror(errno)));
|
||||||
}
|
}
|
||||||
|
@ -267,9 +267,9 @@ struct llama_mlock {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void init(void * addr) {
|
void init(void * ptr) {
|
||||||
LLAMA_ASSERT(this->addr == NULL && this->size == 0);
|
LLAMA_ASSERT(addr == NULL && size == 0);
|
||||||
this->addr = addr;
|
addr = ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void grow_to(size_t target_size) {
|
void grow_to(size_t target_size) {
|
||||||
|
@ -340,14 +340,14 @@ struct llama_mlock {
|
||||||
return (size_t) si.dwPageSize;
|
return (size_t) si.dwPageSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool raw_lock(void * addr, size_t size) {
|
bool raw_lock(void * ptr, size_t len) {
|
||||||
for (int tries = 1; ; tries++) {
|
for (int tries = 1; ; tries++) {
|
||||||
if (VirtualLock(addr, size)) {
|
if (VirtualLock(ptr, len)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (tries == 2) {
|
if (tries == 2) {
|
||||||
fprintf(stderr, "warning: failed to VirtualLock %zu-byte buffer (after previously locking %zu bytes): %s\n",
|
fprintf(stderr, "warning: failed to VirtualLock %zu-byte buffer (after previously locking %zu bytes): %s\n",
|
||||||
size, this->size, llama_format_win_err(GetLastError()).c_str());
|
len, size, llama_format_win_err(GetLastError()).c_str());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -363,7 +363,7 @@ struct llama_mlock {
|
||||||
// is equal to the number of pages in its minimum working set minus
|
// is equal to the number of pages in its minimum working set minus
|
||||||
// a small overhead."
|
// a small overhead."
|
||||||
// Hopefully a megabyte is enough overhead:
|
// Hopefully a megabyte is enough overhead:
|
||||||
size_t increment = size + 1048576;
|
size_t increment = len + 1048576;
|
||||||
// The minimum must be <= the maximum, so we need to increase both:
|
// The minimum must be <= the maximum, so we need to increase both:
|
||||||
min_ws_size += increment;
|
min_ws_size += increment;
|
||||||
max_ws_size += increment;
|
max_ws_size += increment;
|
||||||
|
@ -375,8 +375,8 @@ struct llama_mlock {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void raw_unlock(void * addr, size_t size) {
|
void raw_unlock(void * ptr, size_t len) {
|
||||||
if (!VirtualUnlock(addr, size)) {
|
if (!VirtualUnlock(ptr, len)) {
|
||||||
fprintf(stderr, "warning: failed to VirtualUnlock buffer: %s\n",
|
fprintf(stderr, "warning: failed to VirtualUnlock buffer: %s\n",
|
||||||
llama_format_win_err(GetLastError()).c_str());
|
llama_format_win_err(GetLastError()).c_str());
|
||||||
}
|
}
|
||||||
|
@ -388,12 +388,12 @@ struct llama_mlock {
|
||||||
return (size_t) 65536;
|
return (size_t) 65536;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool raw_lock(const void * addr, size_t size) {
|
bool raw_lock(const void * addr, size_t len) {
|
||||||
fprintf(stderr, "warning: mlock not supported on this system\n");
|
fprintf(stderr, "warning: mlock not supported on this system\n");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void raw_unlock(const void * addr, size_t size) {}
|
void raw_unlock(const void * addr, size_t len) {}
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -404,10 +404,10 @@ struct llama_buffer {
|
||||||
|
|
||||||
llama_buffer() = default;
|
llama_buffer() = default;
|
||||||
|
|
||||||
void resize(size_t size) {
|
void resize(size_t len) {
|
||||||
delete[] addr;
|
delete[] addr;
|
||||||
addr = new uint8_t[size];
|
addr = new uint8_t[len];
|
||||||
this->size = size;
|
size = len;
|
||||||
}
|
}
|
||||||
|
|
||||||
~llama_buffer() {
|
~llama_buffer() {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue