Message305302
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 ;-) |
|
Date |
User |
Action |
Args |
2017-10-31 14:23:42 | vstinner | set | recipients:
+ vstinner, tim.peters, rhettinger, pitrou, benjamin.peterson, trent, njs, skrah, neologix, xdegaye, wscullin |
2017-10-31 14:23:42 | vstinner | set | messageid: <1509459822.23.0.213398074469.issue18835@psf.upfronthosting.co.za> |
2017-10-31 14:23:42 | vstinner | link | issue18835 messages |
2017-10-31 14:23:42 | vstinner | create | |
|