PoCL 1.6、OpenCL標準のスタンドアロン実装

PoCL 1.6 (Portable Computing Language OpenCL)プロジェクトの最新バージョンがリリースされました。バージョン1.6の主な変更点としては、Clang/LLVM 11.0との互換性、CUDAのパフォーマンスと機能の向上、PowerPCとの互換性の向上、OpenCLのデバッグ機能の改善などが挙げられます。

PoCLをご存知ない方のために説明すると、 PoCLはOpenCL標準(1.2、一部2.0互換機能あり)の移植性の高いオープンソース(MITライセンス)実装です。高い移植性とマルチデバイス(真に異種混在)に対応したオープンソースのOpenCL実装であることに加え、このプロジェクトの主な目的は、多様なOpenCL互換デバイスを単一の中央集約型プラットフォームに統合することで、それらの相互運用性を向上させることです。

さらに、重要な長期目標のXNUMXつは、ランタイムおよびコンパイル技術を使用するデバイスタイプでのOpenCLプログラムのパフォーマンスの移植性を向上させることです。

OpenCLカーネルコンパイラはLLVMに基づいており、OpenCL CへのインターフェイスとしてClangが使用されます。適切な移植性とパフォーマンスを提供するために、OpenCLカーネルコンパイラは、さまざまなハードウェアリソースを使用してコード実行を並列化できる複合関数を生成できます。 、VLIW、スーパースカラー、SIMD、SIMT、マルチコア、マルチスレッドなど。 ICD(Installable Client Driver)ドライバーがサポートされています。 CPU、ASIP(TCE / TTA)、HSAアーキテクチャに基づくGPU、およびNVIDIA GPU(CUDA)を介して作業を提供するバックエンドがあります。

PoCL1.6の主な新機能

この新しいバージョンのPoCL1.6は、コンパイル時にデバイスドライバーを有効にしてこの実装をコンパイルする機能を強調し、デバイスの可用性は起動時に検証されます(以前は、PoCLが構築および実行されているシステム)彼らは同じコントローラーをサポートしているはずです)。 condaパッケージマネージャーを使用して、Linux-x86_64およびLinux-ppc64leシステムのCUDAサポートを備えたPoCLバイナリパッケージを配布する機能を実装しました。

目立つもう11つの変更点は、LLVM XNUMXのサポートと、CPUコントローラーを使用するときにOpenCLコードをデバッグするための拡張された可能性です。

さらに、CUDAバックエンドのパフォーマンス最適化が実行され、ローカルメモリ(FFT、GEMM)の使用に関連する操作を大幅に高速化できることが強調されています。

SHOCベンチマークを使用したベンチマーク(現在継続的にテストされている)は、これらの最適化により、特にFFTやGEMMなどのローカルメモリを含むベンチマークのパフォーマンスが、以前のリファレンス。PoCLは現在、Nvidia独自のOpenCLドライバーで競争力のあるパフォーマンスを実現することがよくあります。 残りの問題領域の根本原因を特定して排除するための貢献を歓迎します。 また、OpenCL 1.2 /3.0標準の機能カバレッジを改善するための貢献を歓迎します。

  • 多くのテストでのPoCLのパフォーマンスは、NVIDIA独自のOpenCLドライバーに近くなりました。
  • HARDENING_ENABLEコンパイルパラメータを追加して、パフォーマンスの低下を犠牲にして、コンパイラオプションがより安全なlibpocl.soを生成できるようにしました。
  • PowerPC 8/9システムのサポートが返されました。pthreadおよびCUDAデバイスを使用する場合のOpenCL実装レベルは、x86_64システムのCUDAレベルに対応します。
  • __ローカルブロックを使用するCUDAカーネルのABIを変更しました。 アップグレード後、ユーザーはpoclキャッシュをクリアする必要があります。
  • STATIC_LLVMおよびllvm-configを使用してバインドするライブラリを定義する代わりに、SINGLE_LLVM_LIBビルドオプションのサポートが削除されました。

最後に、この新バージョンについてさらに詳しく知りたい場合は、元の発表内容をご確認ください。

この実装についてさらに詳しく知りたい方は、公式ウェブサイトをご覧ください。そこにはドキュメントやダウンロード可能なファイルが掲載されています。

プロジェクトコードはMITライセンスの下で配布され、作業はプラットフォームX86_64、MIPS32、ARM v7、AMD HSA APU、およびVLIWアーキテクチャを備えたさまざまな特殊なTTAプロセッサでサポートされます。


Googleで優先ソースとして追加する