Cell

ローカル変数でアライメントが効かないとか

ローカル変数でアライメントが効かないとかすぐに忘れるのでメモしておく。

ppu-g++でboost::threadがリンクできない?

ppu-g++ ref_ppu.cxx -o ref_ppu.elf -lspe2 -lboost_thread ってやると、 /usr/bin/ppu-ld: skipping incompatible /usr/lib/libboost_thread.so when searching for -lboost_thread /usr/bin/ppu-ld: skipping incompatible /usr/lib/libboost_thread.a wh…

CellSDK3.0をインストール

自前でコンパイルしたspu-gccがそれなりに使えていたのだが、spu-timingとかも欲しくなってくるとgentooじゃ面倒。なのでPS3のOSをYDLに戻した。そんなわけで、http://cell.fixstars.com/ps3linux/index.php/Cell_SDK_3.0%E3%82%92%E5%B0%8E%E5%85%A5%E3%81%…

openmpのcソースコードをppuとspuに

openmp download | SourceForge.netこんな感じで分散できるという実例。とても興味深い。

clangのGCC Emulation Driverを使ってみる。

clangを試してみる。 - 並列メモ?に続いて、clangのGCC Emulation Driverであるcccを使ってみる。これはgccが内部でコンパイラやらリンカやらを色々使って実行ファイルまで作ってくれるのと同様に、clangやらllvm-ldやらを使って実行ファイルまで作ってくれ…

clangを試してみる。

clangは簡単にいうと、LLVM専用のフロントエンドでCとかC++とかが扱えるらしい。LLVM-GCCが上手くいかないので、こんどはこっちを試してみる。コンパイル方法についてはClang - Getting Startedを参照。 llvmをコンパイル。 まずは、LLVMをsvnのrepoからもら…

そろそろllvm-2.4が出るらしいけど、2.3をビルドしてみる。

The LLVM Compiler Infrastructure Projectのスケジュールを見ると、今月末あたりに2.4がリリースみたいだけど、まぁそれはそれとしてLLVMの2.3をCell用にコンパイルしてみる。環境は以下の通り。 PS3(40GB) gentoo linux 20071212 g++ 4.1.2 LLVMをビルド。…

spu-gccの4.3.1でちょっと実験

#include #include int main() { int i, number, total; char str[1024]; fgets(str, sizeof(str), stdin); number = atoi(str); total = 0; for (i = 0; i って書いたのをtest.cで保存し、 spu-gcc -O3 test.c -S とやると、こんなのが出てくる。 .file "te…

spu-gccは結局tarballから作る。

先日「gentooでspu-gccが欲しいならportageにcrossdevがある」というのを教えてもらった。さっそく試してみる…(中略)…やっぱり上手くいかないorz そんなわけで、もう一度tarballから挑戦。これまでの経過から「buildはpowerpcに」とか「binutilsがアセンブ…

LLVMを試そうとして失敗

The LLVM Compiler Infrastructure Projectというコンパイラインフラストラクチャがある。 これは、私自身正直あまりよくわかっていないが、言語処理系の最適化を研究するための汎用的な中間言語およびその実装で、GCCフロントエンドを使えるようにしてあっ…

SFMTをSPUで動かしてみる。

どこかでやってたネタではあるが(チラッと見ただけなので、どこのどなたか覚えてない…)、練習がてらSFMTをSPUに移植してみる。 SFMTというのは SIMD-oriented Fast Mersenne Twister という疑似乱数生成器で、 http://www.math.sci.hiroshima-u.ac.jp/~m-m…

PPEは2プロセッサ扱い

CellのPPEはPowerPCの新しいやつがベースなので、PPEのみでも2プロセッサに見える。実際に/proc/cpuinfoを見てみるとこんな感じ。 processor : 0 cpu : Cell Broadband Engine, altivec supported clock : 3192.000000MHz revision : 16.0 (pvr 0070 1000)pr…

入門編をやってみたら、やっぱりSIMDが難しい

まずはCellプログラミングチュートリアル入門編をやってみた。感想としては、libspeがそれなりに高級なインタフェースを用意してくれてるので、「SPEで並列」はマルチプロセスのプログラミングと似てるし、「PPEとSPEでDMA転送」はmemcpy()に似てるし、概念…