STINNER Victor <victor.stin...@gmail.com> added the comment:

Nathaniel Smith: "Given the complexities here, and that the Track/Untrack 
functions are public now, I do wonder if the actual aligned allocation routines 
should just be an internal API (i.e., not exposed in Python.h)."

I don't see why we would hide PyMem_AlignedAlloc() but requires to implement 
aligned_alloc in PyMem_SetAllocators().

The plan is also to slowly use PyMem_AlignedAlloc() internally for performance.

Can you elaborate the "complexities"? Do you mean that the proposed 
PyMem_AlignedAlloc() API is more complex than calling directly posix_memalign()?

PyMem_AlignedAlloc() is designed for performance. For best performances, CPUs 
require memory to be aligned on convenient values like powers of 2 ;-) I also 
understand that alignment must be a multiple of sizeof(void*) because CPU work 
on "CPU words". On a 64-bit CPU, a word is 8 bytes. If the memory is aligned on 
4 bytes, it may have to fetch two words, you loose the advantage of memory 
alignment.

I understand that PyMem_AlignedAlloc() requirements come from the CPU 
arhcitecture, it's not an arbitrary limitation just for the fun ;-)

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue18835>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to