Automatic SIMD optimization

by syoyo

I’ve started to carefully reading “Efficient Utilization of SIMD Extensions” [1].

This paper is a good starting point to survey automatic SIMD vectorization.

According to this papar, automaic SIMD vectorization is roughly separated into 3 layers.

1. Symbolic vectorization
Do vectorization in language or application context level.

2. Straight line code vectorization
Find a coherence in scalar code path and vectorize it?

3. Special purpose compiler for vectorized code.
Custom instruction scheduler and register allocator for vector instruction for fast binary code generation.

So far, MUDA doesn’t do any optimizations shown above.

I’d like to find a way to incorporate MUDA with optimization like layer (1).
For layer (2), I think there is nothing to do for MUDA, since MUDA is a vector language already.
Layer (3) is very low-level and seems machine-dependent technique, thus I’m left it for now.

Much more information on automatic SIMD vectorization this paper is discussing, especially (2) and (3), can be found at [2].

[Ja]

… [1] をきちんと読みはじめているのですが、、、[1] も [2] もすげぇや…
ほんと世界は広いなぁ、勝てねぇなぁ…

コンパイラ最適化の分野は新参者なので、
こういう情報が(じぶんがやろうとしていること)なかなか耳に入ってこないから、
手探りでやったり車輪の再発明ばっかりして、よくよく調べてみると n 年前に
もう誰々がやっていて論文になっていた、というのばかり…

こんなことで時間を無駄にしているから、インド人にどんどん越されていくのですね。

なんとか MUDA も形ができはじてきたので、これを掲げて、
論文の著者とかそれらしきものを知っていそうな人物に、こーゆーことやりたんだけど、
どうすればいいの?と聞いてまわっていくことにしてみようか。
あまり深入りすると、本質のレンダラ開発がおざなりになりそうなので、
そこは調整しないといけない。

[1] Efficient Utilization of SIMD Extensions
Franz Franchetti, Stefan Kral, Juergen Lorenz, Christoph W. Ueberhuber. Invited paper
http://www.ece.cmu.edu/~franzf/papers/ieee-si.pdf

[2] Automatic SIMD vectorization
Jourgen Lorenz, Ph.D thesis
ftp://ftp.vcpc.univie.ac.at/projects/aurora/reports/auroratr2004-03.ps.gz

Advertisements