Skip to content

Commit fec2fb1

Browse files
authored
ggml : posixify madvise and pagesize (#3037)
* llama : use posix_madvise() instead of madvise() derived from BSD sed -i 's,\<madvise\>,posix_&,g;s,\<MADV_,POSIX_&,g' llama.cpp * ggml : use sysconf(_SC_PAGESIZE) instead of getpagesize() derived from BSD sed -i 's,getpagesize(),sysconf(_SC_PAGESIZE),g' ggml.c * metal : use sysconf(_SC_PAGESIZE) instead of getpagesize() derived from BSD sed -i 's,getpagesize(),sysconf(_SC_PAGESIZE),g' ggml-metal.m
1 parent 178b185 commit fec2fb1

File tree

3 files changed

+7
-7
lines changed

3 files changed

+7
-7
lines changed

ggml-metal.m

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -327,7 +327,7 @@ void ggml_metal_free(struct ggml_metal_context * ctx) {
327327

328328
void * ggml_metal_host_malloc(size_t n) {
329329
void * data = NULL;
330-
const int result = posix_memalign((void **) &data, getpagesize(), n);
330+
const int result = posix_memalign((void **) &data, sysconf(_SC_PAGESIZE), n);
331331
if (result != 0) {
332332
metal_printf("%s: error: posix_memalign failed\n", __func__);
333333
return NULL;
@@ -401,7 +401,7 @@ bool ggml_metal_add_buffer(
401401
}
402402
}
403403

404-
const size_t size_page = getpagesize();
404+
const size_t size_page = sysconf(_SC_PAGESIZE);
405405

406406
size_t size_aligned = size;
407407
if ((size_aligned % size_page) != 0) {

ggml.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ typedef void * thread_ret_t;
194194
inline static void * ggml_aligned_malloc(size_t size) {
195195
void * aligned_memory = NULL;
196196
#ifdef GGML_USE_METAL
197-
int result = posix_memalign(&aligned_memory, getpagesize(), size);
197+
int result = posix_memalign(&aligned_memory, sysconf(_SC_PAGESIZE), size);
198198
#else
199199
int result = posix_memalign(&aligned_memory, GGML_MEM_ALIGN, size);
200200
#endif

llama.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -606,16 +606,16 @@ struct llama_mmap {
606606

607607
if (prefetch > 0) {
608608
// Advise the kernel to preload the mapped memory
609-
if (madvise(addr, std::min(file->size, prefetch), MADV_WILLNEED)) {
610-
fprintf(stderr, "warning: madvise(.., MADV_WILLNEED) failed: %s\n",
609+
if (posix_madvise(addr, std::min(file->size, prefetch), POSIX_MADV_WILLNEED)) {
610+
fprintf(stderr, "warning: posix_madvise(.., POSIX_MADV_WILLNEED) failed: %s\n",
611611
strerror(errno));
612612
}
613613
}
614614
if (numa) {
615615
// advise the kernel not to use readahead
616616
// (because the next page might not belong on the same node)
617-
if (madvise(addr, file->size, MADV_RANDOM)) {
618-
fprintf(stderr, "warning: madvise(.., MADV_RANDOM) failed: %s\n",
617+
if (posix_madvise(addr, file->size, POSIX_MADV_RANDOM)) {
618+
fprintf(stderr, "warning: posix_madvise(.., POSIX_MADV_RANDOM) failed: %s\n",
619619
strerror(errno));
620620
}
621621
}

0 commit comments

Comments
 (0)