まえがき 初めまして、R&Dチームの宮﨑です。趣味はFPSをやってます。150時間やってますが未だにドンかつを食べられていません。普段は深層学習のベンチマークを取ったりしています。 実はひと昔前からあった深層学習。近年実用性が増して一大ブームとなっています。実用的になった背景の一つとしてGPUを用いた高速化により深層学習の学習及び推論が実用的な時間で実行できるようになったことがあります。NVIDIAから提供されるCUDAを用いるとC言語に拡張を加えた形式でCPU+GPUのヘテロジニアスコンピューティングを記述できます。 CUDAを使用するにはCPU+GPUの環境がどのようなハードウェア構成をしており、その上でCUDAがどのようなシステムを構築しているのかを理解する必要があります。この理解なしに漫然とサンプルコードを真似するだけでは意図通りのパフォーマンスが出なかったり、そもそもAPIの意味

The KeplerGPU architecture's shuffle instruction enables threads within a warp to exchange data directly, reducing the need for shared memory and synchronization.Using the shuffle instruction, a warp reduction function can be implemented to reduce values within a warp, and this can be extended to ablock reduction by having each warp perform a partial reduction and then reducing the partial resul
(1) What is CUB? CUB provides state-of-the-art, reusable software components for every layer of the CUDAprogramming model: Parallel primitives Warp-wide "collective" primitives Cooperative warp-wide prefix scan, reduction,etc. Safely specialized for each underlying CUDA architectureBlock-wide "collective" primitives Cooperative I/O, sort, scan, reduction, histogram,etc. Compatible with arbitra
今回から何回かに分けてThrustのお話をします。 非常に有用なものである分他に資料も多いですが、触れずに置くのはコンセプトからしてナシだと思いましたので。 第1回の今回はまずvectorについてごく簡単に、配列の代わりに使う程度までの話をしましょう。 Thrustとは? Thrustは端的にいうならばC++におけるSTLに相当するようなライブラリです(違いはもちろん多くありますが)。 CUDA 4.0以降自動的にインストールされるようになっているので使うのにインストールなどは必要ありません。C++においては特にパフォーマンスを求める場合などを除き「配列ではなくvectorを使っておけ」なんて言われるものですが、CUDAにおいても特別な理由がない限り配列ではなくThrustのvectorを活用するのが良いでしょう。それぐらい有用なものです。 Thrustを使わない場合 これまでCUDAの

ReleaseNotes CUDA InstallationGuides Quick StartGuide InstallationGuideLinux InstallationGuideWindows CUDAProgrammingGuides CUDAProgrammingGuide Best PracticesGuide PTX ISA CUDA ArchitectureGuides Ada CompatibilityGuide Ada TuningGuide NVIDIA AmpereGPU Architecture CompatibilityGuide NVIDIA AmpereGPU Architecture TuningGuideBlackwell CompatibilityGuideBlackwell TuningGuide H
第6回 「CUDAプログラミングモデル①」 << 第5回 | 目次に戻る | 第7回 >> 今まで色々とCUDAを用いたGPUコンピューティングについてお話してきましたが、いまいちCUDAってまだよく分からないという方もいるかもしれません。 今回は、CUDAがどうGPUと絡んでくるのか、C言語とどう違うのかなど、CUDAプログラミングの概念についてなるべく分かりやすく要点を押さえて解説していきたいと思います。このCUDAプログラミングモデルこそGPUコンピューティングのキモになってきますので、しっかりと勉強するため次回と合わせて2回に分けてお送りします。 それではまずはもう一度CUDAについての話から始めましょう。 NVIDIAはGPUシリーズを開発・展開していく中で、2006年に発表されたGeForce 8800では、それまでハードの部分でグラフィックス専用の構造だったと

GPUの命令の実行方法CPUでは、基本的に1つの命令列で一組のデータを処理する。これに対して、GPUでは命令列は1つであるが、多数のデータの組を並列に処理するという方法を採る。例えば、3次元図形の頂点の座標変換を行うには、それぞれの頂点座標に変換行列を掛ける。この時、複雑な図形であれば頂点は多数あるが、変換行列を掛ける手順(プログラムの命令列)はすべて同じである。つまり、1つの命令列で、多数の異なる頂点座標データに同じ変換行列を掛けてやれば、多数の頂点の座標の変換を行うことができる。これは、座標変換を行うプログラム(スレッド)を並列に実行したことと同じである。NVIDIAは、この処理方法をSIMT(Single Instruction Multiple Thread)と呼んでいる。 GK110のような複雑なチップの全貌を1つの図にまとめるのは難しいが、おおよそ、上の図のような構造になって

1リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く