なが月・47日目

47日目

午前

学期の始まりが近づいてくると所用が増えてあれこれと時間を奪われてしまう。今日も暑く、夏を思わせる雲が浮いていた。

午後

Ellpackの構造は非常にhuman-friendlyで、値の二次元配列は最も非零要素が多い行に合わせて後の行は末尾ゼロ埋めし、列番号の二次元配列はゼロに関しては直前の要素の列番号と同じにしておくというものである。

この実装では外側がN回ループ、内側が非零要素が最多である行の非零要素数回ループであり、疎行列では多くの場合Nの方がかなり大きい。そのため外側をN回ループとする実装はスレッド並列化に適している。しかしベクトル型計算機では長い内側ループに対して性能を発揮するということらしく、その場合はrowIdxとidxOfValueを入れ替えて内側にN回ループを持ってくるほうが良いらしい。SIMDGPGPU、AVXなどまだ理解の足りない概念が襲ってきて難しいが、ひとまず疎行列の表現方法についてその意図を含め学んだ。来週から授業が始まってしまうので、そろそろ教科書演習ではなく授業で扱う内容を予習しておこうと思う。