研究日誌。

大規模なグラフ処理に対してメモリ階層構造を考慮した高性能なソフトウェアを開発。

アライメント。

2008-03-06 16:29:03 | Weblog
今さらなのだが、アライメントの揃っているデータを用いるように改良してみた。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 化したい。