C++ cache aware programming

后端 未结 10 1439
离开以前
离开以前 2020-12-07 10:53

is there a way in C++ to determine the CPU\'s cache size? i have an algorithm that processes a lot of data and i\'d like to break this data down into chunks such that they f

10条回答
  •  离开以前
    2020-12-07 11:25

    IIRC, GCC has a __builtin_prefetch hint.

    http://gcc.gnu.org/onlinedocs/gcc-3.3.6/gcc/Other-Builtins.html

    has an excellent section on this. Basically, it suggests:

    __builtin_prefetch (&array[i + LookAhead], rw, locality);
    

    where rw is a 0 (prepare for read) or 1 (prepare for a write) value, and locality uses the number 0-3, where zero is no locality, and 3 is very strong locality.

    Both are optional. LookAhead would be the number of elements to look ahead to. If memory access were 100 cycles, and the unrolled loops are two cycles apart, LookAhead could be set to 50 or 51.

提交回复
热议问题