increase prefetch dense

This commit is contained in:
Lizonghang 2025-02-11 17:25:06 +04:00
parent 65ad14140a
commit 6a50d494d2

View file

@ -17823,13 +17823,16 @@ static void manage_graph_tensors(struct ggml_cgraph * cgraph, int advice, bool f
} }
for (const auto & segment : merged_segments) { for (const auto & segment : merged_segments) {
size_t prefetch_dense = 4;
size_t len = std::max(segment.end - segment.start, static_cast<size_t>(page_size)); size_t len = std::max(segment.end - segment.start, static_cast<size_t>(page_size));
posix_madvise(reinterpret_cast<void *>(segment.start), len, advice); // hint to load into memory posix_madvise(reinterpret_cast<void *>(segment.start), len, advice); // hint to load into memory
// force to prefetch data // force to prefetch data
if (force && advice == POSIX_MADV_WILLNEED) { if (force && advice == POSIX_MADV_WILLNEED) {
volatile char * ptr = reinterpret_cast<volatile char *>(segment.start); volatile char * ptr = reinterpret_cast<volatile char *>(segment.start);
for (size_t off = 0; off < len; off += page_size) { for (size_t off = 0; off < len; off += prefetch_dense * page_size) {
(void)ptr[off]; for (size_t i = 0; i < prefetch_dense; i++) {
if (off + i * page_size < len) (void)ptr[off + i * page_size];
}
} }
} }
} }