Hastega @ Lonestar ElixirConf 2019
Austin で開かれた Lonestar ElixirConf 2019 にて Hastega の発表をしてきました。
公式サイトに掲示した発表概要
We’ve succeeded in implementing a demonstration program in which an Elixir code invokes directly a GPGPU benchmark by Rustler. We propose a Hastega (Hyper Accelerator of Spreading Tasks for Elixir with GPU Activation) method that converts an Elixir code using Enum/Flow to an executable code for GPU or multi-core CPU with SIMD.
Elixir コードから Rustler で GPGPU ベンチマークを直接呼び出すデモプログラムの実装に成功した。我々は Enum / Flow を使った Elixir コードを GPU または SIMD つきのマルチコアCPUで実行できるコードに変換する Hastega メソッドを提案する。
We’ve conducted a performance evaluation using the Logistic Maps of the experimental implementation of GPGPU using the Hastega method. We’ve got the following results: our Hastega is 4-8 times faster than pure Elixir executed by only CPU our Hastega is up to 3 times faster than CuPy/Python executed with GPU our Hastega is only 1.5 times slower than native code executed with GPU
Hastega 法によるロジスティック写像を用いた GPGPU の実験的な実装の性能評価を行ったところ,次のような結果が得られた:
- Hastega は CPU のみで実行する Elixir のみのコードより4〜8倍速い
- Hastega は GPU を用いて実行する CuPy / Python のコードより3倍以上速い (英語で up to と書いたのは誤訳でした)
- Hastega は GPU を用いて実行するネイティブコードと比べて 1.5 倍程度しか遅くない
Now, we implement Linear Regression and Neural Network in Elixir, and will accelerate it with Hastega. Our main future work is to implement a compiler from Elixir code with Enum/Flow to native code for GPU and/or multi-core CPU with SIMD.
現在,線形回帰とニューラルネットワークを Elixir で実装して,Hastega で高速化しようとしている。主な将来課題は,Enum / Flow を用いた Elixir コードから GPU もしくは SIMD つきのマルチコアCPUのネイティブコードへ変換するコンパイラを実装することである。
プレゼンテーション資料
諸事情で開催3日前まで1ミリもプレゼンテーションを準備していませんでしたが,行きの飛行機からようやく書き始めました。
インパクトあるプレゼンテーションを目指して,魔法と侍と禅の世界観で書いてみました。その結果は動画をご覧ください。
動画
そういうわけで,Hastega は大いに反響がありました!
スタンディング・オベーションこそ起こらなかったものの,終わった後に “You’re the best presenter of this conference!” と賞賛されたり,会う人会う人に “Wabi-Sabi!” と声をかけられたりするような状態でした。
中でも Elixir 創始者の José Valim (ジョセ・バリム) からは,講演終了後に実装の詳細について,とても熱心に質問しにきてくれました。José と今,Hastega を中心とした「文通」をしております。
英語習得法について
英語については学生時代に英語が原因で留年しかけたくらい苦手だったのですが,基本的に引きこもりなので同僚と比べて少ないながらもそれなりに国際会議発表で経験を積み,20年以上かけて苦手克服をコツコツとしてきた結果,まあ普段の英語論文の読み書きにはそんなに困らない程度にはできるようになりました。
一般に,得意を伸ばすのは容易ですが,苦手を克服するのは時間がかかるものです。そして,どんなに「天職」に就いたとしても,何かしら苦手要素は残るものです。そして苦手なことでも,じっくり時間をかけて取り組めば,いつかはできるようになるというのが,教育工学の一分野,インストラクショナル・デザインの重要な原則の1つである「キャロルの時間モデル」が説くところです。できるだけ得意を生かせる仕事に就いて,残った苦手要素を時間をかけて焦らずじっくりと克服していく,というのが,人生設計をする上でとても大事なことではないかなと思います。
私にとって劇的に効果的だった英語習得方法をご紹介します。
- フォニックス
- 多読
- 海外技術交流のSlack
番号は取り組む順番です。
1,2 については,既存のリソースがいろいろあるので,活用しましょう。この2つを教えてくれるトレーナーが身近にいると,本当に助かります! 私の場合は身近に相談できる人がいたのが幸いでした。
3については,「parcel に Pull Request を送って merge されるまでの顛末記〜生まれてはじめて国際的に OSS への貢献をしてみたら,とても歓待された」に経緯を書いています。(Shawn は元気かな。。。parcel Slack から Shawn が姿を消して以来,parcel からすっかり遠のいてしまいました。。。)
ソフトウェア技術者の皆さんには,お気に入りの OSS について,今時はだいたい Slack があるんじゃないかと思うので,join して commit することを強くオススメします! 英語だけでなく,技術力も高まります!
コツは,英作文するときに,できるだけ時間をかけないで,自分の語彙力の範囲でベストを尽くして平易に説明することです。
書き終わった後で,自分の書いた英文法を見直し,人の書いた文章から文法や語彙を学び,英英辞典やシソーラスを使って単語やフレーズの語彙力を広げるふりかえりをしましょう。さらにフォニックスの要領で,一連のチャットをできれば大きな声で読み上げましょう。そうすると,reading, writing, listening, speaking の4技能が,自然と鍛えられます。
私はこれから Medium (英語版)と arXiv での発信を頑張ります。慣れてきたら英語プレゼンテーションを作って,YouTube 発信もしてみたい。私がこういうときにいつもやっている「素振り」です。
あと,日本語を英語に「逐語訳」しようと思わないほうがいいです。英語話者には英語話者に向けた説明のしかたで,一から説明を考えたほうが伝わります。今回の Hastega 講演のスタイルは,普段の私の日本語でのプレゼンテーションスタイルとは全く異なるものです。侍と禅で説明するなんて,日本語話者にはしませんって。しつこく侍や禅,ディストピアの画像を繰り返してウケを狙うなんてのも,私の本来のプレゼンテーションスタイルじゃありませんって。英語話者にインパクトがありそうな表現を追求した結果です。
けっきょくのところ,外国語でのコミュニケーションで大事なのは,表面的な外国語能力だけでなく,自分や相手の文化や背景をどれだけ理解しているかだと思います。普段から,文化について教養を身につけることが,とても大事です。自分の興味の赴くまま,読書をしましょう。もちろん洋書で読めると良いのですが,和書でも構いません。そして,外国人相手に日本や各国の文化や歴史,哲学といったことを説明するつもりで,英作文して読み上げてみるといいでしょう。たとえば,オタク趣味のある人は,オタク文化について英語で語ってみると良いのです。技術文書だけでなく,趣味の話も Medium が良いですね。
追記: ランチタイムの夢のような時空間
2日目のランチタイムの時,講師控え室で始まったセッション。私は何も知らずにたまたまこの場にいて,Hastegaプレゼンテーションの練習をしていたところへ,唐突に声をかけられてびっくり。話をした後で録音していることに気づいて,またびっくり。
本当にこの場は夢のような時空間で,Elixir/Phoenix/Nerves そして Hastega の未来について語られる「厨二病」的な場でした。
Lonestar ElixirConf 2019 Lunchisode
今聞いても今の私の実力だと話の詳細を半分も聞き取れない。そんな中,必死に議論に食らいついているけど,なかなかひどい英語。まあでも,我ながら頑張ったよね。