今さらなのだが、アライメントの揃っているデータを用いるように改良してみた。malloc では、8バイトにアライメントされたメモリアドレスを返すが、他のサイズアライメントは次のように posix_memalign() を用いることで、簡単にアライメントの揃った領域を動的に確保する事が出来る。
#define _XOPEN_SOURCE 600
#include <stdlib.h>
static inline void *aligned_malloc (int size, int align) {
void *p;
if (posix_memalign((void**)&p, align, size)) exit(1);
return p;
}
align の部分をいろいろ変えて実験してみたがあまり変化が現れない。posix_memalign() を用いたのがまずかったのか。まずは初期化部分くらいは SIMD 化したい。
#define _XOPEN_SOURCE 600
#include <stdlib.h>
static inline void *aligned_malloc (int size, int align) {
void *p;
if (posix_memalign((void**)&p, align, size)) exit(1);
return p;
}
align の部分をいろいろ変えて実験してみたがあまり変化が現れない。posix_memalign() を用いたのがまずかったのか。まずは初期化部分くらいは SIMD 化したい。