OpenCL

この記事はOpenCLについて解説した記事です。会話形式のやさしい文章で「OpenCL」の用語のイメージを紹介した後に、採用に役立つOpenCLの知識を解説しています。

1分で分かる!OpenCLとは?

ねぇねぇ、ジャバード先生。1つ聞いてもいい??

どうしたの?

この前さ、CUDAについて教えてもらったでしょ?

「CUDAはNVIDIA社のGPUに並列実行させるためのプラットフォーム」ってやつだね。

それそれ!

それがどうしたの?

いやさ、ふと昨日お風呂で考えてたんだけどね、GPUってNVIDIA社が独占状態なの?他にもメーカーあるんじゃないのかな?

そうだね。GPUのメーカーといえば、NVIDIA社とAMD(アドバンスド・マイクロ・デバイシーズ)社が有名だよ。

だよね!じゃあさ、AMD社のGPUの性能を引き出したいときはどうすればいいの?NVIDIA社のCUDAは、NVIDIA社のGPU専用なんだよね?

なるほど。ことりん君、いい質問だね。GPUの性能を極限まで引き出す方法として、NVIDIA社のGPUにはCUDAがあるけど、AMD社のGPUはどうすればいいの?ってことだね。

そうそう!もし、いい方法がないのであれば、NVIDIA社のGPU一択になるよね。

その心配はいらないよ!AMD社のGPUにも使えるOpenCL (オープンシーエル)っていうのがあるんだ。

OpenCL?

そう。OpenCLとは、Open Computing Languageを略した言葉で、CUDAと同じように並列処理を行うためのプラットフォームだよ。オープンっていう文字のとおり特定企業のものではなく、「どこのメーカーのGPUだろうがどんとこい!」っていうやつだよ。

あ、そんなのがあるんだね!じゃあAMD社のGPUの性能を引き出したいときはOpenCLを使えばいいんだね?

そうだね!実は、その他にもOpenACCとかC++ AMPとか色々あるんだけどね。

ふーん。色々あるんだね。

あ、ちなみにOpenCLはGPUのためのものだけではないからね。そこはCUDAとは違う点だね。

GPUのためのものだけではない??他にも使えるの??

そうだよ。OpenCLはCPUやGPUはもちろん、SONYのPlayStation3に搭載されていたCellプロセッサとかにも利用できるんだ。

それはすごいね!そんな便利なもの誰がつくったの??

実はOpenCLは、あのApple社が仕様を提案したんだ。そして標準化団体のクロノス・グループというところが、Apple社が提案した仕様を受け入れ、策定したんだよ。

Appleが関わっていたのか!あ、もしかしてさ、OpenCLはApple Siliconを搭載したMacに対しても利用できるの??

ところがそうじゃないんだよ。2018年06月に開催されたWWWDC2018っていうカンファレンスで「macOSやiOSはOpenCL非推奨だよ!」って発表したんだよ。まぁ非推奨って言い方がちょっと微妙で、実際は利用できるみたいなんだけどね。

あ、そうなんだ…。自分たちが言い出したのに、非推奨ってちょっと不自然な気がするね。

常に技術は進歩しているし、それぞれの企業で思惑もあるだろうからね。

なるほどねぇ。とりあえずOpenCLについてはよくわかったよ!ジャバード先生ありがとう!

はーい!またね!

OpenCLとは?採用に役立つの基礎知識

OpenCLとは、CPU、GPU、Cellプロセッサ、FPGAなどといった各種リソースを有効活用するための並列処理プラットフォームです。これは、Apple社が提案し、クロノス・グループによって策定されました。

OpenCLに類似した技術として、CUDAというものがあります。CUDAはNVIDIA社のGPU専用であることに対して、OpenCLはメーカーやリソース(CPUやGPUなど)に縛られない汎用的な並列処理のプラットフォームです。

なお、OpenCLを提案したApple社ですが、現在MacやiOSにおいてOpenCLは非推奨となっているようです。その代替としてMetalという独自のGPU用プラットフォームを推奨しています。

OpenCLを使うエンジニア

OpenCLを使うエンジニアとしては、3Dゲーム関連のエンジニアやAIエンジニア(機械学習エンジニア)、あるいは組み込みエンジニアなどが挙げられます。また、エンジニアではありませんがリサーチャーとしての求人も一定数あります。

OpenCLを使うエンジニアの特徴と在籍業界

OpenCLを使うエンジニアに共通しているのは、処理が重くなりがちな処理に対して、できるだけ高速化を求められるようなシステムなどを開発しているという点です。なお、業界としては3DゲームやAI(機械学習)をはじめ、医療、物理分野などに多く在籍している可能性が高いです。

採用する時に知っておくとよいこと

OpenCLとOpenGL

OpenGLというものがあります。OpenCLと非常に似ていますが、その内容は異なるものです。前述したとおり、OpenCLは並列処理のプラットフォームですが、OpenGLは3Dグラフィックスを実現するためのライブラリです。

また、OpenCLは画面出力を前提としていないため、様々な処理に転用することが可能です。一方、OpenGLは画面出力を前提としているため、画像処理のみにしか利用できません。

求人のポイント

求人を作成する時は、下記の内容を求人に入れるとよいです。

1システム(サービス)の詳細
※特にそのシステム(サービス)をなぜ作っているのかを熱量をもって記載する。
2開発環境
3現在のエンジニア組織の体制
4現行システムの課題と募集の背景
5求められる業務と期待値
6エンジニアとしてのスキルアップ支援制度の有無と詳細
7エンジニアチーム内での相互成長のための仕組み(勉強会やLT会など)の有無と詳細
8選考フロー
9待遇
10キャリアパス

OpenCLの豆知識

OpenCL関連のイベント 

OpenCL関連のイベントとしては、2022年4月に10th International Workshop on OpenCL and SYCLというカンファレンスが開催されます。

 

関連記事

  1. Lambda

  2. Docker

  3. zabbix

  4. VSCode

  5. EC2

  6. Microsoft 365