Community
cancel
Showing results for 
Search instead for 
Did you mean: 
llevrel
Beginner
69 Views

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

Hi,

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.
0 Kudos
5 Replies
Dmitry_B_Intel
Employee
69 Views

Bytes.

Thanks for noticing this inconsistency.
Dima
llevrel
Beginner
69 Views

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

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.

barragan_villanueva_
Valued Contributor I
69 Views

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

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