フィックススターズのCellプログラミングチュートリアルは初めてPS3でCellのプログラムを作るのには丁度良い内容と分量になっている。それほど難しいことは無く、基本を習得できるのだ。しかし、この記事を書いている時点では、最終更新日が2007年2月2日と、内容が若干古い。
PPE用のプログラムもすべてgccでコンパイルするようになっている。PPE用のプログラムはppu-gccを利用したほうがCell用に最適化してくれるので実行効率が良い。なので、gccでコンパイルされているところはすべてppu-gccにすればよいのだが、実はこのチュートリアルではそれではエラーが出てしまうのである。
たとえば、SIMDを使った条件分岐の削除にあるプログラムだが、これをppu-gccでコンパイルすると、
error: incompatible types in assignment
と、エラーが出る。これは
vpat = vec_cmpgt(va[i], vb[i]);
に示すコードの返り値の型が一致していないことが原因である。なので、
vector unsigned int vpat;
の部分を、
vector bool int vpat;
のように変更する必要がある。
別のソースコードも似たようなエラーが起こるが、ほとんどが型の不一致が原因なので、宣言の型を変更したり、目的の型にキャストすればエラーは解消される。
PPE用のプログラムもすべてgccでコンパイルするようになっている。PPE用のプログラムはppu-gccを利用したほうがCell用に最適化してくれるので実行効率が良い。なので、gccでコンパイルされているところはすべてppu-gccにすればよいのだが、実はこのチュートリアルではそれではエラーが出てしまうのである。
たとえば、SIMDを使った条件分岐の削除にあるプログラムだが、これをppu-gccでコンパイルすると、
error: incompatible types in assignment
と、エラーが出る。これは
vpat = vec_cmpgt(va[i], vb[i]);
に示すコードの返り値の型が一致していないことが原因である。なので、
vector unsigned int vpat;
の部分を、
vector bool int vpat;
のように変更する必要がある。
別のソースコードも似たようなエラーが起こるが、ほとんどが型の不一致が原因なので、宣言の型を変更したり、目的の型にキャストすればエラーは解消される。
コメント