Scribble at 2024-12-06 08:45:01 Last modified: 2024-12-06 22:48:34

添付画像

ヘテロジニアス・コンピューティングに関する寄稿記事の第 2 弾として、短期間の「リタイア」を経て 2021 年にインテルに復職した James Reinders が、前回の記事「SYCL* でヘテロジニアス・プログラミングの課題を解決する」に続いて、SYCL* が C++ のヘテロジニアスな将来にどのように貢献するかを述べます。今回は、SYCL* 委員会の現委員長でもある Codeplay Software Ltd. の Michael Wong 氏と一緒に、「SYCL* に関する重要な疑問」について考察します。

SYCL* を使用すべき理由

先日、500円ていどの投げ売り価格で手に入れた Data Parallel C++ という本は、SYCL という並列処理用のライブラリを解説していて、特に僕が無知な分野であるため、非常に興味深い。そして、いつも曖昧にだが敬服している組み込み系の分野では、上のようなサイトが幾つかあって、有益な情報を提供してくれている。そのへんの二束三文な自称メディアとは違って、まず記事の冒頭に初出の日付と最終更新日が明記されているだけでも好意的な印象を覚えるね。情報の取り扱いについて真面目に取り組んでいる証拠だと思う。僕は企業の CPO として、こういう CIA-triad の integrity に相当する指標というのは、何もリスク・レベルだけの話に限る必要はないと思っていて、公開している文書全般についても当てはめて良い指標だと考えたら、初出や更新日付を明記することは integrity が保たれている自己証明になるはずだ。

さて、そういうわけで SYCL(シックル "sickle" と発音するらしい。ちなみに何かの頭文字から作った略語というわけではないと書籍では説明されているが、もともとは "SYstem-wide Compute Language" の略だったようだ。変な説明だな)は、クロス・プラットフォームで使える C++ のライブラリだ。Wikipedia では "high-level programming language" と定義しているが、C++ と無関係に実装・実行できるわけでもないだろうから、これは誤解をまねく。ともあれ、SYCL は OpenGL や Vulkan といったグラフィック系の規格策定で知られているクロノス・グループが作った仕様にもとづいていて、用途が特殊であるためか日本語のウィキペディアにはエントリーがないけれど、上記のように組み込み系の業界では広く知られている仕様の一つだと言っていいだろう。そして、最近では llama.cpp というツールが応用事例として紹介されている。llama.cpp は、Meta の大規模言語モデルをコマンドラインで操作するツールで、SYCL が他の分野からも知られるようになる一つの事例となるかもしれない。

このような、CPU アーキテクチャに対応する開発というものは、もちろんドライバや組み込み系では必須の技能や知識であり、こうした分野の成果を負って、はじめて「クロス・プラットフォーム」だの「移植性」だのと言えるわけであって、JVM を使ったり C でプログラムが書けるていどでプログラマなどと称していては恥ずかしいという気が昔からずっとある。いわんや、僕も含めて Python や PHP のような処理系に対応する開発だけで大半の仕事をしてきたような人間は、何十年の経験があったりオライリーから本を出版していようと、本来なら「たかが処理系のエンド・ユーザ」にすぎないという自覚がある。

しかし他方で、これら CPU アーキテクチャに対応する開発というものは、ハードウェアへの依存度が強くなっていって汎用性のない技能を高めた部分最適化を求められるようになるというトレード・オフが生じる。したがって、システム・アーキテクトという職能を求められる僕らのような役職者としては、趣味的なレベルならともかく仕事としては続けられないとも思う。もちろん、些事や雑務だとは断じて思っていないが、たとえば Intel アーキテクチャに対応する開発などというものは、そもそも Intel という企業があってこその技能や知識であり、そこでの仕様を理解することが次世代の技術なり技能を見出すきっかけになることを否定するつもりはないけれど、そんなわずかなチャンスのためにそのレベルの技能を学んだり仕事として続けるほどのコミットするつもりはないし、いわんやそのようなチャンスのためだけに Intel という企業をサポートしたり存続させる、コンピュター・サイエンス的な必要性(もちろん証券市場やビジネス上の必要は別である)というものはないだろう。

  1. もっと新しいノート <<
  2. >> もっと古いノート

冒頭に戻る