取引におけるOpenCL - ページ 4

 

AMD デベロッパー セントラル: OpenCL の技術概要。エピソード 2: OpenCL™ とは何ですか? (続き)



AMD デベロッパー セントラル: OpenCL の技術概要。エピソード 2: OpenCL™ とは何ですか? (続き)

このビデオでは、Justin Hensley が OpenCL のプラットフォームとメモリ モデルについて説明します。これらは、OpenCL を使用してアプリケーションを高速化する際に理解することが重要です。同氏は、ホストが GPU やマルチコア プロセッサなどの 1 つ以上の OpenCL デバイスに接続されており、これらのデバイスには単一命令複数データ モデルでコードを実行する計算ユニットがあると説明しています。ワークアイテムにはプライベート メモリがあり、ワーク グループには共有ローカル メモリがあり、各デバイスにはグローバルな定数メモリがあり、最大のパフォーマンスを得るには開発者がメモリの同期とデータを明示的に管理する必要があります。さらに、Hensley 氏は、デバイスへの作業の送信、データの同期とプロファイリングに使用される、デバイス、コンテキスト、キュー、バッファー、イメージ、プログラム、カーネル、イベントなどの OpenCL オブジェクトについても説明します。最後に、プログラムとカーネル オブジェクトの作成、メモリ オブジェクトの作成、カーネルの適切な実行順序を確保するためのイベントを含むコマンド キューの作成という 3 つの簡単な手順で OpenCL プログラムを実行する方法について概説します。

  • 00:00:00 このセクションでは、Justin Hensley が OpenCL のプラットフォームとメモリ モデルについて説明します。これは、OpenCL を使用してアプリケーションを高速化するときに理解することが重要です。ホストは、単一命令複数データ モデルでコードを実行する計算ユニットを備えた 1 つ以上の OpenCL デバイス (GPU、DSP、またはマルチコア プロセッサ) に接続されます。メモリに関しては、ホスト プロセッサには CPU のみがアクセスできるメモリがあり、コンピューティング デバイスにはグローバルな定数メモリ (非同期) があり、各ワークアイテムにはそのワークアイテムのみがアクセスできる独自のプライベート メモリがあります。ワーク グループには共有ローカル メモリがあり、デバイスから最大のパフォーマンスを得るには、開発者はメモリの同期とデータを明示的に管理する必要があります。最後に、Hensley 氏は、デバイスへの作業の送信、データの同期とプロファイリングに使用される、デバイス、コンテキスト、キュー、バッファー、イメージ、プログラム、カーネル、イベントなどの OpenCL オブジェクトについて説明します。

  • 00:05:00 このセクションでは、講演者が OpenCL プログラムを 3 つの簡単なステップで実行する方法を説明します。まず、ソース コードを構築するためのプログラム オブジェクトと、引数を使用してさまざまなデバイス上で実行されるコードを含むカーネル オブジェクトを作成します。次に、メモリ オブジェクト (イメージまたはバッファ) を作成します。 3 番目に、コマンド キューを作成し、それを使用してさまざまなデバイスの作業をキューに入れますが、作業順序は正しい順序である場合もあれば、順序が狂う場合もあります。したがって、イベントは、依存関係が存在する場合にカーネルが必要な順序で実行されることを保証するために使用されます。
Episode 2: What is OpenCL™? (continued)
Episode 2: What is OpenCL™? (continued)
  • 2013.05.27
  • www.youtube.com
In this video, you continue to learn about OpenCL™. We describe the details about the OpenCL™ platform and memory models. Topics covered include compute devi...
 

AMD デベロッパー セントラル: OpenCL の技術概要。エピソード 3: リソースのセットアップ



AMD デベロッパー セントラル: OpenCL の技術概要。エピソード 3: リソースのセットアップ

OpenCL チュートリアル シリーズのエピソード 3 では、講演者が OpenCL でのリソースのセットアップと管理について詳しく掘り下げ、メモリ オブジェクト、コンテキスト、デバイス、コマンド キューなどのトピックを取り上げます。イメージの読み取りおよび書き込み呼び出しとサポートされる形式に焦点を当てて、イメージのメモリにアクセスして割り当てるプロセスについても説明します。 OpenCL イベント管理システムを使用してデータ転送の完了を保証する方法を説明しながら、同期および非同期メモリ操作の特性を調べます。最後に、CL get device info 呼び出しを使用してデバイス情報をクエリし、アルゴリズムに最適なデバイスを選択することをお勧めします。

  • 00:00:00 このセクションでは、AMD の Justin Hensley が、特にメモリ オブジェクト、コンテキスト、デバイスのセットアップに焦点を当てて、OpenCL でのリソース割り当てについて説明します。彼は、システムにクエリを実行して利用可能なデバイスを検索し、共有コンテキストを作成し、デバイスと通信するためのコマンド キューをセットアップする方法を説明します。 Hensley 氏は、CPU の複数のコアが 1 つの OpenCL デバイスとみなされ、異なるコンテキストにあるデバイスはデータを共有できないことにも言及しています。アルゴリズムに最適なデバイスを選択するために、ユーザーは CL get device info 呼び出しを使用して OpenCL ランタイムにデバイス情報をクエリし、コンピューティング ユニットの数、クロック周波数、メモリ サイズ、サポートされる拡張機能を決定できます。最後に、Hensley 氏は、バッファーを単純なメモリーの塊として、イメージを不透明な 2D および 3D フォーマットのデータ構造として説明します。

  • 00:05:00 このセクションでは、OpenCL がイメージを処理する方法と、読み取りおよび書き込みイメージ呼び出しを介してイメージにアクセスする必要がある方法をビデオで説明します。画像のデータの形式とサンプラーについても説明し、サポートされる形式を決定するために CL のサポートされる画像形式の取得呼び出しを使用する方法についても説明します。画像バッファを割り当てるには、形式とサイズを設定し、CL バッファ作成呼び出しを使用して入出力データ用のバッファ オブジェクトを作成します。キュー読み取りの CL とキュー右バッファーの CL は、それぞれメモリ オブジェクトからのデータの読み取りとメモリ オブジェクトへのデータの書き込みに使用されるコマンドです。メモリ領域をマップする必要がある場合
    ホスト アドレス空間に対しては、キュー マップ バッファーの CL が使用されます。最後に、CLN キュー コピー バッファは、2 つのメモリ オブジェクト間でメモリをコピーするために使用されます。

  • 00:10:00 このセクションでは、講演者は、データは同じコンテキスト内に割り当てられたメモリ オブジェクトとのみ共有でき、すべての操作は同期または非同期で実行できると説明します。同期操作は、ブロッキング呼び出しが CL true に設定されている場合に実行されます。これは、実際のメモリ操作が行われるまでデータ転送がブロックされることを意味します。メモリの場所によっては、これに時間がかかる場合があります。あるいは、CL false の場合、非同期呼び出しとなり、オープン CL イベント管理システムを使用して、メモリが使用される前に完全にコピーされることを保証する必要があります。
Episode 3: Resource Setup
Episode 3: Resource Setup
  • 2013.05.27
  • www.youtube.com
In this video, you learn about resource allocation, resource setup and how to setup the OpenCL™ runtime. Topics include choosing devices, creating contexts a...
 

AMD デベロッパー セントラル: OpenCL の技術概要。エピソード 4: カーネルの実行



AMD デベロッパー セントラル: OpenCL の技術概要。エピソード 4: カーネルの実行

このセクションでは、Justin Hensley が OpenCL でのカーネル実行のトピックを取り上げ、カーネル オブジェクトには特定のカーネル関数が含まれており、カーネル修飾子を使用して宣言されることを説明します。彼は、カーネル引数の設定やカーネルのエンキューなど、カーネルを実行する手順を詳しく説明します。 Hensley 氏は、イベントを使用して複数のカーネルを管理し、同期の問題を防ぐことの重要性を強調し、CL wait for events を使用してイベントが完了するのを待ってから続行することを提案しています。このビデオでは、実行に最も時間がかかるカーネルを最適化するためのアプリケーションのプロファイリングについても詳しく説明しています。

  • 00:00:00 このセクションでは、Justin Hensley が OpenCL でのカーネル実行について説明します。彼は、カーネル オブジェクトはプログラム内の特定のカーネル関数をカプセル化し、カーネル修飾子を使用して宣言されると説明しています。プログラム オブジェクトは、プログラム ソースまたはディスクからのプリコンパイルされたバイナリとデバイスのリストをカプセル化します。プログラム オブジェクトが構築されると、ユーザーは実行時に所有するデバイス用にそれをコンパイルできます。カーネルが構築された後、カーネル引数を設定し、カーネルをエンキューするという 2 つの基本的な実行手順でカーネルを実行する必要があります。引数を設定するには、ユーザーは「CL Set Kernel Arg」という関数を使用します。最初の引数は、実行する必要があるカーネルです。

  • 00:05:00 このセクションでは、引数のサイズを設定して実際にカーネルを実行する方法をビデオで説明します。使用される例では、グローバル サイズが指定されたサイズの画像高さの画像に設定された画像を処理します。このビデオでは、OpenCL ランタイムはタスクを非同期的にキューに入れるため、イベントを使用して実行ステータスを追跡するのはプログラマの責任であると説明しています。このビデオでは、コマンドを同期するさまざまな方法や、イベントを使用してキュー間で明示的に同期する方法についても説明しています。このビデオでは、1 つのデバイスと 1 つのキュー、および 2 つのデバイスと 2 つのキューの例を示し、明示的な依存関係の問題を回避するためにイベントを使用することの重要性を説明しています。

  • 00:10:00 このセクションでは、Justin Hensley が OpenCL 使用時のカーネルとイベントの管理方法について説明します。同氏は、複数のカーネルを管理し、同期の問題を防ぐ場合には、イベントの使用が重要であると説明しています。同氏は、すべてのイベントが完了するまで待って続行する CL イベント待ちを使用することと、後で OpenCL ランタイムが使用できるようにブロック ポイントをキューに入れて、アプリケーションをブロックせずに実行し続けることができるイベント待ちキューを使用することを提案しています。さらに、CL get イベント プロファイリング情報を使用してアプリケーションをプロファイリングできるため、開発者は実行に最も時間がかかるカーネルを最適化できます。
Episode 4: Kernel Execution
Episode 4: Kernel Execution
  • 2013.05.27
  • www.youtube.com
In this video, you learn about the execution and synchronization of OpenCL™ kernels. Topics include program and kernel objects, compiling and executing kerne...
 

AMD デベロッパー セントラル: OpenCL の技術概要。エピソード 5: OpenCL™ C を使用したプログラミング



AMD デベロッパー セントラル: OpenCL の技術概要。エピソード 5: OpenCL™ C を使用したプログラミング

このビデオでは、ワークアイテム関数、ワークグループ関数、ベクトル型、組み込み同期関数など、OpenCL™ C 言語のさまざまな機能について説明します。このビデオでは、効率的な並列コード作成とワーク グループ間でのメモリ共有のために正しいアドレス空間修飾子を使用することの重要性を強調しています。ベクトル型の概念については、カーネル ポインター引数、ローカル変数、プログラム グローバル変数の正しいメモリ空間の使用とともに詳細に説明します。さらに、組み込みの数学関数や、barrier や memfence などのワークグループ関数については、実行時にこれらの関数をチェックするための提案が含まれています。

  • 00:00:00 このセクションでは、AMD の Dustin Hensley が、ワークアイテム関数、ワークグループ関数、ベクトル型、組み込み同期関数などの OpenCL™ C 言語機能について説明します。 OpenCL は ISO C99 に基づいていますが、標準 C99 ヘッダー、関数ポインター、再帰、可変長配列、ビット フィールドがないという制限があります。 OpenCL には、効率的な並列コード記述を可能にするアドレス空間修飾子があり、同時にワーク グループ間でのメモリの共有も可能になります。さらに、組み込みのイメージ関数、およびランタイム情報にアクセスするための組み込みのランタイム関数を介したイメージへのアクセスが最適化されています。 Hensley 氏は、ワークアイテム関数を使用する単純なデータ並列カーネルをデモンストレーションし、さまざまな OpenCL 関数と変数を使用してそのカーネルを構築する方法を示しました。

  • 00:05:00 このセクションでは、OpenCL のベクトル型の概念について説明します。これらのベクター タイプは、さまざまなランタイム間で移植できるように設計されており、インドで安全にする特定の特性があり、ベクターの長さで調整され、組み込み関数を備えています。次に、ビデオでは、ベクトル リテラルの作成やベクトルの特定のコンポーネントの選択などのベクトル操作の例をいくつか示します。さらに、OpenCL にはいくつかの異なるアドレス空間があり、カーネル ポインター引数、ローカル変数、およびプログラム グローバル変数に正しいアドレス空間を使用することが重要であることに注意してください。メモリ空間を指定しないと、デフォルトでプライベートになり、問題が発生する可能性があります。

  • 00:10:00 このセクションでは、ポインタを使用してグローバル、ローカル、またはプライベート メモリ空間から別のメモリ空間にデータを変換することは OpenCL では許可されていないことについて説明します。必要なメモリ空間に対してデータを明示的にコピーする必要があります。セマンティクスと変換に関しては、スカラー変換とポインター変換については C99 規則に従いますが、ベクトル型については暗黙的な変換は許可されません。機械による処理に依存するのではなく、特定の関数を使用して操作で実行される丸めの種類を決定することによって、明示的であることの重要性が強調されます。 log 関数などの OpenCL の組み込み数学関数は、完全精度、半精度、ネイティブ関数などのさまざまなフレーバーを提供して、あいまいな C99 ライブラリのエッジ ケースをより効率的に処理します。また、このアンダースコア型またはある型を別の型に変換します。

  • 00:15:00 この抜粋では、講演者は OpenCL C の組み込みワークグループ機能と拡張機能について説明します。これらの機能には、メモリの同期を可能にするバリアやメンフィスなどの同期ツールが含まれます。講演者はまた、同じ機能を実行するために、すべての項目がヒットするとは限らないという障壁を設定するのではなく、ワークグループ内のすべての作業項目を使用することの重要性についても語ります。さらに、講演者は、アトミック関数やコンパイル時の丸めモードの選択など、さまざまな拡張機能についても説明します。講演者は、仕様書にアクセスしてこれらの関数と拡張機能について詳しく読み、実行時に確認することを推奨しています。
Episode 5: Programming with OpenCL™ C
Episode 5: Programming with OpenCL™ C
  • 2013.05.27
  • www.youtube.com
In this video, you learn about the OpenCL™ C kernel language. Topics include work items and work groups, data types, vector operations, address spaces, type ...
 

GPU 作業に OpenCL を使用する方法



GPU 作業に OpenCL を使用する方法

このビデオでは、カードに応じて CUDA または特定のグラフィックス ドライバーのインストールが必要な Windows のほとんどの新しいグラフィックス カードで動作できるオープン標準ツールとして OpenCL を紹介しています。講演者は、単純なプログラム、カーネルの作成プロセス、データのバッファー、カーネル引数とグローバル作業サイズの設定、OpenCL でのデバイス上でのワークロードの実行について、CUDA と比較しながら説明します。 GPU 作業用の OpenCL でのカーネルの作成、読み取りバッファーのエンキュー、メモリの割り当て解除に関連するパラメーターについて、計算を確認するためのサンプル コードを使用して説明しました。 OpenCL を使用してグレースケール画像に微妙なぼかしを適用する小さなプログラムを紹介することで、発表者は、OpenCL には CUDA より定型コードが多いものの、さまざまなグラフィックス カードに適用できるオープンで標準的なソリューションであり、メーカーに関係なくさまざまなシステムで再利用できることを強調しました。

  • 00:00:00 このセクションでは、講演者が OpenCL を紹介し、それが Windows のほとんどの新しいグラフィックス カードで動作するオープン スタンダードであることについて説明します。ただし、カードに応じて CUDA または特定のグラフィックス ドライバーをインストールする必要があります。次に、講演者は簡単なプログラムを提示し、それが OpenCL でどのように動作するかを CUDA と比較しながら説明します。デバイス上でワークロードを実行する前に、カーネルの作成、データ用のバッファーの作成、カーネル引数とグローバル作業サイズの設定のプロセスを経ます。

  • 00:05:00 このセクションでは、GPU 作業用に OpenCL でカーネルを作成する際に関係するパラメータについて講演者が説明します。グローバル作業サイズ パラメータは作業するユニットの数であり、ローカル作業サイズは各ユニットでどれだけの作業を行うかを表します。グローバル ワーク サイズは、ローカル ワーク サイズの倍数である必要があります。グローバル ローカル ワーク サイズを指定せずに作業を実行することもできますが、作業しているディメンションを把握できるように、両方を設定することをお勧めします。次に講演者は、エンキュー読み取りバッファーとメモリの割り当てを解除する方法について説明し、すべての計算が正しく行われたことを確認するためのサンプル コードを提供します。最後に、講演者はその例を、画像にぼかしを加えるワークロードと比較し、パラメーターとタプルの使用法を示します。

  • 00:10:00 このセクションでは、講演者が前の例のコード変更について説明し、画像に微妙なぼかしを実行するカーネルを紹介します。さまざまなサイズのポインターとバッファーを作成した後、スピーカーはカーネルに引数を設定してから、メモリーをフェッチしてポインターを解放します。最後に、スピーカーはグレースケール画像を読み取り、その結果にピクセルを設定し直し、グレースケール画像を書き込みます。

  • 00:15:00 このセクションでは、発表者は OpenCL を使用してグレースケール画像に微妙なぼかしを適用する小さなプログラムを紹介します。発表者は、OpenCL には CUDA に比べて定型コードが多いと指摘し、すべてのカーネル プログラムとコマンド キュー変数を整理するためにクラスまたはオブジェクトの使用を推奨しています。ただし、発表者は、OpenCL がオープンな標準ソリューションであり、さまざまなグラフィックス カードで動作し、特定のブランドやメーカーに縛られることなくさまざまなシステムで再利用できることを強調しています。全体的に、プレゼンターは GPU 作業に OpenCL を使用するための有益な入門書を提供します。
How to use OpenCL for GPU work
How to use OpenCL for GPU work
  • 2018.03.04
  • www.youtube.com
We use OpenCL to run workloads on GPU and try a simple blur filter.Git repositoryhttps://github.com/kalaspuffar/openclPlease follow me on Twitterhttp://twitt...
 

EECE.6540 ヘテロジニアス コンピューティング (マサチューセッツ大学ローウェル校)



1. 並列処理の概要と例

このビデオでは、例を示しながら並列処理について簡単に紹介します。講演者は、並列コンピューティングでは、より大きなタスクをより小さなサブタスクに分割して並列実行する必要があると説明します。これを達成するための 2 つの主な戦略は、分割と征服と分散と収集です。このビデオでは、人間の感覚、自動運転車、細胞の成長など、本質的に多くの並列性を持つ自然および人工のアプリケーションの例を紹介しています。このビデオでは、並列処理の利点についても説明し、並列処理を並べ替え、ベクトル乗算、画像処理、およびテキスト本文内の文字列の出現数の検索にどのように適用できるかを示します。最後に、ビデオでは、並列リソースから得られた結果を収集して処理するための、合計プロセスとも呼ばれるリダクション プロセスを紹介します。

  • 00:00:00 このセクションでは、講演者は並列コンピューティングの概念を紹介し、より大きなタスクをより小さなサブタスクに分割して並列実行することを含むと説明します。これを達成するための 2 つの主な戦略は、分割と征服と分散と収集です。講演者は、人間の感覚、自動運転車、細胞の成長など、本質的に多くの並列性を持つ自然および人工のアプリケーションの例を挙げます。さらに、講演者は並べ替え問題の例を示し、分割統治戦略を使用してこの問題にどのようにアプローチできるかを説明します。

  • 00:05:00 このセクションでは、講演者は、例としてマージ ソートを使用したソートから始めて、並列処理の 2 つの例について説明します。ソートされていない整数の長いリストは、グループごとに 2 つの整数からなる小さなサブ問題に分割され、4 つのコンピューティング ユニットがサブ問題をマッピングして比較して、最終的にソートされた整数のシーケンスを実現します。 2 番目の例はベクトル乗算です。これは、各乗算演算が他の乗算演算から独立しているため、本質的にデータ並列です。この問題は計算強度が低いため、簡単かつ高速に実行できます。講演者はまた、さまざまな種類の処理問題における計算とメモリ アクセスの間のトレードオフを強調するために、算術強度の概念についても簡単に言及しています。

  • 00:10:00 このセクションでは、講演者が並列処理の利点と、並列処理によってコンピューティング リソースを効率的に利用できる方法について説明します。同氏は、並列処理を使用すると、データを常にロードおよびアンロードする必要がなく、複数の計算を同時に実行できると説明します。タスク並列処理の概念が導入され、複数のコンピューティング ユニットが異なるデータに対して独立して動作します。画像処理の例は、計算を最大化するために複数の機能ユニットのパイプラインを介してデータを渡す方法を説明するために使用されます。並列処理を実装することにより、コンピューティング ユニットが同時に動作できるようになり、待ち時間が短縮され、計算速度が向上します。

  • 00:15:00 このセクションでは、テキスト本文内の文字列の出現数を見つける例を使用して、並列処理の概念をさらに説明します。この問題は、並列化可能な個々の単語の比較を通じて実行できる潜在的な一致の比較に分割できます。各文字を並行して比較することで、さらに詳細に比較を行うこともできます。データ セットは、同じ操作を並行して実行するために小さな単位に分割され、比較タスクが高度に並列化されます。

  • 00:20:00 このセクションでは、並列処理の第 2 段階であるリダクション プロセス (合計プロセスとも呼ばれます) について学習します。ここで、収集フェーズでは、個々の競合他社から比較結果を収集し、後処理のために収集します。最終結果は、並列リソースから中間結果を収集し、それらを合計することによって生成されます。比較ユニットからの出力が一致を示した場合、これらすべての出力を加算した後に得られる最終的な数値は、元のテキスト内で単語が何回出現したかを示します。
Brief Introduction to Parallel Processing with Examples
Brief Introduction to Parallel Processing with Examples
  • 2020.05.21
  • www.youtube.com
This video starts the series on Heterogeneous Computing. In this video we introduce the concept of parallel processing with some examples.If you are interest...
 

2. 同時実行性、並列性、データおよびタスクの分解



2. 同時実行性、並列性、データおよびタスクの分解

このビデオでは、並行性と並列性の概念、タスクとデータの分解の使用法、および並列性と並行性のためのデータ分解のテクニックを詳しく説明します。アムダールの法則は、複数のプロセッサーでタスクを実行する場合の理論的な高速化を計算する手段として検討されています。タスクの依存関係グラフの重要性は、問題をサブタスクに分割するときにタスク間の依存関係を特定する際に強調されます。入力データや行ベクトル分割などのデータ分解の方法は、計算の実行に役立つことが示されています。すべてのサブタスクが完了した後に正しい結果を生成するには、アトミック操作と同期が不可欠であると説明されています。

  • 00:00:00 このセクションでは、ビデオで並行性と並列性の概念を紹介します。同時実行性は、2 つ以上のアクティビティが同時に発生する場合に発生します。これらのアクティビティは、異なるプロセッサ上で発生する場合もあれば、タイムシェアリング技術を使用する単一のプロセッサ上で発生する場合もあります。一方、並列処理とは、厳密には、2 つのアクティビティが CPU や FPGA などの異なるハードウェア実行ユニットで同時に実行されることを意味します。このビデオでは、複数のプロセッサーでタスクを実行する場合の理論上の高速化を計算するために使用されるアムダールの法則についても説明しています。一部のタスクはシリアルのままにする必要がありますが、並列実行するように再設計できるタスクは、GPU、FPGA、マルチコア プロセッサなどの処理ユニットを使用して実行できます。

  • 00:05:00 このセクションでは、講演者が並列コンピューティングの概念と、それが CPU アーキテクチャ、特に Intel の Pentium プロセッサにどのように実装されているかについて説明します。彼らは、従来のプロセッサ アーキテクチャでは、独立した命令を同時に実行するために命令レベルの並列処理がよく利用され、その結果パフォーマンスが向上すると説明しています。ただし、授業では、タスクとデータの並列処理、およびアルゴリズムとソフトウェア スレッドを使用してこれらの高レベルの並列処理をどのように活用できるかに焦点を当てています。彼らは、アルゴリズムを個々のタスクに分割するタスク分解と、データセットを並列処理できる個別のチャンクに分割するデータ分解の概念を導入しています。

  • 00:10:00 このセクションでは、ビデオでタスク依存関係グラフの概念と、問題をサブタスクに分解するときにタスク間の関係を説明する際にそれらがどのように役立つかについて説明します。タスクに依存関係がない場合、タスクを並行して実行できるため、より効率的な処理が可能になります。このビデオでは、データを計算のためにさまざまなタスクに分割するデータ分解の概念も紹介しています。画像の畳み込みと行列の乗算の例は、出力データを使用して、データをさまざまなグループまたはパーティションに分解する方法を決定する方法を示しています。

  • 00:15:00 このセクションでは、講演者は並列処理と同時実行のためのデータ分解のさまざまな手法について説明します。 1 つ目の手法では、1 対 1 または多対 1 のマッピングのために、データを元の行列の行ベクトルに分割します。 2 番目の手法には、複数の出力データに対応する 1 つの入力データを持つ入力データの分解が含まれます。この例には、tar gram ヒストグラムや部分文字列の検索が含まれます。これらの中間データ部分から最終結果を計算するには、すべてのサブタスクが完了し、正しい結果が生成されることを保証するために、同期とアトミック操作が必要になる場合があります。
Concurrency, Parallelism, Data and Task Decompositions
Concurrency, Parallelism, Data and Task Decompositions
  • 2020.05.21
  • www.youtube.com
This video compares concurrency with parallelism, and discusses decomposition methods to parallelize a task.
 

3. 並列コンピューティング: ソフトウェアとハードウェア



3. 並列コンピューティング: ソフトウェアとハードウェア

このビデオでは、コンピューティングで高レベルの並列処理を実現するためのさまざまなアプローチについて説明します。講演者は、命令レベル並列処理 (ILP)、ソフトウェア スレッド、マルチコア CPU、SIMD、SPMD プロセッサなど、並列コンピューティングを実行するために使用されるハードウェアおよびソフトウェアの技術について説明します。このビデオでは、並列処理密度の重要性と、効率的な並列コンピューティングを可能にするコンピューティング/プロセッシング ユニットの概念についても説明しています。さらに、講演者は、同期を目的としたアトミックな操作を作成する際の課題と、GPU で効率的に実行するために問題を再構築する必要性についても説明します。

  • 00:00:00 このセクションでは、講演者が高レベルの並列処理を達成するためのさまざまなアプローチについて説明します。プロセッサ設計の初期には、並列処理を実現するために命令レベル並列処理 (ILP) とソフトウェア スレッドに依存していました。ただし、これらの設計は自動的には行われないため、プログラマはこれらのソフトウェア アプリケーションの設計に経験を積んでいる必要があります。ハードウェアに関しては、並列コンピューティング タスクに使用できるさまざまなタイプのプロセッサがあります。マルチコア CPU はタスクの並列性を考慮して設計されているのに対し、SIMD プロセッサはデータの並列性を活用するように設計されています。 GPU は、数百、さらには数千のコアで複数のデータを同時に実行できるため、データ並列タスクに最適です。

  • 00:05:00 このセクションでは、講演者が並列コンピューティングで一般的に使用される SIMD と SPMD の概念について説明します。 SIMD は Single structive Multiple Data の略で、各コアが異なるデータに対して同時に演算を実行できます。一方、SPMD は Single Program Multiple Data の略で、同じプログラムの複数のインスタンスがデータの異なる部分に対して独立して動作します。ループ ストリップ マイニングは、独立したプロセッサ間でデータ並列タスクを分割する一般的な手法であり、ベクトル ユニットを利用して反復を同時に実行できます。講演者は、SPMD とループ トリップ マイニングを使用したベクトル加算の例を示します。この場合、各プログラムはデータの異なる部分で実行されます。

  • 00:10:00 このセクションでは、講演者は、データの各チャンクを独立したスレッドとして実行する例を使用して、並列コンピューティングでさまざまなプロセッサがデータのさまざまな部分をどのように処理できるかを説明します。 GPU のスレッドを作成するコストは高いため、各プロセッサーで予期される計算 (並列処理密度) が大きくなる必要があります。 FPGA の場合、スレッド作成のオーバーヘッドが非常に低いため、多数の SGMD 実行インスタンスが存在する可能性があります。単一命令複数データ (SIMD) では、多数の算術論理演算装置 (ALU) が一緒に命令を実行し、複数のデータに対して 1 つの命令を同時に実行できます。並列アルゴリズムにより、ALU ユニットを優先して制御フローやその他のハードウェアの量を削減できます。

  • 00:15:00 このセクションでは、講演者がチップ内で計算に使用される計算/処理ユニットの概念を説明します。データ入力の取得と演算の実行を同時に行うことができるため、効率的な並列コンピューティングが可能になります。このアーキテクチャは SMID (単一命令複数データ) に基づいており、GPU ハードウェアで広く使用されています。講演者は、同期を目的としたアトミック操作の重要性を強調していますが、これらの操作にかかる多大なオーバーヘッド コストについて警告しています。入力データのパーティショニングを使用して分解された問題は、GPU で効率的に実行するために再構築する必要がある可能性があります。
Parallel Computing: Software and Hardware
Parallel Computing: Software and Hardware
  • 2020.05.21
  • www.youtube.com
This video introduces the general characteristics of parallel computing, the associated software and hardware methods.
 

4. 異種プロセッサに関する 2 つの重要な論文



4. 異種プロセッサに関する 2 つの重要な論文

このビデオでは、プロセッサ設計とエネルギー効率のトレンド、カスタマイズされたハードウェアと専用アクセラレータを使用する利点、大規模コアと小規模コアのバランスをとることの重要性、データ移動とコア間の効率的な通信の課題など、ヘテロジニアス コンピューティングに関連するさまざまな論文を取り上げています。これらの論文では、異種プロセッサを使用する場合のスケジューリングとワークロード パーティションを理解する必要性や、OpenCL、CUDA、OpenMP などのプログラミング言語やフレームワークを使用することについても説明しています。全体として、論文は、異種コンピューティング環境でパフォーマンスとエネルギー効率を最大化するために複数のコアとアクセラレータを利用することの潜在的な利点を強調しています。

  • 00:00:00 このセクションでは、講演者が過去 10 年間に発行されたヘテロジニアス コンピューティングに関連する 2 つの重要な論文について説明します。最初の論文では、シングル プロセッサ コアからマルチ コアへの移行の傾向と、より多くのパフォーマンスを得るためにアンシップ トランジスタを効率的に利用することについて説明しています。 2 番目の論文は、コンピュータ アーキテクト、プログラマ、研究者が、パフォーマンスと使用率の両方を最大化するために、CPU と GPU を併用する際のより協力的なアプローチにどのように移行しているかについて述べた調査論文です。講演者はまた、単一コアのパフォーマンスから、異種コアとアクセラレータを使用することによる分子パフォーマンスまたはスループットに関するパフォーマンスに移行する傾向についても語ります。このトランスクリプトには、1971 年から 2009 年までの単一チップ上のトランジスタ数の増加を示すグラフも含まれており、ヘテロジニアス コンピューティングを使用する主な利点が強調されています。

  • 00:05:00 このセクションでは、ビデオでトランジスタのスケーリングと、それによって単一チップ上により多くのトランジスタを搭載できるようになり、パフォーマンスとエネルギー効率が向上する方法について説明します。次に、ビデオでは、コアの追加や投機的実行の実装など、マイクロプロセッサの設計に使用されるさまざまな手法を示す図が表示されます。毎年パフォーマンスが大幅に向上するわけではありませんが、エネルギー効率はほぼ 5 倍向上し、より多くのタスクをより高いスループットで実行できるようになりました。このビデオでは、プロセッサのパフォーマンスに関する簡単な観察であるポロックの法則も紹介しています。

  • 00:10:00 このセクションでは、講演者は、トランジスタの面積または数が増加することによるプロセッサのパフォーマンスの向上について説明します。これらの要素間の関係は、トランジスタ数のほぼ平方根です。一方で、DRAM の密度は 2 年ごとに 2 倍近く増加していますが、読み取り/書き込み速度のパフォーマンスは追いついていません。総エネルギーバジェットは横ばいであるため、トランジスタのサイズを縮小してトランジスタの数を増やしても、パフォーマンスは大幅には向上しません。トランジスタのサイズが小さくなると、リーク電力が顕著になります。つまり、周波数の増加、電源電圧の低下、接続やワイヤの静電容量だけでは、テラビット以上の動作など、意図した性能目標を達成できないことになります。

  • 00:15:00 このセクションでは、講演者は異種プロセッサにおける複数のコアの設計について説明し、大きくて均一なコアを使用することが有益ではない可能性があることを強調しています。代わりに、固定アクセラレータまたはプログラマブル アクセラレータを使用してハードウェアをカスタマイズし、ロジックをコアと組み合わせることで、コアの利用率を高めることができます。講演者は、同じ総トランジスタ数 (1 億 5,000 万個) を使用しながら、30 個の小さなコア (それぞれ 500 万個のトランジスタ) を備えた設計が、6 個の大きなコア (それぞれ 2,500 万個のトランジスタ) を備えた設計よりも優れたパフォーマンスを発揮する例を示しました。スループットとシングルコアのパフォーマンスの間のトレードオフは、大きなコアと小さなコアのバランスを維持することによって最適化することもできます。

  • 00:20:00 このセクションでは、講演者は、カスタマイズされたハードウェアでの異種プロセッサの使用と、汎用 CPU コアの代わりに小型のカスタマイズされたコアを使用する利点について説明します。専用ロジックを利用して乗算器や FFT ユニットなどの機能ユニットを構築することで、設計者は汎用設計よりも高いエネルギー効率を達成できます。さらに、この論文では、データ移動の課題と、コア間の効率的な通信のための効率的なメモリ階層と相互接続の重要性についても述べています。この論文では、より優れたシングル スレッド パフォーマンスを実現するために、スーパースカラ アウトオブオーダー プロセッサの構築に従来の 90% を割り当てるのではなく、特殊なアクセラレータとコアに 10% を分割することを提案しています。

  • 00:25:00 このセクションでは、ビデオで異種プロセッサに関する 2 つの論文について説明します。最初の論文では、データの移動とエネルギー効率において直面する課題について説明しています。設計トレンドの 1 つは、異なるコアを異なる速度で実行できるようにする電圧スケーリングであり、これによりワークロードとタスクのスケジューリングに応じてエネルギー消費を大幅に削減できます。 2 番目の論文では、大規模並列処理と、さまざまなサイズと柔軟な周波数および電圧を備えた異種コアへの傾向について説明します。さらに、チップ上に構築されたさまざまなハードウェア アクセラレータを使用し、不必要なデータ移動を減らすために効率的なデータ配置に重点を置く動きもあります。この論文では、さまざまな CPU アーキテクチャの独自の強みと、将来の CPU 機能に適合するアルゴリズムの設計を認めています。

  • 00:30:00 このセクションでは、講演者は、CPU FPGA などの異種プロセッサを使用する場合のスケジューリング手法とワークロード パーティションを理解することの重要性について説明します。スケジューリングには、いつサブタスクを特定のプロセッサーで実行するかを決定することが含まれ、ワークロード パーティションではデータとタスクのパーティション化が処理されます。講演者は、さまざまな種類のプロセッサ向けの OpenCL、CUDA、OpenMP などのさまざまなプログラミング言語やフレームワークについても言及します。
Two Important Papers about Heterogeneous Processors
Two Important Papers about Heterogeneous Processors
  • 2020.05.21
  • www.youtube.com
This video provides an overview of two important papers on the design and programming of heterogenous processors/systems.S. Borkar and A. Chien, The Future o...
 

5. コンピューティングハードウェアの概要



5. コンピューティングハードウェアの概要

このビデオでは、コンピューティング ハードウェアの概要を示し、プロセッサ アーキテクチャ、設計上の考慮事項、マルチスレッド、キャッシュ、メモリ階層、制御ロジックの設計などのトピックについて説明します。また、プログラムがタスクを実行するためにコンピューターが従う一連の命令であることや、システム ソフトウェアやアプリケーションなどのさまざまな種類のプログラムについても説明します。このビデオでは、CPU やメモリなどのコンピュータのハードウェア コンポーネントが連携してプログラムを実行し、タスクを実行することの重要性を強調しています。

  • 00:00:00 このセクションでは、プロセッサ アーキテクチャとイノベーション、アーキテクチャ設計空間、CPU と GPU アーキテクチャ、高性能の新興アーキテクチャとしての FPGA など、クラスで取り上げられるトピックを講演者が紹介します。講演者はまた、OpenCL の起源と、OpenCL が提供するプロセッサに基づいてさまざまなベンダーによってどのように徐々に形成され、プラットフォームの独立性を実現する緩和された一貫性のあるブロックベースのパラダイム モデルにつながったのかについても語ります。 OpenCL プログラムのパフォーマンスは、依然として実装、アルゴリズム、およびハードウェア アーキテクチャにどの程度適切にマッピングできるかによって決まります。さまざまなプロセッサの設計には、シングルコア プロセッサを使用するか複数のプロセッサを使用するかなど、多くの考慮事項とトレードオフが必要です。

  • 00:05:00 このセクションでは、スーパースカラー コアや命令スケジューリングなど、コンピューティング ハードウェアに関する設計上の考慮事項のいくつかをビデオで説明しています。このビデオでは、プロセッサが処理できる有用な作業量を増やす方法としてのマルチスレッド、およびキャッシュとメモリ階層の重要性についても説明しています。 GPU を備えた CPU、FPGA、大小のコアなど、プロセッサーの異種混合が一般的になってきています。最後に、制御ロジックの設計が非常に重要であり、複雑な制御フローで命令レベルの並列性を活用するための命令の並べ替えを可能にします。

  • 00:10:00 このセクションでは、プログラムとは、コンピューターが特定のタスクを実行するために従う一連の命令であることをビデオで説明しています。プログラムはプログラミング言語で書かれたコードで構成されており、その後、コンピューターが理解できる機械語にコンパイルまたは解釈されます。このビデオでは、オペレーティング システムやデバイス ドライバーなどのシステム ソフトウェア、ワード プロセッサやゲームなどのアプリケーションを含む、さまざまな種類のプログラムについて説明します。 CPU やメモリなどのコンピュータのハードウェア コンポーネントは連携してこれらのプログラムを実行し、必要なタスクを実行します。
Overview of Computing Hardware
Overview of Computing Hardware
  • 2020.05.22
  • www.youtube.com
This video introduces hardware tradeoffs and conventional CPU architecture.
理由: