WebAssemblyがSIMDをサポート、「WebAssembly SIMD」がChromeやFirefoxで標準実装。画像処理や物理演算など高速実行

2021年4月21日

ChromeなどのWebブラウザに搭載されているJavaScriptエンジン「V8」の開発チームは、WebAssemblyでSIMD命令をサポートする「WebAssembly SIMD」を来月、2021年5月にリリース予定のChrome 91からデフォルトで利用可能にすることを明らかにしました

Firefoxでもx86版、x86-46版においてはすでにフラグを設定することでWebAssembly SIMDが利用可能になっており、Node.jsでもフラグの設定で利用可能になっています。

これによりWebAssemblyで画像処理などが高速に実行できるようになることが期待されます。

WebAssemblyとは、Webブラウザなどに実装された仮想マシン上で、ネイティブコードとほぼ同様の実行速度を実現するバイナリフォーマットです。すでに主要なWebブラウザやNode.jsなどに搭載されているJavaScriptエンジンはWebAssemblyに対応しています。

またWasmerやWasmtime、Lucetといった、Webブラウザなどから独立したWebAssemblyランタイムなども登場しています。

固定長128ビットのSIMD命令に絞ってWebAssembly SIMDとして標準化

今回、WebAssemblyから利用可能になるSIMD(Single Instruction, Multiple Data)とは、一般に1つの命令で同時に複数のデータを処理できるプロセッサの命令、もしくはその処理のことを指します。

これを活用することで、単純な演算を大量に繰り返すような画像処理や機械学習、物理演算などの処理が高速になるのです。

WebAssembly SIMDは、WebAssemblyからSIMD命令を呼び出すための標準仕様とその実装です。

WebAssemblyはW3Cを中心に標準仕様の策定が進められており、WebAssembly W3C Processで設定されているプロセスには「1. Feature Proposal」「2. Proposed Spec Text Available」「3. Implementation Phase」「4. Standardize the Feature」「5. The Feature is Standardized」の5段階があります。

WebAssembly SIMDは現在、第四段階にあると説明されています。

ただし、WebAssembly SIMDはあらゆるプロセッサのさまざまなSIMD命令に対応するわけにもいかないため、次のようにある程度絞られた仕様での策定が進んでいます。「Fast, parallel applications with WebAssembly SIMD」から引用します。

The set of SIMD instructions is large, and varied across architectures. The set of operations included in the WebAssembly SIMD proposal consist of operations that are well supported on a wide variety of platforms, and are proven to be performant. To this end, the current proposal is limited to standardizing Fixed-Width 128-bit SIMD operations.

SIMD命令群は数多くあり、アーキテクチャによっても異なります。WebAssembly SIMDのプロポーザルに含まれている演算は、幅広いプラットフォームでサポートされ、高性能であることが明確であるもので構成されています。そこで今回のプロポーザルでは固定長128ビットのSIMD演算を標準化することに限定されています。

WebAssemblyのSIMD対応によって画像処理などが高速に

WebAssembly SIMDは5月リリースのChrome 91からデフォルトで利用可能になる予定ですが、Chrome 84から90までのバージョンでも「Origin Trials」として利用可能になります。

Origin Trialsとは、あらかじめその機能を使うことを登録した開発者にのみ、機能を解放する仕組みです。一定期間が過ぎると自動的にその機能は使えなくなります。

かつてWebブラウザなどでの試験的な機能の実装はベンダプレフィクスを用いることで利用可能にしていました。しかしその機能がやがて標準となり正式版として実装されても、ベンダプレフィックスによるベンダ依存の表記がいつまでもWebアプリケーションなどに残り続けてしまうという負の側面がベンダプレフィクスにはありました。 Origin Trialsはこれを反省し、利用に期限を設けることで実験的機能に依存した表記や実装がいつまでも残り続けないようにしたものです。

下記は、そのOrigin Trialsを利用してWebAssembly SIMDを活用したデモ動画です。画像処理ライブラリのOpenCVをWebAssembly SIMD対応としてコンパイルし、実行。クレジットカードの券面を高速に読み取っています。

今後、Webブラウザを含むさまざまなエッジにおいて画像処理や機械学習処理などが行われることになるとみられます。WebAssembly SIMDの登場は、こうした処理を快適にしてくれることでしょう。

このエントリーをはてなブックマークに追加
follow us in feedly




カテゴリ

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed


最新記事10本