vector aligné - C++ - Programmation
Marsh Posté le 24-11-2010 à 09:33:07
on passe par un allcoator custom. Mais premiere etape: savori aligner de la memoire ;0
Allons y :
Allocation bas niveau alignée
Sous pas mal de systeme, y a une fonction tte faites. Sinon, on va faire du pointeur stashing
Code :
|
Allocator custom
Code :
|
Utilisation
Code :
|
Et voila
Note, l'alignement n'a de sens que sur des puissance de 2.
L'exercice est laissée au lecteur de rendre le aligned_allcoator template sur la valeur de l'alignement.
Sinon, tout est la : https://github.com/metascale/nt2 dans le module nt2::memory
Marsh Posté le 01-12-2010 à 20:58:21
pointer allocate( size_type c, const void* = 0 ) const
{
void* ptr = allocate(c*sizeof(value_type));
return reinterpret_cast<pointer>(ptr);
}
c pas récursif ça ?
Marsh Posté le 01-12-2010 à 21:10:39
et sinon dans quel cas peut avoir besoin d'être aligné sur 16 bytes?
Marsh Posté le 01-12-2010 à 21:44:18
avoir de la mémoire compatible avec des extensions SIMD comme Altivec et SSE.
Sinon, il faut bien entendu mettre un nt2::allcoate dans ton bout de code effectivement.
Marsh Posté le 23-11-2010 à 10:48:12
Tout est dans le titre, comment je peux faire un vector aligné sur 16 octets?