What's the unit of the "alignment" argument of MKL_malloc?

What's the unit of the "alignment" argument of MKL_malloc?


I can't figure out the correct answer: bits or bytes? I first thought "bytes", because obviously one cannot align memory chunks bit-wise. But the MKL Reference Manual gives an example of MKL_malloc(...,128) (page 3274) and 128 bits==16 bytes, which is exactly what's advised in the User's Guide. So what?

Thanks in advance.

6 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.


Thanks for noticing this inconsistency.

Good! So, why does the Reference Manual example use 128-byte alignment? I haven't noticed this "magic number" to be mentioned elsewhere...

This is an example demonstrating usage of MKL_malloc. Nothing particular about this number, except demonstrating that a 2-power alignment is expected. Aligning on cache-line boundary (64 bytes) would be more reasonable I admit.

I'd like to add that sometimes page-boundary alignmentof data gives performace improvents in comparison with cache-line boundary.

-- Victor

Is there a way to get those numbers at compile time or run time? (Compiler intrinsic, system call...)

Leave a Comment

Please sign in to add a comment. Not a member? Join today