Parallel Java Library

メモ
来月あたり研究室にQuad Coreのマシンが来るので,OpenMPっぽく簡単にループ等を並列化してくれるJavaのライブラリを探してたところParallel Java Libraryとかいうものを見つける.

やってくれることは下のような逐次のコードを

//seq
for (int i = 1; i <= 4; ++i) {
  int j = 0;
  while (j < 1000000000)
    j = j + 1;
  System.out.println("Hello, world, i = " + i);
}

次のように書くことにより並列化してくれる.

//parallel
new ParallelTeam().execute(new ParallelRegion() {
  public void run() throws Exception {
    execute(1, 4, new IntegerForLoop() {
      public void run(int first, int last) throws Exception {
        for (int i = first; i <= last; ++i) {
          int j = 0;
          while (j < 1000000000)
            j = j + 1;
          System.out.println("Hello, world, i = " + i);
        }
      }
    });
  }
});

自宅のデスクトップ(CPUはCore2Duo E6600)で実行時間を測定したところ上が2266ms,下が1156msなのでまともに並列化できてる.ただOpenMPとの比較を見る限りにおいては負けてるみたいです.ただ僕はC/C++はできないのでひまがあればドキュメントを読んでいくことにする.