はじめに
のサイトをみて、ScalaでOpenCLをいじれるScalaCLというものを知ったので、ちょっといじってみようと思ったが、インストールして簡単なソースをコンパイルするまで、思ったより苦労したのでメモ。
インストール
sbazは存在しません
ScalaCLは、sbaz(というScalaのパッケージマネージャー?)を使うと簡単にインストールできる…ということなのだが、まず、sbazがない!?
もともと、sbazはscalaをインストールすれば一緒にインストールされていたものらしいのだが、現在のバージョンには含まれていないようだ。
参考: http://d.hatena.ne.jp/xuwei/20120418/1334761536
jarを直接取ってくる
仕方がないので、scalaclの.jarファイルを直接ダウンロードしてライブラリフォルダに突っ込む方針に変更。
参考: http://code.google.com/p/scalacl/wiki/Usage#With_Eclipse
http://oss.sonatype.org/content/groups/public/com/nativelibs4java/scalacl-compiler-plugin/0.3-SNAPSHOT/
のサイトから、最新のバージョンをダウンロード。
筆者の場合、scalacl-compiler-plugin-0.3-20120418.092333-17.jarという名前のファイルをダウンロードしました。
そして、これをscalaのライブラリフォルダにコピー。
scalaのインストールにHomebrewを使っている場合は、以下のような感じでコピーする(ほかの環境は知らない)
$ sudo cp scalacl-compiler-plugin-0.3-20120418.092333-17.jar /usr/local/Cellar/scala/2.10.3/libexec/lib/
Scala-IDEの設定
ScalaCLのコンパイルには、Scala-IDEを使うのが比較的楽そうだったのでScala-IDEを使うことにする。
ただし、いくつか設定が必要になる。
Scala-IDE上でScalaCL用のプロジェクトを新規作成したら、
プロジェクトのプロパティを開いて、”Scala Compiler”->”Advanced”タブを開く。
1.”Use Project Settings”にチェックを入れる。
2.Xplugin欄に、scalaclの.jarファイルまでのフルパスを入れる。
3.Xplugin-require欄に、”scalacl”と入れる。
試しに、一番最初にあげたサイト(スライド)にあったコードをコンパイルしてみる。
import scalacl._
object ScalaCL {
implicit val context = Context.best
(0 until 1000).cl.map(math.cos(_)).sum
}
Scala-IDEの”Run”ボタンを押すと、エラーがでる…orz
エラーに対処する
java.lang.NoClassDefFoundError: scala/tools/nsc/settings/MutableSettings$SettingValue
というエラーがでるのだが、ぐぐると解決法が見つかる。
上記↑のサイトによると、Scala-IDEプラグインをアップデートするといいらしい。ただし、そのときに、”Contract all update sites during install to find required software”のチェックを外してやる必要があるようだ
updateの方法(マックの場合)
Scala-IDE(ようはEclipse)で”Help”->”Install New Software…”を選ぶ。
・Work with: 欄の右端の三角▼をクリックして、Scala IDEのサイトを選ぶ。
・“Select All”ボタンを押してすべて選択。
・”Contract all update sites during install to find required software”のチェックを外す。
あとは、”Next”ボタンで次の画面にいき”Finish”ボタンでオッケー。
あらためてコンパイル
ここまでで、うまくいえばコンパイルが通るようになっている(はず)。