SlideShare una empresa de Scribd logo
1 de 15
ScalaからGPUを使ってみるScalaCLPlugin @chimerast たけうちひでゆき
自己紹介 たけうちひでゆき Twitter: @chimerast Blog: http://chimera.st/ #wicket-ja, #mongotokyo, #rpscala Seasarの端っこでS2Wicketのメンテナンスしています 永遠のNEET 株式会社UZABASEというところの平社員に最近なりました 以前は社長とか個人事業主とかいろいろやってました 普段は(Java or Scala)+WicketでWebサービスを開発をしています 株式会社UZABASEでは一緒に働いてくれる人を募集中です 主に投資・金融機関向けに企業・業界の情報分析Webサービスを提供 ScalaとかWicketとかMongoDBとかを使った仕事もあります http://www.uzabase.com/ 2
お題のGPUって何? グラフィックカードにくっついている演算装置 主に3Dグラフィック描画に使用される ポリゴン頂点の座標変換(アフィン変換) 秒間約60億回の行列・ベクトルの乗加算(1頂点あたり単精度浮動小数 x (16 + 4) 回の演算) ピクセルごとの色の合成処理 秒間約600億ピクセルの処理(1ピクセルは単精度浮動小数 x 4) 浮動小数点の並列演算が超得意 3072ユニット(コア)/ 5.1TeraFLOPS(単精度)/ 1.27TeraFLOPS(倍精度) Core i7 3.5GHz : 4コア / 112GigaFLOPS(AVX命令使用単精度) 旧地球シミュレータ(2002年段階): 実効性能35.86TeraFLOPS 600億円 ベクトル演算が得意 三角関数・指数関数も得意(のはず?) 3 AMD Radeon HD 6990 スペックより 7万円くらいのグラボ
4 旧型地球シミュレータ = 600億円 注: 極端な表現です 実際には考慮すべきことがたくさんあります 7万円 x 7 = 49万円
5 このあほみたいな能力を 普通の計算で使えないの? GPGPU
GPGPU General-purpose computing on graphics processing units GPUを汎用計算処理に利用する技術 データ並列に特化(タスク並列は不得意) 専用言語でカーネルプログラムを記述しホストプログラムからAPIで実行 CUDA, ATI Stream, OpenCL サーバ用のGPGPU専用ボードも販売されている: NVIDIA Tesla 最近ではスパコンを作るにもGPUがよく使われている 東工大: TSUBAME (TOP 5) 長崎大: DEGIMA (TOP 430 3700万でスパコンを作ったとかで話題に) 中国: 天河一号A (TOP 2) 中国: Nebulea (TOP 4) 6
OpenCL ① マルチコアCPU、GPU等の計算資源を使用した並列コンピューティング用のフレームワーク GPUに限ったものではなく、CPU、Cell、DSPなども扱う 携帯電話や組み込み向けのProfileもある 専用のOpenCL C言語で記述 ベクトル演算が拡張されたC言語 再起ができないとかいろいろ制限もある OpenCL APIを通してソースコードをコンパイル&実行 7 __kernel void dataParallel(__global float4* a,         __global float4* b, __global float4* c) { inti = get_global_id(0); c[i].xyz = a[i].xyz + b[i].xyz; c[i].w   = a[i].w   * b[i].w; }
OpenCL ② 難点 初期化処理やバッファの確保など本質以外のコードが非常に多い JavaCL OpenCLのAPIを比較的高レベルに抽象化 それでもバッファ確保とかイベントの管理のコードが必要 OpenCL Cの関数を呼び出すラッパクラスのジェネレータとかある もっと簡単に使えないの? 8 そんなあなたに ScalaCL
ScalaCL Compiler Plugin ① ScalaからOpenCLを簡単に使えるようにするコンパイラプラグイン http://code.google.com/p/scalacl/ JavaCLをベースに使用 OpenCLを使ってメソッドが高速化された専用の配列/Rangeクラス 要素はプリミティブ型およびそのTupleのみ(8要素まで) map, filter, zip, zipWithIndex, toArray, sum, product, min, max Scalaコードをコンパイル時にOpenCLC言語に変換 CLArray, CLRangeのmap, filterの引数の関数ブロックをOpenCL C に変換 ブロックから外部の変数、メソッドにアクセスできないなど制限はある ちゃんとコンパイルエラーになります 三角関数などscala.mathの関数で使えるものがある 使えない演算・関数も多い(ベクトル演算とか) 9
ScalaCL Compiler Plugin ② Scalaの標準Collectionのメソッドをコンパイル時にwhile文に変換して高速化 reduce/scan/fold|Left/Right forall, exists, count foreach, map, filter, filterNot, takeWhile, dropWhile Array.tabulate 個人的にはどっちかというとおまけだと思う Warning :ScalaCL might still have (unknown) bugs, it's currently far from being finished (especially on the OpenCL side). ScalaCL is not production-ready ! 実際Scala -> OpenCL Cの変換がかなり不安定です 10 今後に期待!!
ScalaCLの使い方 インストール(OpenCLが使える前提で) sbaz update sbaz install scalacl サンプルコード コンパイル/実行 scalacTest.scala scala Test 特にオプションは必要ない(sbazでインストールすると勝手に使われるので注意) export SCALACL_VERBOSE=1 コンパイル時および実行時に変換前と変換後のコードを標準出力に出力 11 import scalacl._ implicit val context = Context.best (0 until 100).cl.map(cos(_)).sum
性能評価/プログラム 単純なmap cos x 100 Tupleの配列 12 ScalaCLの map等は非同期実行されるため最後に sumで確実に同期 Val range = (0 until 100000) val tuples = Array.fill(100) {   ((1, 2, 3, 4), (5, 6, 7, 8)) } range.map(_ * 2).zipWithIndex.map(p => p._1 * p._2).sum range.map{ x =>   var total = 0.0   for (i <- 0 until 100) { total += cos(x * i) } total }.sum tuples.map {   case (a, b) =>   a._1 * b._1 + a._2 * b._2 + a._3 * b._3 + a._4 * b._4 }.sum https://github.com/chimerast/scala-scalacl
性能評価/結果 13 単位は全てマイクロ秒 System.nanoTimeを使用して100回計測し、結果の上位下位20%ずつを排除して平均 JAVA_OPTS=“-server -Xms2g -Xmx2g -verbose:gc -XX:CompileThreshold=10  -XX:NewSize=1g -XX:MaxNewSize=1g -XX:SurvivorRatio=200000” 環境 iMac 27-inch, Mid 2011 / MacOSX 10.7 3.1 GHz Intel Core i5 (Sandy Bridge) / 12 GB 1333 MHz DDR3 AMD Radeon HD 6970M 1024 MB / 960ユニット Java 1.6.0_26 64bit / Scala2.9.0.1
おまけ(GPUつながり的な意味で) ScalaでMikuMikuDanceのローダ&レンダラを作ってみた OpenGL with GLSL OpenGLライブラリとしてLWJGLを使用 実装できている部分 モデルのロード IKボーン、物理演算以外のアニメーション IKボーンのプログラムの仕方がよくわからなくてここから進まない Scala成分 1600行ぐらい GLSL成分 70行ぐらい 14
おしまい ご清聴ありがとうございました 株式会社UZABASEでは一緒に働いてくれる人を募集中です フリーダムな環境です 主に投資・金融機関向けに企業・業界の情報分析Webサービスを提供 基本JavaですがScalaとかWicketとかMongoDBとかを使った仕事もあります http://www.uzabase.com/ 15

Más contenido relacionado

La actualidad más candente

ScalaにまつわるNewsな話
ScalaにまつわるNewsな話ScalaにまつわるNewsな話
ScalaにまつわるNewsな話Yosuke Mizutani
 
Isomorphic web development with scala and scala.js
Isomorphic web development  with scala and scala.jsIsomorphic web development  with scala and scala.js
Isomorphic web development with scala and scala.jsTanUkkii
 
Scala.jsはじめました!
Scala.jsはじめました!Scala.jsはじめました!
Scala.jsはじめました!K Kinzal
 
Introduction to WildFly Swarm #jjug
Introduction to WildFly Swarm #jjugIntroduction to WildFly Swarm #jjug
Introduction to WildFly Swarm #jjugYoshimasa Tanabe
 
Asakusa FrameworkとScalaの密かな関係
Asakusa FrameworkとScalaの密かな関係Asakusa FrameworkとScalaの密かな関係
Asakusa FrameworkとScalaの密かな関係hishidama
 
AsakusaのドキュメントをDashで見たい
AsakusaのドキュメントをDashで見たいAsakusaのドキュメントをDashで見たい
AsakusaのドキュメントをDashで見たいTakashi Aoe
 
Play framework 2.0のちょっとした紹介
Play framework 2.0のちょっとした紹介Play framework 2.0のちょっとした紹介
Play framework 2.0のちょっとした紹介Ryo RKTM
 
Asakusa fwはじめの一歩 0.7.0
Asakusa fwはじめの一歩 0.7.0Asakusa fwはじめの一歩 0.7.0
Asakusa fwはじめの一歩 0.7.0鉄平 土佐
 
Real world android akka
Real world android akkaReal world android akka
Real world android akkaTaisuke Oe
 
MySQL5.6と5.7性能比較
MySQL5.6と5.7性能比較MySQL5.6と5.7性能比較
MySQL5.6と5.7性能比較hiroi10
 
ECMAScript6による関数型プログラミング
ECMAScript6による関数型プログラミングECMAScript6による関数型プログラミング
ECMAScript6による関数型プログラミングTanUkkii
 
はじめての Gatling
はじめての Gatlingはじめての Gatling
はじめての GatlingNaoya Nakazawa
 
【LT】akka receive とScala Javaの違い
【LT】akka receive とScala Javaの違い 【LT】akka receive とScala Javaの違い
【LT】akka receive とScala Javaの違い 賢太郎 前多
 
Zabbix Conference Japan 2018 LT Configure by Ansible
Zabbix Conference Japan 2018 LT Configure by AnsibleZabbix Conference Japan 2018 LT Configure by Ansible
Zabbix Conference Japan 2018 LT Configure by AnsibleYukiya Hayashi
 
インターンシップの学生にお届けしようとしたScalaの文法(初級編)
インターンシップの学生にお届けしようとしたScalaの文法(初級編)インターンシップの学生にお届けしようとしたScalaの文法(初級編)
インターンシップの学生にお届けしようとしたScalaの文法(初級編)Kentaro Masuda
 
MySQL5.7とMariaDB10.1の性能比較(簡易)
MySQL5.7とMariaDB10.1の性能比較(簡易)MySQL5.7とMariaDB10.1の性能比較(簡易)
MySQL5.7とMariaDB10.1の性能比較(簡易)hiroi10
 
Akkaの翻訳みんなでやろう Let's translate akka doc
Akkaの翻訳みんなでやろう Let's translate akka docAkkaの翻訳みんなでやろう Let's translate akka doc
Akkaの翻訳みんなでやろう Let's translate akka doc賢太郎 前多
 
MySQL Fabricでぼっこぼこにされたはなし
MySQL FabricでぼっこぼこにされたはなしMySQL Fabricでぼっこぼこにされたはなし
MySQL Fabricでぼっこぼこにされたはなしyoku0825
 

La actualidad más candente (20)

ScalaにまつわるNewsな話
ScalaにまつわるNewsな話ScalaにまつわるNewsな話
ScalaにまつわるNewsな話
 
Isomorphic web development with scala and scala.js
Isomorphic web development  with scala and scala.jsIsomorphic web development  with scala and scala.js
Isomorphic web development with scala and scala.js
 
Scala.jsはじめました!
Scala.jsはじめました!Scala.jsはじめました!
Scala.jsはじめました!
 
Introduction to WildFly Swarm #jjug
Introduction to WildFly Swarm #jjugIntroduction to WildFly Swarm #jjug
Introduction to WildFly Swarm #jjug
 
Asakusa FrameworkとScalaの密かな関係
Asakusa FrameworkとScalaの密かな関係Asakusa FrameworkとScalaの密かな関係
Asakusa FrameworkとScalaの密かな関係
 
AsakusaのドキュメントをDashで見たい
AsakusaのドキュメントをDashで見たいAsakusaのドキュメントをDashで見たい
AsakusaのドキュメントをDashで見たい
 
POWER8サーバでMariaDBベンチマーク
POWER8サーバでMariaDBベンチマークPOWER8サーバでMariaDBベンチマーク
POWER8サーバでMariaDBベンチマーク
 
Play framework 2.0のちょっとした紹介
Play framework 2.0のちょっとした紹介Play framework 2.0のちょっとした紹介
Play framework 2.0のちょっとした紹介
 
Asakusa fwはじめの一歩 0.7.0
Asakusa fwはじめの一歩 0.7.0Asakusa fwはじめの一歩 0.7.0
Asakusa fwはじめの一歩 0.7.0
 
Real world android akka
Real world android akkaReal world android akka
Real world android akka
 
MySQL5.6と5.7性能比較
MySQL5.6と5.7性能比較MySQL5.6と5.7性能比較
MySQL5.6と5.7性能比較
 
ECMAScript6による関数型プログラミング
ECMAScript6による関数型プログラミングECMAScript6による関数型プログラミング
ECMAScript6による関数型プログラミング
 
はじめての Gatling
はじめての Gatlingはじめての Gatling
はじめての Gatling
 
WildFly Swarm In Progress
WildFly Swarm In ProgressWildFly Swarm In Progress
WildFly Swarm In Progress
 
【LT】akka receive とScala Javaの違い
【LT】akka receive とScala Javaの違い 【LT】akka receive とScala Javaの違い
【LT】akka receive とScala Javaの違い
 
Zabbix Conference Japan 2018 LT Configure by Ansible
Zabbix Conference Japan 2018 LT Configure by AnsibleZabbix Conference Japan 2018 LT Configure by Ansible
Zabbix Conference Japan 2018 LT Configure by Ansible
 
インターンシップの学生にお届けしようとしたScalaの文法(初級編)
インターンシップの学生にお届けしようとしたScalaの文法(初級編)インターンシップの学生にお届けしようとしたScalaの文法(初級編)
インターンシップの学生にお届けしようとしたScalaの文法(初級編)
 
MySQL5.7とMariaDB10.1の性能比較(簡易)
MySQL5.7とMariaDB10.1の性能比較(簡易)MySQL5.7とMariaDB10.1の性能比較(簡易)
MySQL5.7とMariaDB10.1の性能比較(簡易)
 
Akkaの翻訳みんなでやろう Let's translate akka doc
Akkaの翻訳みんなでやろう Let's translate akka docAkkaの翻訳みんなでやろう Let's translate akka doc
Akkaの翻訳みんなでやろう Let's translate akka doc
 
MySQL Fabricでぼっこぼこにされたはなし
MySQL FabricでぼっこぼこにされたはなしMySQL Fabricでぼっこぼこにされたはなし
MySQL Fabricでぼっこぼこにされたはなし
 

Destacado

Cleaner scala stack
Cleaner scala stackCleaner scala stack
Cleaner scala stackosamu kimura
 
Twitter4JとScalaと何か
Twitter4JとScalaと何かTwitter4JとScalaと何か
Twitter4JとScalaと何かYusuke Yamamoto
 
第一回Scala会議
第一回Scala会議第一回Scala会議
第一回Scala会議潤一 加藤
 
Communication between Wicket and Flex
Communication between Wicket and FlexCommunication between Wicket and Flex
Communication between Wicket and FlexHideyuki Takeuchi
 
もっとデータ可視化をカジュアルに! OSSプロジェクト「E2D3」
もっとデータ可視化をカジュアルに! OSSプロジェクト「E2D3」もっとデータ可視化をカジュアルに! OSSプロジェクト「E2D3」
もっとデータ可視化をカジュアルに! OSSプロジェクト「E2D3」Hideyuki Takeuchi
 
SPEEDA/NewsPicksを支える価値を生み出す技術の選定手法
SPEEDA/NewsPicksを支える価値を生み出す技術の選定手法SPEEDA/NewsPicksを支える価値を生み出す技術の選定手法
SPEEDA/NewsPicksを支える価値を生み出す技術の選定手法Hideyuki Takeuchi
 
PFIセミナー 2013/02/28 「プログラミング言語の今」
PFIセミナー 2013/02/28 「プログラミング言語の今」PFIセミナー 2013/02/28 「プログラミング言語の今」
PFIセミナー 2013/02/28 「プログラミング言語の今」Preferred Networks
 
PFIセミナーH271022 ~コマンドを叩いて遊ぶ コンテナ仮想、その裏側~
PFIセミナーH271022 ~コマンドを叩いて遊ぶ コンテナ仮想、その裏側~PFIセミナーH271022 ~コマンドを叩いて遊ぶ コンテナ仮想、その裏側~
PFIセミナーH271022 ~コマンドを叩いて遊ぶ コンテナ仮想、その裏側~Preferred Networks
 
Amazon Picking Challenge 結果報告
Amazon Picking Challenge 結果報告Amazon Picking Challenge 結果報告
Amazon Picking Challenge 結果報告 Preferred Networks
 
Web制作・運用会社に必要なCDNサービスとは?
Web制作・運用会社に必要なCDNサービスとは?Web制作・運用会社に必要なCDNサービスとは?
Web制作・運用会社に必要なCDNサービスとは?J-Stream Inc.
 
対話における商品の営業
対話における商品の営業対話における商品の営業
対話における商品の営業Preferred Networks
 
Generation of 3D-avatar animation from latent representations
Generation of 3D-avatar animation from latent representationsGeneration of 3D-avatar animation from latent representations
Generation of 3D-avatar animation from latent representationsPreferred Networks
 
Deep Learning in real world @Deep Learning Tokyo
Deep Learning in real world @Deep Learning TokyoDeep Learning in real world @Deep Learning Tokyo
Deep Learning in real world @Deep Learning TokyoPreferred Networks
 
ディープラーニングと自動運転、コネクティッドカー @ TU-Automotive 2016
ディープラーニングと自動運転、コネクティッドカー @ TU-Automotive 2016ディープラーニングと自動運転、コネクティッドカー @ TU-Automotive 2016
ディープラーニングと自動運転、コネクティッドカー @ TU-Automotive 2016Preferred Networks
 
Bayesian Dark Knowledge and Matrix Factorization
Bayesian Dark Knowledge and Matrix FactorizationBayesian Dark Knowledge and Matrix Factorization
Bayesian Dark Knowledge and Matrix FactorizationPreferred Networks
 
Reactive Webアプリケーション - そしてSpring 5へ #jjug_ccc #ccc_ef3
Reactive Webアプリケーション - そしてSpring 5へ #jjug_ccc #ccc_ef3Reactive Webアプリケーション - そしてSpring 5へ #jjug_ccc #ccc_ef3
Reactive Webアプリケーション - そしてSpring 5へ #jjug_ccc #ccc_ef3Toshiaki Maki
 
テーマ・プラグイン開発の光と闇 #wctokyo
テーマ・プラグイン開発の光と闇 #wctokyoテーマ・プラグイン開発の光と闇 #wctokyo
テーマ・プラグイン開発の光と闇 #wctokyoHidekazu Ishikawa
 
情報サイトの金持ちさんと貧乏さん
情報サイトの金持ちさんと貧乏さん情報サイトの金持ちさんと貧乏さん
情報サイトの金持ちさんと貧乏さんAtsufumi Yoshikawa
 
超初心者向け・オンライン勉強会のススメ(WordCamp Tokyo 2016 LT スライド)
超初心者向け・オンライン勉強会のススメ(WordCamp Tokyo 2016 LT スライド)超初心者向け・オンライン勉強会のススメ(WordCamp Tokyo 2016 LT スライド)
超初心者向け・オンライン勉強会のススメ(WordCamp Tokyo 2016 LT スライド)Hijili Kosugi
 

Destacado (20)

Cleaner scala stack
Cleaner scala stackCleaner scala stack
Cleaner scala stack
 
Twitter4JとScalaと何か
Twitter4JとScalaと何かTwitter4JとScalaと何か
Twitter4JとScalaと何か
 
Scalaz
ScalazScalaz
Scalaz
 
第一回Scala会議
第一回Scala会議第一回Scala会議
第一回Scala会議
 
Communication between Wicket and Flex
Communication between Wicket and FlexCommunication between Wicket and Flex
Communication between Wicket and Flex
 
もっとデータ可視化をカジュアルに! OSSプロジェクト「E2D3」
もっとデータ可視化をカジュアルに! OSSプロジェクト「E2D3」もっとデータ可視化をカジュアルに! OSSプロジェクト「E2D3」
もっとデータ可視化をカジュアルに! OSSプロジェクト「E2D3」
 
SPEEDA/NewsPicksを支える価値を生み出す技術の選定手法
SPEEDA/NewsPicksを支える価値を生み出す技術の選定手法SPEEDA/NewsPicksを支える価値を生み出す技術の選定手法
SPEEDA/NewsPicksを支える価値を生み出す技術の選定手法
 
PFIセミナー 2013/02/28 「プログラミング言語の今」
PFIセミナー 2013/02/28 「プログラミング言語の今」PFIセミナー 2013/02/28 「プログラミング言語の今」
PFIセミナー 2013/02/28 「プログラミング言語の今」
 
PFIセミナーH271022 ~コマンドを叩いて遊ぶ コンテナ仮想、その裏側~
PFIセミナーH271022 ~コマンドを叩いて遊ぶ コンテナ仮想、その裏側~PFIセミナーH271022 ~コマンドを叩いて遊ぶ コンテナ仮想、その裏側~
PFIセミナーH271022 ~コマンドを叩いて遊ぶ コンテナ仮想、その裏側~
 
Amazon Picking Challenge 結果報告
Amazon Picking Challenge 結果報告Amazon Picking Challenge 結果報告
Amazon Picking Challenge 結果報告
 
Web制作・運用会社に必要なCDNサービスとは?
Web制作・運用会社に必要なCDNサービスとは?Web制作・運用会社に必要なCDNサービスとは?
Web制作・運用会社に必要なCDNサービスとは?
 
対話における商品の営業
対話における商品の営業対話における商品の営業
対話における商品の営業
 
Generation of 3D-avatar animation from latent representations
Generation of 3D-avatar animation from latent representationsGeneration of 3D-avatar animation from latent representations
Generation of 3D-avatar animation from latent representations
 
Deep Learning in real world @Deep Learning Tokyo
Deep Learning in real world @Deep Learning TokyoDeep Learning in real world @Deep Learning Tokyo
Deep Learning in real world @Deep Learning Tokyo
 
ディープラーニングと自動運転、コネクティッドカー @ TU-Automotive 2016
ディープラーニングと自動運転、コネクティッドカー @ TU-Automotive 2016ディープラーニングと自動運転、コネクティッドカー @ TU-Automotive 2016
ディープラーニングと自動運転、コネクティッドカー @ TU-Automotive 2016
 
Bayesian Dark Knowledge and Matrix Factorization
Bayesian Dark Knowledge and Matrix FactorizationBayesian Dark Knowledge and Matrix Factorization
Bayesian Dark Knowledge and Matrix Factorization
 
Reactive Webアプリケーション - そしてSpring 5へ #jjug_ccc #ccc_ef3
Reactive Webアプリケーション - そしてSpring 5へ #jjug_ccc #ccc_ef3Reactive Webアプリケーション - そしてSpring 5へ #jjug_ccc #ccc_ef3
Reactive Webアプリケーション - そしてSpring 5へ #jjug_ccc #ccc_ef3
 
テーマ・プラグイン開発の光と闇 #wctokyo
テーマ・プラグイン開発の光と闇 #wctokyoテーマ・プラグイン開発の光と闇 #wctokyo
テーマ・プラグイン開発の光と闇 #wctokyo
 
情報サイトの金持ちさんと貧乏さん
情報サイトの金持ちさんと貧乏さん情報サイトの金持ちさんと貧乏さん
情報サイトの金持ちさんと貧乏さん
 
超初心者向け・オンライン勉強会のススメ(WordCamp Tokyo 2016 LT スライド)
超初心者向け・オンライン勉強会のススメ(WordCamp Tokyo 2016 LT スライド)超初心者向け・オンライン勉強会のススメ(WordCamp Tokyo 2016 LT スライド)
超初心者向け・オンライン勉強会のススメ(WordCamp Tokyo 2016 LT スライド)
 

Similar a ScalaCL in ScalaKaigi

ScalaでAndroidアプリ開発
ScalaでAndroidアプリ開発ScalaでAndroidアプリ開発
ScalaでAndroidアプリ開発papamitra
 
[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き
[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き
[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付きInsight Technology, Inc.
 
Introduction new features in Spark 3.0
Introduction new features in Spark 3.0Introduction new features in Spark 3.0
Introduction new features in Spark 3.0Kazuaki Ishizaki
 
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarconSeasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarconKazuhiro Sera
 
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006Cloudera Japan
 
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireSDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireAkio Katayama
 
1周遅れのScala入学 #nds41
1周遅れのScala入学 #nds411周遅れのScala入学 #nds41
1周遅れのScala入学 #nds41Kazumune Katagiri
 
201312 scalr[oss] installation_idcf
201312 scalr[oss] installation_idcf201312 scalr[oss] installation_idcf
201312 scalr[oss] installation_idcfIDC Frontier
 
SCALR OSS版のインストール手順のご紹介 20131204 01
SCALR OSS版のインストール手順のご紹介 20131204 01SCALR OSS版のインストール手順のご紹介 20131204 01
SCALR OSS版のインストール手順のご紹介 20131204 01Haruhiko KAJIKAWA
 
Node.js勉強会 Framework Koa
Node.js勉強会 Framework KoaNode.js勉強会 Framework Koa
Node.js勉強会 Framework Koakamiyam .
 
言語アップデート -Scala編-
言語アップデート -Scala編-言語アップデート -Scala編-
言語アップデート -Scala編-Kota Mizushima
 
Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)Yuji Kubota
 
NTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみよう
NTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみようNTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみよう
NTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみようMidori Oge
 
Beginners Scala in FAN 20121009
Beginners Scala in FAN 20121009Beginners Scala in FAN 20121009
Beginners Scala in FAN 20121009Taisuke Shiratori
 
Scalamacrosについて
ScalamacrosについてScalamacrosについて
Scalamacrosについてdekosuke
 
ネタじゃないScala.js
ネタじゃないScala.jsネタじゃないScala.js
ネタじゃないScala.jstakezoe
 
Reladomo in Scala #scala_ks
Reladomo in Scala #scala_ks Reladomo in Scala #scala_ks
Reladomo in Scala #scala_ks Hiroshi Ito
 
【LT】 怖くない恐怖のScala.js
【LT】 怖くない恐怖のScala.js【LT】 怖くない恐怖のScala.js
【LT】 怖くない恐怖のScala.jsYuto Suzuki
 

Similar a ScalaCL in ScalaKaigi (20)

ScalaでAndroidアプリ開発
ScalaでAndroidアプリ開発ScalaでAndroidアプリ開発
ScalaでAndroidアプリ開発
 
[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き
[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き
[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き
 
hscj2019_ishizaki_public
hscj2019_ishizaki_publichscj2019_ishizaki_public
hscj2019_ishizaki_public
 
Introduction new features in Spark 3.0
Introduction new features in Spark 3.0Introduction new features in Spark 3.0
Introduction new features in Spark 3.0
 
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarconSeasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
 
MoteMote Compiler Plugin
MoteMote Compiler PluginMoteMote Compiler Plugin
MoteMote Compiler Plugin
 
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
 
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireSDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 Whire
 
1周遅れのScala入学 #nds41
1周遅れのScala入学 #nds411周遅れのScala入学 #nds41
1周遅れのScala入学 #nds41
 
201312 scalr[oss] installation_idcf
201312 scalr[oss] installation_idcf201312 scalr[oss] installation_idcf
201312 scalr[oss] installation_idcf
 
SCALR OSS版のインストール手順のご紹介 20131204 01
SCALR OSS版のインストール手順のご紹介 20131204 01SCALR OSS版のインストール手順のご紹介 20131204 01
SCALR OSS版のインストール手順のご紹介 20131204 01
 
Node.js勉強会 Framework Koa
Node.js勉強会 Framework KoaNode.js勉強会 Framework Koa
Node.js勉強会 Framework Koa
 
言語アップデート -Scala編-
言語アップデート -Scala編-言語アップデート -Scala編-
言語アップデート -Scala編-
 
Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)
 
NTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみよう
NTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみようNTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみよう
NTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみよう
 
Beginners Scala in FAN 20121009
Beginners Scala in FAN 20121009Beginners Scala in FAN 20121009
Beginners Scala in FAN 20121009
 
Scalamacrosについて
ScalamacrosについてScalamacrosについて
Scalamacrosについて
 
ネタじゃないScala.js
ネタじゃないScala.jsネタじゃないScala.js
ネタじゃないScala.js
 
Reladomo in Scala #scala_ks
Reladomo in Scala #scala_ks Reladomo in Scala #scala_ks
Reladomo in Scala #scala_ks
 
【LT】 怖くない恐怖のScala.js
【LT】 怖くない恐怖のScala.js【LT】 怖くない恐怖のScala.js
【LT】 怖くない恐怖のScala.js
 

Más de Hideyuki Takeuchi

オープンソースプロジェクト E2D3のご紹介
オープンソースプロジェクト E2D3のご紹介オープンソースプロジェクト E2D3のご紹介
オープンソースプロジェクト E2D3のご紹介Hideyuki Takeuchi
 
どんなデータでもキレイに魅せる! 〜HTML5/JavaScriptでグラフを描画する今時の手法〜
どんなデータでもキレイに魅せる! 〜HTML5/JavaScriptでグラフを描画する今時の手法〜どんなデータでもキレイに魅せる! 〜HTML5/JavaScriptでグラフを描画する今時の手法〜
どんなデータでもキレイに魅せる! 〜HTML5/JavaScriptでグラフを描画する今時の手法〜Hideyuki Takeuchi
 
とあるCTØの切込隊長日誌(スタートアップ) ビジネス篇
とあるCTØの切込隊長日誌(スタートアップ) ビジネス篇とあるCTØの切込隊長日誌(スタートアップ) ビジネス篇
とあるCTØの切込隊長日誌(スタートアップ) ビジネス篇Hideyuki Takeuchi
 
Web時代の大富豪的プログラミングのススメ
Web時代の大富豪的プログラミングのススメWeb時代の大富豪的プログラミングのススメ
Web時代の大富豪的プログラミングのススメHideyuki Takeuchi
 
Real-Time 3D Programming in Scala
Real-Time 3D Programming in ScalaReal-Time 3D Programming in Scala
Real-Time 3D Programming in ScalaHideyuki Takeuchi
 

Más de Hideyuki Takeuchi (6)

オープンソースプロジェクト E2D3のご紹介
オープンソースプロジェクト E2D3のご紹介オープンソースプロジェクト E2D3のご紹介
オープンソースプロジェクト E2D3のご紹介
 
どんなデータでもキレイに魅せる! 〜HTML5/JavaScriptでグラフを描画する今時の手法〜
どんなデータでもキレイに魅せる! 〜HTML5/JavaScriptでグラフを描画する今時の手法〜どんなデータでもキレイに魅せる! 〜HTML5/JavaScriptでグラフを描画する今時の手法〜
どんなデータでもキレイに魅せる! 〜HTML5/JavaScriptでグラフを描画する今時の手法〜
 
とあるCTØの切込隊長日誌(スタートアップ) ビジネス篇
とあるCTØの切込隊長日誌(スタートアップ) ビジネス篇とあるCTØの切込隊長日誌(スタートアップ) ビジネス篇
とあるCTØの切込隊長日誌(スタートアップ) ビジネス篇
 
Web時代の大富豪的プログラミングのススメ
Web時代の大富豪的プログラミングのススメWeb時代の大富豪的プログラミングのススメ
Web時代の大富豪的プログラミングのススメ
 
Reactive Programming
Reactive ProgrammingReactive Programming
Reactive Programming
 
Real-Time 3D Programming in Scala
Real-Time 3D Programming in ScalaReal-Time 3D Programming in Scala
Real-Time 3D Programming in Scala
 

Último

CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 

Último (9)

CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 

ScalaCL in ScalaKaigi

  • 2. 自己紹介 たけうちひでゆき Twitter: @chimerast Blog: http://chimera.st/ #wicket-ja, #mongotokyo, #rpscala Seasarの端っこでS2Wicketのメンテナンスしています 永遠のNEET 株式会社UZABASEというところの平社員に最近なりました 以前は社長とか個人事業主とかいろいろやってました 普段は(Java or Scala)+WicketでWebサービスを開発をしています 株式会社UZABASEでは一緒に働いてくれる人を募集中です 主に投資・金融機関向けに企業・業界の情報分析Webサービスを提供 ScalaとかWicketとかMongoDBとかを使った仕事もあります http://www.uzabase.com/ 2
  • 3. お題のGPUって何? グラフィックカードにくっついている演算装置 主に3Dグラフィック描画に使用される ポリゴン頂点の座標変換(アフィン変換) 秒間約60億回の行列・ベクトルの乗加算(1頂点あたり単精度浮動小数 x (16 + 4) 回の演算) ピクセルごとの色の合成処理 秒間約600億ピクセルの処理(1ピクセルは単精度浮動小数 x 4) 浮動小数点の並列演算が超得意 3072ユニット(コア)/ 5.1TeraFLOPS(単精度)/ 1.27TeraFLOPS(倍精度) Core i7 3.5GHz : 4コア / 112GigaFLOPS(AVX命令使用単精度) 旧地球シミュレータ(2002年段階): 実効性能35.86TeraFLOPS 600億円 ベクトル演算が得意 三角関数・指数関数も得意(のはず?) 3 AMD Radeon HD 6990 スペックより 7万円くらいのグラボ
  • 4. 4 旧型地球シミュレータ = 600億円 注: 極端な表現です 実際には考慮すべきことがたくさんあります 7万円 x 7 = 49万円
  • 6. GPGPU General-purpose computing on graphics processing units GPUを汎用計算処理に利用する技術 データ並列に特化(タスク並列は不得意) 専用言語でカーネルプログラムを記述しホストプログラムからAPIで実行 CUDA, ATI Stream, OpenCL サーバ用のGPGPU専用ボードも販売されている: NVIDIA Tesla 最近ではスパコンを作るにもGPUがよく使われている 東工大: TSUBAME (TOP 5) 長崎大: DEGIMA (TOP 430 3700万でスパコンを作ったとかで話題に) 中国: 天河一号A (TOP 2) 中国: Nebulea (TOP 4) 6
  • 7. OpenCL ① マルチコアCPU、GPU等の計算資源を使用した並列コンピューティング用のフレームワーク GPUに限ったものではなく、CPU、Cell、DSPなども扱う 携帯電話や組み込み向けのProfileもある 専用のOpenCL C言語で記述 ベクトル演算が拡張されたC言語 再起ができないとかいろいろ制限もある OpenCL APIを通してソースコードをコンパイル&実行 7 __kernel void dataParallel(__global float4* a, __global float4* b, __global float4* c) { inti = get_global_id(0); c[i].xyz = a[i].xyz + b[i].xyz; c[i].w = a[i].w * b[i].w; }
  • 8. OpenCL ② 難点 初期化処理やバッファの確保など本質以外のコードが非常に多い JavaCL OpenCLのAPIを比較的高レベルに抽象化 それでもバッファ確保とかイベントの管理のコードが必要 OpenCL Cの関数を呼び出すラッパクラスのジェネレータとかある もっと簡単に使えないの? 8 そんなあなたに ScalaCL
  • 9. ScalaCL Compiler Plugin ① ScalaからOpenCLを簡単に使えるようにするコンパイラプラグイン http://code.google.com/p/scalacl/ JavaCLをベースに使用 OpenCLを使ってメソッドが高速化された専用の配列/Rangeクラス 要素はプリミティブ型およびそのTupleのみ(8要素まで) map, filter, zip, zipWithIndex, toArray, sum, product, min, max Scalaコードをコンパイル時にOpenCLC言語に変換 CLArray, CLRangeのmap, filterの引数の関数ブロックをOpenCL C に変換 ブロックから外部の変数、メソッドにアクセスできないなど制限はある ちゃんとコンパイルエラーになります 三角関数などscala.mathの関数で使えるものがある 使えない演算・関数も多い(ベクトル演算とか) 9
  • 10. ScalaCL Compiler Plugin ② Scalaの標準Collectionのメソッドをコンパイル時にwhile文に変換して高速化 reduce/scan/fold|Left/Right forall, exists, count foreach, map, filter, filterNot, takeWhile, dropWhile Array.tabulate 個人的にはどっちかというとおまけだと思う Warning :ScalaCL might still have (unknown) bugs, it's currently far from being finished (especially on the OpenCL side). ScalaCL is not production-ready ! 実際Scala -> OpenCL Cの変換がかなり不安定です 10 今後に期待!!
  • 11. ScalaCLの使い方 インストール(OpenCLが使える前提で) sbaz update sbaz install scalacl サンプルコード コンパイル/実行 scalacTest.scala scala Test 特にオプションは必要ない(sbazでインストールすると勝手に使われるので注意) export SCALACL_VERBOSE=1 コンパイル時および実行時に変換前と変換後のコードを標準出力に出力 11 import scalacl._ implicit val context = Context.best (0 until 100).cl.map(cos(_)).sum
  • 12. 性能評価/プログラム 単純なmap cos x 100 Tupleの配列 12 ScalaCLの map等は非同期実行されるため最後に sumで確実に同期 Val range = (0 until 100000) val tuples = Array.fill(100) { ((1, 2, 3, 4), (5, 6, 7, 8)) } range.map(_ * 2).zipWithIndex.map(p => p._1 * p._2).sum range.map{ x => var total = 0.0 for (i <- 0 until 100) { total += cos(x * i) } total }.sum tuples.map { case (a, b) => a._1 * b._1 + a._2 * b._2 + a._3 * b._3 + a._4 * b._4 }.sum https://github.com/chimerast/scala-scalacl
  • 13. 性能評価/結果 13 単位は全てマイクロ秒 System.nanoTimeを使用して100回計測し、結果の上位下位20%ずつを排除して平均 JAVA_OPTS=“-server -Xms2g -Xmx2g -verbose:gc -XX:CompileThreshold=10 -XX:NewSize=1g -XX:MaxNewSize=1g -XX:SurvivorRatio=200000” 環境 iMac 27-inch, Mid 2011 / MacOSX 10.7 3.1 GHz Intel Core i5 (Sandy Bridge) / 12 GB 1333 MHz DDR3 AMD Radeon HD 6970M 1024 MB / 960ユニット Java 1.6.0_26 64bit / Scala2.9.0.1
  • 14. おまけ(GPUつながり的な意味で) ScalaでMikuMikuDanceのローダ&レンダラを作ってみた OpenGL with GLSL OpenGLライブラリとしてLWJGLを使用 実装できている部分 モデルのロード IKボーン、物理演算以外のアニメーション IKボーンのプログラムの仕方がよくわからなくてここから進まない Scala成分 1600行ぐらい GLSL成分 70行ぐらい 14
  • 15. おしまい ご清聴ありがとうございました 株式会社UZABASEでは一緒に働いてくれる人を募集中です フリーダムな環境です 主に投資・金融機関向けに企業・業界の情報分析Webサービスを提供 基本JavaですがScalaとかWicketとかMongoDBとかを使った仕事もあります http://www.uzabase.com/ 15