(57)【要約】      （修正有）【課題】シングルチャネル畳み込み層のための処理方法及び処理装置、並びにマルチチャネル畳み込み層のための処理方法及び処理装置を提供する。【解決手段】処理方法は、処理されるべきデータを複数のデータブロックに分割しＳ１０１、複数のグラフィックプロセッサスレッドグループによって、複数のグラフィックプロセッサスレッドグループのローカルメモリに複数のデータブロックを読み込みＳ１０２、複数のグラフィックプロセッサスレッドグループによって、複数のグラフィックプロセッサスレッドグループのローカルメモリに複数のフィルタを読み込みＳ１０３、複数のグラフィックプロセッサスレッドグループの複数のスレッドによって、複数のデータブロック内の対応するデータポイント及び複数のフィルタの畳み込み演算を同時的に計算するＳ１０４。【選択図】図１
2016004572.tif 000002
【特許請求の範囲】
【請求項１】
シングルチャネル畳み込み層のための処理方法であって、
処理されるべきデータを複数のデータブロックに分割し、
複数のグラフィックプロセッサスレッドグループによって、該複数のグラフィックプロセッサスレッドグループのローカルメモリに前記複数のデータブロックを読み込み、
前記複数のグラフィックプロセッサスレッドグループによって、前記複数のグラフィックプロセッサスレッドグループのローカルメモリに複数のフィルタを読み込み、
前記複数のグラフィックプロセッサスレッドグループ内の複数のスレッドによって、前記複数のデータブロック内の対応するデータポイント及び前記複数のフィルタの畳み込み演算を同時的に計算することを特徴とする処理方法。
【請求項２】
前記複数のデータブロックは不規則なデータブロックであることを特徴とする請求項１に記載の処理方法。
【請求項３】
前記複数のグラフィックプロセッサスレッドグループによって、該複数のグラフィックプロセッサスレッドグループのローカルメモリに前記複数のデータブロックを読み込む際に、
複数のサブデータブロックの内の少なくとも１つのデータサイズが対応するグラフィックプロセッサスレッドグループ内の複数のスレッドの数と一致するように、各データブロックを前記複数のサブデータブロックに分割し、
前記対応するグラフィックプロセッサスレッドグループによって、該対応するグラフィックプロセッサスレッドグループのローカルメモリに前記複数のサブデータブロックを１つずつ読み込むことを特徴とする請求項１又は２に記載の処理方法。
【請求項４】
前記複数のデータブロックに対応するパディングデータを前記ローカルメモリに読み込むことを特徴とする請求項１乃至３のいずれかに記載の処理方法。
【請求項５】
シングルチャネル畳み込み層のための処理装置であって、
処理されるべきデータを複数のデータブロックに、特には複数の不規則なデータブロックに分割するように構成された分割モジュールと、
複数のグラフィックプロセッサスレッドグループによって、該複数のグラフィックプロセッサスレッドグループのローカルメモリに前記複数のデータブロックを読み込むように構成された第１の読込みモジュールと、
前記複数のグラフィックプロセッサスレッドグループによって、前記複数のグラフィックプロセッサスレッドグループのローカルメモリに複数のフィルタを読み込むように構成された第２の読込みモジュールと、
前記複数のグラフィックプロセッサスレッドグループ内の複数のスレッドによって、前記複数のデータブロック内の対応するデータポイント及び前記複数のフィルタの畳み込み演算を同時的に計算するように構成された計算モジュールと
を備えていることを特徴とする処理装置。
【請求項６】
前記第１の読込みモジュールは、
複数のサブデータブロックの内の少なくとも１つのデータサイズが対応するグラフィックプロセッサスレッドグループ内の複数のスレッドの数と一致するように、各データブロックを前記複数のサブデータブロックに分割するように構成された分割ユニット、及び
前記対応するグラフィックプロセッサスレッドグループによって、該対応するグラフィックプロセッサスレッドグループのローカルメモリに前記複数のサブデータブロックを１つずつ読み込むように構成された読込みユニット
を有していることを特徴とする請求項５に記載の処理装置。
【請求項７】
前記第１の読込みモジュールは、前記複数のデータブロックに対応するパディングデータを前記ローカルメモリに読み込むように更に構成されていることを特徴とする請求項５又は６に記載の処理装置。
【請求項８】
マルチチャネル畳み込み層のための処理方法であって、
処理されるべきデータ及びフィルタは複数のチャネルを有しており、
各チャネルにおける処理されるべきデータを複数のデータブロックに分割し、
複数のグラフィックプロセッサスレッドグループによって、該複数のグラフィックプロセッサスレッドグループのローカルメモリに前記複数のデータブロックを同時的に読み込み、
前記複数のグラフィックプロセッサスレッドグループによって、前記複数のグラフィックプロセッサスレッドグループのローカルメモリに複数のフィルタを同時的に読み込み、
前記複数のグラフィックプロセッサスレッドグループ内の複数のスレッドによって、１つのチャネルにおける前記複数のデータブロック内の対応するデータポイント及び前記複数のフィルタの畳み込み演算を同時的に計算し、
前記複数のグラフィックプロセッサスレッドグループ内の複数のスレッドによって、各チャネルにおける前記畳み込み演算を１つずつ計算して各チャネルの畳み込み演算結果を得て、各チャネルの畳み込み演算結果を蓄積して最終の畳み込み演算結果を得て、
前記複数のグラフィックプロセッサスレッドグループのグローバルメモリに前記最終の畳み込み演算結果を書き込むことを特徴とする処理方法。
【請求項９】
複数のデータブロックに対応するパディングデータを前記ローカルメモリに読込み、
複数のパディング済みのデータブロックは不規則なデータブロックであることを特徴とする請求項８に記載の処理方法。
【請求項１０】
前記処理されるべきデータは画像データであり、
前記複数のグラフィックプロセッサスレッドグループのグローバルメモリに複数の画像及び前記複数のフィルタを読み込むことを特徴とする請求項８又は９に記載の処理方法。
【請求項１１】
前記複数のグラフィックプロセッサスレッドグループによって、該複数のグラフィックプロセッサスレッドグループのローカルメモリに前記複数のデータブロックを同時的に読み込む際に、複数のサブデータブロックの内の少なくとも１つのデータサイズが対応するグラフィックプロセッサスレッドグループ内の複数のスレッドの数と一致するように、各データブロックを前記複数のサブデータブロックに分割し、前記対応するグラフィックプロセッサスレッドグループによって、前記対応するグラフィックプロセッサスレッドグループのローカルメモリに前記複数のサブデータブロックを１つずつ読み込む、及び／又は
前記複数のグラフィックプロセッサスレッドグループ内の複数のスレッドによって、１つのチャネルにおける前記複数のデータブロック内の対応するデータポイント及び前記複数のフィルタの畳み込み演算を同時的に計算する際に、登録分割処理を行なうことを特徴とする請求項８乃至１０のいずれかに記載の処理方法。
【請求項１２】
マルチチャネル畳み込み層のための処理装置であって、
処理されるべきデータ及びフィルタは複数のチャネルを有しており、
各チャネルにおける処理されるべきデータを複数のデータブロックに分割するように構成された分割モジュールと、
複数のグラフィックプロセッサスレッドグループによって、該複数のグラフィックプロセッサスレッドグループのローカルメモリに前記複数のデータブロックを同時的に読み込むように構成された第１の読込みモジュールと、
前記複数のグラフィックプロセッサスレッドグループによって、前記複数のグラフィックプロセッサスレッドグループのローカルメモリに複数のフィルタを同時的に読み込むように構成された第２の読込みモジュールと、
前記複数のグラフィックプロセッサスレッドグループ内の複数のスレッドによって、１つのチャネルにおける前記複数のデータブロック内の対応するデータポイント及び前記複数のフィルタの畳み込み演算を同時的に計算するように構成された計算モジュールと、
前記複数のグラフィックプロセッサスレッドグループ内の複数のスレッドによって、各チャネルにおける前記畳み込み演算を１つずつ計算して各チャネルの畳み込み演算結果を得て、各チャネルの畳み込み演算結果を蓄積して最終の畳み込み演算結果を得るように構成された蓄積モジュールと、
前記複数のグラフィックプロセッサスレッドグループのグローバルメモリに前記最終の畳み込み演算結果を書き込むように構成された書込みモジュールと
を備えていることを特徴とする処理装置。
【請求項１３】
前記第１の読込みモジュールは、前記複数のデータブロックに対応するパディングデータを前記ローカルメモリに読み込むように更に構成されており、
複数のパディング済みのデータブロックは不規則なデータブロックであることを特徴とする請求項１２に記載の処理装置。
【請求項１４】
前記処理されるべきデータは画像データであり、
前記複数のグラフィックプロセッサスレッドグループのグローバルメモリに複数の画像及び前記複数のフィルタを読み込むように構成された第３の読込みモジュールを更に備えていることを特徴とする請求項１２又は１３に記載の処理装置。
【請求項１５】
前記第１の読込みモジュールは、複数のサブデータブロックの内の少なくとも１つのデータサイズが対応するグラフィックプロセッサスレッドグループ内の複数のスレッドの数と一致するように、各データブロックを前記複数のサブデータブロックに分割するように構成された分割ユニットと、前記対応するグラフィックプロセッサスレッドグループによって、前記対応するグラフィックプロセッサスレッドグループのローカルメモリに前記複数のサブデータブロックを１つずつ読み込むように構成された読込みユニットとを有している、及び／又は
前記計算モジュールは、前記複数のデータブロック内の対応するデータポイント及び前記複数のフィルタの畳み込み演算を計算する際に、登録分割処理を行なうように構成されていることを特徴とする請求項１２乃至１４のいずれかに記載の処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の実施形態は一般的に、情報処理技術の分野に関し、より具体的には、シングルチャネル畳み込み層のための処理方法及び処理装置、並びにマルチチャネル畳み込み層のための処理方法及び処理装置に関する。
【背景技術】
【０００２】
畳み込みニューラルネットワークが、様々な用途に、特に画像及び映像の用途に広く使用されている。畳み込み層が、畳み込みニューラルネットワークでの基本的な計算部分である。畳み込み層では、画像を例に挙げると、複数のフィルタが、畳み込み演算を計算するために画像に夫々作用する。関連技術では、畳み込み演算が、以下のように２つのモードで行われる。(1) フィルタが、畳み込み演算を計算するために画像に直接作用し、グラフィックプロセッサスレッドグループが二次元（Ｘ及びＹ）モードであり、Ｘ方向の寸法が全ての画像の数で割られ、Ｙ方向の寸法が全てのフィルタの数で割られ、各グラフィックプロセッサスレッドが、複数の画像に関して複数のフィルタの畳み込み演算を計算するが、１つのデータポイントに対応する畳み込みカーネルを計算するだけである。(2) 畳み込み演算を密な行列乗算に変えるように、全ての画像データが、フィルタのサイズに応じてデータポイント毎に展開される。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
しかしながら、関連技術には以下の欠点がある。第１のモードでは、隣り合う出力データポイントに対応する入力データポイントが互いに重なる。例えば、ステップ長さ１及び５×５フィルタを用いた畳み込みカーネルでは、多くのデータがローカルメモリに繰り返し読み込まれるので、隣り合う出力データポイントに対応する入力データポイント間の重複データの割合が80パーセントになり、性能が不十分になる。第２のモードでは、画像を記憶するために、画像がまず展開されるので、必要とされるメモリ空間が畳み込みカーネルのサイズに正比例する。例えば、５×５フィルタは25倍の追加のメモリを必要とし、９×９フィルタは81倍の追加のメモリを必要とする。実際の用途では、フィルタのサイズがより大きくなる場合があり、グラフィックプロセッサのグローバルメモリのコストが大幅に増加する。
【０００４】
本開示の実施形態は、関連技術に存在する問題の少なくとも１つを少なくともある程度まで解決しようとしている。
【０００５】
従って、本開示の第１の目的は、メモリ空間を有効に使用してローカルメモリでのデータの再使用を高め、電力消費量に対する効率を高める、シングルチャネル畳み込み層のための処理方法を提供することである。
【０００６】
本開示の第２の目的は、シングルチャネル畳み込み層のための処理方法に対する装置を提供することである。
【０００７】
本開示の第３の目的は、マルチチャネル畳み込み層のための処理方法を提供することである。
【０００８】
本開示の第４の目的は、マルチチャネル畳み込み層のための処理装置を提供することである。
【課題を解決するための手段】
【０００９】
上記の目的を達成するために、本開示の第1の態様の実施形態は、シングルチャネル畳み込み層のための処理方法であって、処理されるべきデータを複数のデータブロックに分割し、複数のグラフィックプロセッサスレッドグループによって、該複数のグラフィックプロセッサスレッドグループのローカルメモリに前記複数のデータブロックを読み込み、前記複数のグラフィックプロセッサスレッドグループによって、前記複数のグラフィックプロセッサスレッドグループのローカルメモリに複数のフィルタを読み込み、前記複数のグラフィックプロセッサスレッドグループ内の複数のスレッドによって、前記複数のデータブロック内の対応するデータポイント及び前記複数のフィルタの畳み込み演算を同時的に計算する処理方法を提供する。
【００１０】
シングルチャネル畳み込み層のための処理方法では、以下の効果がある。(1) 畳み込み演算が、データをデータポイント毎に展開せずに入力データで直接計算されるため、追加のメモリを必要とせず、メモリ空間が有効に使用され得る。(2) 同一のグラフィックプロセッサスレッドグループ内のグラフィックプロセッサスレッドが、直列出力のデータポイントを計算して直列入力のデータポイントを使用するため、ローカルメモリでのデータの再使用が高められ、グラフィックプロセッサスレッドが、高速グラフィックプロセッサのローカルメモリに処理されるべきデータ及び畳み込みカーネルのデータを一時的に記憶するため、低速グラフィックプロセッサスレッドのグローバルメモリの読出し回数を減少させ、ひいては優れた性能になり、グラフィックプロセッサスレッドはデータ移動回数を更に減少させるため、電力消費量を低下させ、電力消費量に対する効率を高める。(3) 登録分割法は関連技術で使用されており、登録分割法のデータ編成モードにより効果が現れ難いが、データを複数のデータブロックに分割する間、登録分割法を使用することによりメモリアクセス計算比率が低下する。
【００１１】
上記の目的を達成するために、本開示の第２の態様の実施形態は、シングルチャネル畳み込み層のための処理装置であって、処理されるべきデータを複数のデータブロックに分割するように構成された分割モジュールと、複数のグラフィックプロセッサスレッドグループによって、該複数のグラフィックプロセッサスレッドグループのローカルメモリに前記複数のデータブロックを読み込むように構成された第１の読込みモジュールと、前記複数のグラフィックプロセッサスレッドグループによって、前記複数のグラフィックプロセッサスレッドグループのローカルメモリに複数のフィルタを読み込むように構成された第２の読込みモジュールと、前記複数のグラフィックプロセッサスレッドグループ内の複数のスレッドによって、前記複数のデータブロック内の対応するデータポイント及び前記複数のフィルタの畳み込み演算を同時的に計算するように構成された計算モジュールとを備えている処理装置を提供する。
【００１２】
本開示の実施形態に係るシングルチャネル畳み込み層のための処理装置では、以下の効果がある。(1) 畳み込み演算が、データをデータポイント毎に展開せずに入力データで直接計算されるため、追加のメモリを必要とせず、メモリ空間が有効に使用され得る。(2) 同一のグラフィックプロセッサスレッドグループ内のグラフィックプロセッサスレッドが、直列出力のデータポイントを計算して直列入力のデータポイントを使用するため、ローカルメモリでのデータの再使用が高められ、グラフィックプロセッサスレッドが、高速グラフィックプロセッサのローカルメモリに処理されるべきデータ及び畳み込みカーネルのデータを一時的に記憶するため、低速グラフィックプロセッサスレッドのグローバルメモリの読出し回数を減少させ、ひいては優れた性能になり、グラフィックプロセッサスレッドはデータ移動回数を更に減少させるため、電力消費量を低下させ、電力消費量に対する効率を高める。(3) 登録分割法は関連技術で使用されており、登録分割法のデータ編成モードにより効果が現れ難いが、データを複数のデータブロックに分割する間、登録分割法を使用することによりメモリアクセス計算比率が低下する。
【００１３】
上記の目的を達成するために、本開示の第３の態様の実施形態は、マルチチャネル畳み込み層のための処理方法であって、各チャネルにおける処理されるべきデータを複数のデータブロックに分割し、複数のグラフィックプロセッサスレッドグループによって、該複数のグラフィックプロセッサスレッドグループのローカルメモリに前記複数のデータブロックを同時的に読み込み、前記複数のグラフィックプロセッサスレッドグループによって、前記複数のグラフィックプロセッサスレッドグループのローカルメモリに複数のフィルタを同時的に読み込み、前記複数のグラフィックプロセッサスレッドグループ内の複数のスレッドによって、１つのチャネルにおける前記複数のデータブロック内の対応するデータポイント及び前記複数のフィルタの畳み込み演算を同時的に計算し、前記複数のグラフィックプロセッサスレッドグループ内の複数のスレッドによって、各チャネルにおける前記畳み込み演算を１つずつ計算して各チャネルの畳み込み演算結果を得て、各チャネルの畳み込み演算結果を蓄積して最終の畳み込み演算結果を得て、前記複数のグラフィックプロセッサスレッドグループのグローバルメモリに前記最終の畳み込み演算結果を書き込む処理方法を提供する。
【００１４】
本開示の実施形態に係るマルチチャネル畳み込み層のための処理方法では、以下の効果がある。(1) 畳み込み演算が、データをデータポイント毎に展開せずに入力データで直接計算されるため、追加のメモリを必要とせず、メモリ空間が有効に使用され得る。(2) 同一のグラフィックプロセッサスレッドグループ内のグラフィックプロセッサスレッドが、直列出力のデータポイントを計算して直列入力のデータポイントを使用するため、ローカルメモリでのデータの再使用が高められ、グラフィックプロセッサスレッドが、高速グラフィックプロセッサのローカルメモリに処理されるべきデータ及び畳み込みカーネルのデータを一時的に記憶するため、低速グラフィックプロセッサスレッドのグローバルメモリの読出し回数を減少させ、ひいては優れた性能になり、グラフィックプロセッサスレッドはデータ移動回数を更に減少させるため、電力消費量を低下させ、電力消費量に対する効率を高める。(3) 登録分割法は関連技術で使用されており、登録分割法のデータ編成モードにより効果が現れ難いが、データを複数のデータブロックに分割する間、登録分割法を使用することによりメモリアクセス計算比率が低下する。
【００１５】
上記の目的を達成するために、本開示の第４の態様の実施形態は、マルチチャネル畳み込み層のための処理装置であって、各チャネルにおける処理されるべきデータを複数のデータブロックに分割するように構成された分割モジュールと、複数のグラフィックプロセッサスレッドグループによって、該複数のグラフィックプロセッサスレッドグループのローカルメモリに前記複数のデータブロックを同時的に読み込むように構成された第１の読込みモジュールと、前記複数のグラフィックプロセッサスレッドグループによって、前記複数のグラフィックプロセッサスレッドグループのローカルメモリに複数のフィルタを同時的に読み込むように構成された第２の読込みモジュールと、前記複数のグラフィックプロセッサスレッドグループ内の複数のスレッドによって、１つのチャネルにおける前記複数のデータブロック内の対応するデータポイント及び前記複数のフィルタの畳み込み演算を同時的に計算するように構成された計算モジュールと、前記複数のグラフィックプロセッサスレッドグループ内の複数のスレッドによって、各チャネルにおける前記畳み込み演算を１つずつ計算して各チャネルの畳み込み演算結果を得て、各チャネルの畳み込み演算結果を蓄積して最終の畳み込み演算結果を得るように構成された蓄積モジュールと、前記複数のグラフィックプロセッサスレッドグループのグローバルメモリに前記最終の畳み込み演算結果を書き込むように構成された書込みモジュールとを備えている処理装置を提供する。
【００１６】
本開示の実施形態に係るマルチチャネル畳み込み層のための処理装置では、以下の効果がある。(1) 畳み込み演算が、データをデータポイント毎に展開せずに入力データで直接計算されるため、追加のメモリを必要とせず、メモリ空間が有効に使用され得る。(2) 同一のグラフィックプロセッサスレッドグループ内のグラフィックプロセッサスレッドが、直列出力のデータポイントを計算して直列入力のデータポイントを使用するため、ローカルメモリでのデータの再使用が高められ、グラフィックプロセッサスレッドが、高速グラフィックプロセッサのローカルメモリに処理されるべきデータ及び畳み込みカーネルのデータを一時的に記憶するため、低速グラフィックプロセッサスレッドのグローバルメモリの読出し回数を減少させ、ひいては優れた性能になり、グラフィックプロセッサスレッドはデータ移動回数を更に減少させるため、電力消費量を低下させ、電力消費量に対する効率を高める。(3) 登録分割法は関連技術で使用されており、登録分割法のデータ編成モードにより効果が現れ難いが、データを複数のデータブロックに分割する間、登録分割法を使用することによりメモリアクセス計算比率が低下する。
【００１７】
本開示の実施形態の更なる態様及び利点は、以下の記載にある程度述べられており、以下の記載からある程度明らかになるか、又は本開示の実施形態の実施から習得される。
【００１８】
本開示の実施形態のこれら及び他の態様及び利点は、添付図面を参照した以下の記載から明らかになり、より容易に理解される。
【図面の簡単な説明】
【００１９】
【図１】本開示の実施形態に係るシングルチャネル畳み込み層のための処理方法を示すフローチャートである。
【図２】本開示の実施形態に係るシングルチャネル畳み込み層のための処理方法を示す概略図である。
【図３】本開示の別の実施形態に係るシングルチャネル畳み込み層のための処理方法を示すフローチャートである。
【図４】本開示の実施形態に従って不規則なデータブロックを読み込む処理を示す概略図である。
【図５】本開示の実施形態に係るシングルチャネル畳み込み層のための処理装置を示すブロック図である。
【図６】本開示の別の実施形態に係るシングルチャネル畳み込み層のための処理装置を示すブロック図である。
【図７】本開示の実施形態に係るマルチチャネル畳み込み層のための処理方法を示すフローチャートである。
【図８】本開示の実施形態に係るマルチチャネル畳み込み層のための処理方法を示す概略図である。
【図９】本開示の実施形態に係るマルチチャネル畳み込み層のための処理装置を示すブロック図である。
【発明を実施するための形態】
【００２０】
本開示の実施形態を詳細に述べる。本開示の実施形態が図面に示されており、図面には同一又は同様の要素、及び同一又は同様の機能を有する要素が、本明細書を通じて同一の参照番号によって示されている。本明細書に図面を参照して記載されている実施形態は説明及び実例のためのものであり、本開示を限定するためと解釈されてはならない。
【００２１】
本明細書では、「第１」及び「第２」のような用語は説明するために用いられており、相対的重要性又は意義を示すか意味するように意図されていない。更に、特に指定されていないか限定されていない場合、「取り付けられた」（mounted）、「接続された」（connected）、「連結された」（coupled）及びこれらの変形の用語が広義に使用されており、機械的又は電気的な取付、接続及び連結などを包含しており、２つの要素の内部の取付、接続及び連結であってもよく、更に、本開示の詳細な実施形態に応じて当業者によって理解され得る、直接的又は間接的な取付、接続及び連結であってもよいと理解すべきである。本開示の記載では、「複数の」は特に指定されていない場合、２又は３以上を意味する。
【００２２】
フローチャートに記載されているか、又は本明細書に他の方法で記載されているあらゆる処理又は方法は、実行される特定の論理関数又はステップを実現するための実行可能命令のコードの一又は複数のモジュール、セグメント又は部分を含むと理解されてもよく、本開示の好ましい実施形態の範囲は、当業者によって理解されるべき他の実行を含んでいる。
【００２３】
本開示の実施形態に係るシングルチャネル畳み込み層のための処理方法及び処理装置、並びにマルチチャネル畳み込み層のための処理方法及び処理装置を、図面を参照して述べる。
【００２４】
図１は、本開示の実施形態に係るシングルチャネル畳み込み層のための処理方法を示すフローチャートである。図２は、本開示の実施形態に係るシングルチャネル畳み込み層のための処理方法を示す概略図である。
【００２５】
図１に示されているように、シングルチャネル畳み込み層のための処理方法は以下のステップを有する。
【００２６】
ステップS101では、処理されるべきデータを複数のデータブロックに分割する。
【００２７】
本開示の実施形態では、処理されるべきデータは、画像、映像、音声及び単語のようなコンピュータ可読データであってもよい。ある実施形態では、画像データの例を挙げると、複数のスレッドを有するグラフィックプロセッサスレッドグループのサイズ及び画像のサイズに応じて画像を複数のデータブロックに分割してもよい。例えば、図２に示されているように、グラフィックプロセッサスレッドグループのサイズが32×16であり、画像（つまり画像０）のサイズが64×64である（つまり、幅が64であり高さが64である）場合、８つのデータブロック（つまり、ブロック０〜ブロック７）に画像を分割してもよく、各データブロックのサイズが32×16である（つまり、サイズＡが32であり、サイズＢが16である）。言うまでも無く、各グラフィックプロセッサスレッドグループが分割されたデータブロックを処理し得る限り、画像を平均的に分割しなくてもよく、本明細書では限定されていない。図２に示されている実施形態は単に説明のためのものであり、本開示は他の実施形態によってなされてもよく、他の実施形態に適用されてもよいと理解されるべきである。当業者は、あらゆるサイズのデータ及びあらゆるサイズのグラフィックプロセッサスレッドグループに応じてデータを複数のデータブロックに分割するために、図２に示されている実施形態を利用することができ、データを複数のデータブロックに分割するこのような処理を拡張したり変えたりすることは、本開示の保護範囲に含まれる。
【００２８】
ステップS102では、複数のグラフィックプロセッサスレッドグループが、複数のグラフィックプロセッサスレッドグループのローカルメモリに複数のデータブロックを読み込む。
【００２９】
本開示の実施形態では、各グラフィックプロセッサスレッドグループは、各グラフィックプロセッサスレッドグループのローカルメモリに対応するデータブロックを夫々読み込む。
【００３０】
ステップS103では、複数のグラフィックプロセッサスレッドグループが、複数のグラフィックプロセッサスレッドグループのローカルメモリに複数のフィルタを読み込む。
【００３１】
本開示の実施形態では、各グラフィックプロセッサスレッドグループは、各グラフィックプロセッサスレッドグループのローカルメモリに複数のフィルタを夫々読み込む。
【００３２】
本開示の実施形態では、ステップS103をステップS102の前に実行してもよく、又は、ステップS102及びステップS103を同時的に実行してもよく、本明細書では限定されていない。
【００３３】
ステップS104では、複数のグラフィックプロセッサスレッドグループ内の複数のスレッドが、複数のデータブロック内の対応するデータポイント及び複数のフィルタの畳み込み演算を同時的に計算する。
【００３４】
本開示の実施形態では、データポイントはユニットデータである。各グラフィックプロセッサスレッドグループは、各グラフィックプロセッサスレッドグループのローカルメモリに対応するデータブロック及び複数のフィルタを記憶し、各グラフィックプロセッサスレッドグループ内の複数のスレッドは、データブロック内の対応するデータポイント及び複数のフィルタの畳み込み演算を計算する。
【００３５】
本開示の実施形態に係るシングルチャネル畳み込み層のための処理方法では、以下の効果がある。(1) 畳み込み演算が、データをデータポイント毎に展開せずに入力データで直接計算されるため、追加のメモリを必要とせず、メモリ空間が有効に使用され得る。(2) 同一のグラフィックプロセッサスレッドグループ内のグラフィックプロセッサスレッドが、直列出力のデータポイントを計算して直列入力のデータポイントを使用するため、ローカルメモリでのデータの再使用が高められ、グラフィックプロセッサスレッドが、高速グラフィックプロセッサのローカルメモリに処理されるべきデータ及び畳み込みカーネルのデータを一時的に記憶するため、低速グラフィックプロセッサスレッドのグローバルメモリの読出し回数を減少させ、ひいては優れた性能になり、グラフィックプロセッサスレッドはデータ移動回数を更に減少させるため、電力消費量を低下させ、電力消費量に対する効率を高める。(3) 登録分割法は関連技術で使用されており、登録分割法のデータ編成モードにより効果が現れ難いが、データを複数のデータブロックに分割する間、登録分割法を使用することによりメモリアクセス計算比率が低下する。
【００３６】
本開示の実施形態では、複数のデータブロックは不規則なデータブロックである。言うまでも無く、複数のデータブロックは規則的なデータブロックであってもよく、本明細書では限定されていない。
【００３７】
図３は、本開示の別の実施形態に係るシングルチャネル畳み込み層のための処理方法を示すフローチャートである。図４は、本開示の実施形態に従って不規則なデータブロックを読み込む処理を示す概略図である。
【００３８】
図３に示されているように、シングルチャネル畳み込み層のための処理方法は以下のステップを有する。
【００３９】
ステップS301では、処理されるべきデータを複数のデータブロックに分割する。
【００４０】
本開示の実施形態では、処理されるべきデータは、画像、映像、音声及び単語のようなコンピュータ可読データであってもよい。ある実施形態では、画像データの例を挙げると、複数のスレッドを有するグラフィックプロセッサスレッドグループのサイズ及び画像のサイズに応じて画像を複数のデータブロックに分割してもよい。例えば、図２に示されているように、グラフィックプロセッサスレッドグループのサイズが32×16であり、画像（つまり画像０）のサイズが64×64である（つまり、幅が64であり高さが64である）場合、８つのデータブロック（つまり、ブロック０〜ブロック７）に画像を分割してもよく、各データブロックのサイズが32×16である（つまり、サイズＡが32であり、サイズＢが16である）。言うまでも無く、各グラフィックプロセッサスレッドグループが分割されたデータブロックを処理し得る限り、画像を平均的に分割しなくてもよく、本明細書では限定されていない。図２に示されている実施形態は単に説明のためのものであり、本開示は他の実施形態によってなされてもよく、他の実施形態に適用されてもよいと理解されるべきである。当業者は、あらゆるサイズのデータ及びあらゆるサイズのグラフィックプロセッサスレッドグループに応じてデータを複数のデータブロックに分割するために、図２に示されている実施形態を利用することができ、データを複数のデータブロックに分割するこのような処理を拡張したり変えたりすることは、本開示の保護範囲に含まれる。
【００４１】
ステップS302では、複数のサブデータブロックの内の少なくとも１つのデータサイズが対応するグラフィックプロセッサスレッドグループ内の複数のスレッドの数と一致するように、各データブロックを複数のサブデータブロックに分割する。
【００４２】
本開示の実施形態では、複数のグラフィックプロセッサスレッドグループが複数のグラフィックプロセッサスレッドグループのローカルメモリに複数のデータブロックを読み込むとき、複数のデータブロックに対応するパディングデータをローカルメモリに読み込んでもよい。パディングデータにより、データブロック内のデータポイントの数が、グラフィックプロセッサスレッドグループ内の複数のスレッドの数より大きい。一対一マッピングが複数のデータポイントと複数のスレッドとの間に確立される場合、複雑な添字演算が必要になるため、データ伝送遅延を増大させる。不規則なデータを読むために、簡単なグラフィックプロセッサスレッドグループを使用して不規則なデータブロックに関してマッピングする。ある実施形態では、各データブロックを複数のサブデータブロックに分割し、複数のサブデータブロックの内の少なくとも１つのデータサイズが、対応するグラフィックプロセッサスレッドグループ内の複数のスレッドの数と一致する。
【００４３】
例えば、図４に示されているように、ブロックロード０，ブロックロード１，ブロックロード２及びブロックロード３のような４つのサブデータブロックにデータブロックを分割する。
【００４４】
ステップS303では、対応するグラフィックプロセッサスレッドグループが、対応するグラフィックプロセッサスレッドグループのローカルメモリに複数のサブデータブロックを１つずつ読み込む。
【００４５】
本開示の実施形態では、図４に示されているように、グレイの網掛け領域が、対応するグラフィックプロセッサスレッドグループによって最初に読み込まれる処理されるべきデータを表わす。その後、グレイの網掛け領域の右側の領域のデータを読み込んで、続いて残りの部分を２回読み込んでもよい。従って、データブロックの読込みが４回で終了する。スレッドの大部分が１回〜３回の読込みでは使用されないため、複雑な添字演算が回避される。
【００４６】
ステップS304では、複数のグラフィックプロセッサスレッドグループが、複数のグラフィックプロセッサスレッドグループのローカルメモリに複数のフィルタを読み込む。
【００４７】
本開示の実施形態では、各グラフィックプロセッサスレッドグループは、各グラフィックプロセッサスレッドグループのローカルメモリに複数のフィルタを夫々読み込む。
【００４８】
本開示の実施形態では、ステップS304をステップS302の前に実行してもよく、又は、ステップS304をステップS302及びステップS303と同時的に実行してもよく、本明細書では限定されていない。
【００４９】
ステップS305では、複数のグラフィックプロセッサスレッドグループ内の複数のスレッドが、複数のデータブロック内の対応するデータポイント及び複数のフィルタの畳み込み演算を同時的に計算する。
【００５０】
本開示の実施形態では、データポイントはユニットデータである。各グラフィックプロセッサスレッドグループは、各グラフィックプロセッサスレッドグループのローカルメモリに対応するデータブロック及び複数のフィルタを記憶し、各グラフィックプロセッサスレッドグループ内の複数のスレッドは、データブロック内の対応するデータポイント及び複数のフィルタの畳み込み演算を計算する。
【００５１】
本開示の実施形態に係るシングルチャネル畳み込み層を処理するための方法では、データブロックを読み込むとき、複数のサブデータブロックの内の少なくとも１つのデータサイズが対応するグラフィックプロセッサスレッドグループ内の複数のスレッドの数と一致するように、各データブロックを複数のサブデータブロックに分割する。その後、対応するグラフィックプロセッサスレッドグループは、対応するグラフィックプロセッサスレッドグループのローカルメモリに複数のサブデータブロックを１つずつ読み込む。本方法は、複雑な添字演算を回避することができ、データ伝送遅延を減らし得るため、不規則なデータブロックの読込みに完全に適用可能である。
【００５２】
上記の実施形態を達成するために、シングルチャネル畳み込み層のための処理装置が、本開示の実施形態によって提供される。
【００５３】
図５は、本開示の実施形態に係るシングルチャネル畳み込み層のための処理装置を示すブロック図である。
【００５４】
図５に示されているように、処理装置100 は、分割モジュール110 、第１の読込みモジュール120 、第２の読込みモジュール130 及び計算モジュール140 を備えている。
【００５５】
分割モジュール110 は、処理されるべきデータを複数のデータブロックに分割するように構成されている。ある実施形態では、処理されるべきデータは、画像、映像、音声及び単語のようなコンピュータ可読データであってもよい。ある実施形態では、画像データの例を挙げると、分割モジュール110 は、複数のスレッドを有するグラフィックプロセッサスレッドグループのサイズ及び画像のサイズに応じて画像を複数のデータブロックに分割してもよい。例えば、図２に示されているように、グラフィックプロセッサスレッドグループのサイズが32×16であり、画像（つまり画像０）のサイズが64×64である（つまり、幅が64であり高さが64である）場合、８つのデータブロック（つまり、ブロック０〜ブロック７）に画像を分割してもよく、各データブロックのサイズが32×16である（つまり、サイズＡが32であり、サイズＢが16である）。言うまでも無く、各グラフィックプロセッサスレッドグループが分割されたデータブロックを処理し得る限り、画像を平均的に分割しなくてもよく、本明細書では限定されていない。図２に示されている実施形態は単に説明のためのものであり、本開示は他の実施形態によってなされてもよく、他の実施形態に適用されてもよいと理解されるべきである。当業者は、あらゆるサイズのデータ及びあらゆるサイズのグラフィックプロセッサスレッドグループに応じてデータを複数のデータブロックに分割するために、図２に示されている実施形態を利用することができ、データを複数のデータブロックに分割するこのような処理を拡張したり変えたりすることは、本開示の保護範囲に含まれる。
【００５６】
第１の読込みモジュール120 は、複数のグラフィックプロセッサスレッドグループによって複数のグラフィックプロセッサスレッドグループのローカルメモリに複数のデータブロックを読み込むように構成されている。ある実施形態では、各グラフィックプロセッサスレッドグループは、各グラフィックプロセッサスレッドグループのローカルメモリに対応するデータブロックを夫々読み込む。
【００５７】
第２の読込みモジュール130 は、複数のグラフィックプロセッサスレッドグループによって複数のグラフィックプロセッサスレッドグループのローカルメモリに複数のフィルタを読み込むように構成されている。ある実施形態では、各グラフィックプロセッサスレッドグループは、各グラフィックプロセッサスレッドグループのローカルメモリに複数のフィルタを夫々読み込む。
【００５８】
計算モジュール140 は、複数のグラフィックプロセッサスレッドグループ内の複数のスレッドによって、複数のデータブロック内の対応するデータポイント及び複数のフィルタの畳み込み演算を同時的に計算すべく構成されている。本開示の実施形態では、データポイントはユニットデータである。各グラフィックプロセッサスレッドグループは、各グラフィックプロセッサスレッドグループのローカルメモリに対応するデータブロック及び複数のフィルタを記憶し、各グラフィックプロセッサスレッドグループ内の複数のスレッドは、データブロック内の対応するデータポイント及び複数のフィルタの畳み込み演算を計算する。
【００５９】
本開示の実施形態に係るシングルチャネル畳み込み層のための処理装置では、以下の効果がある。(1) 畳み込み演算が、データをデータポイント毎に展開せずに入力データで直接計算されるため、追加のメモリを必要とせず、メモリ空間が有効に使用され得る。(2) 同一のグラフィックプロセッサスレッドグループ内のグラフィックプロセッサスレッドが、直列出力のデータポイントを計算して直列入力のデータポイントを使用するため、ローカルメモリでのデータの再使用が高められ、グラフィックプロセッサスレッドが、高速グラフィックプロセッサのローカルメモリに処理されるべきデータ及び畳み込みカーネルのデータを一時的に記憶するため、低速グラフィックプロセッサスレッドのグローバルメモリの読出し回数を減少させ、ひいては優れた性能になり、グラフィックプロセッサスレッドはデータ移動回数を更に減少させるため、電力消費量を低下させ、電力消費量に対する効率を高める。(3) 登録分割法は関連技術で使用されており、登録分割法のデータ編成モードにより効果が現れ難いが、データを複数のデータブロックに分割する間、登録分割法を使用することによりメモリアクセス計算比率が低下する。
【００６０】
本開示の実施形態では、複数のデータブロックは不規則なデータブロックである。言うまでも無く、複数のデータブロックは規則的なデータブロックであってもよく、本明細書では限定されていない。
【００６１】
図６は、本開示の実施形態に係るシングルチャネル畳み込み層のための処理装置を示すブロック図である。
【００６２】
図６に示されているように、処理装置100 は、分割モジュール110 と、分割ユニット121 及び読込みユニット122 を有する第１の読込みモジュール120 と、第２の読込みモジュール130 と、計算モジュール140 とを備えている。
【００６３】
ある実施形態では、分割ユニット121 は、複数のサブデータブロックの内の少なくとも１つのデータサイズが対応するグラフィックプロセッサスレッドグループ内の複数のスレッドの数と一致するように、各データブロックを複数のサブデータブロックに分割するように構成されている。
【００６４】
本開示の実施形態では、複数のグラフィックプロセッサスレッドグループが複数のグラフィックプロセッサスレッドグループのローカルメモリに複数のデータブロックを読み込むとき、第１の読込みモジュールは、複数のデータブロックに対応するパディングデータをローカルメモリに読み込むように更に構成されている。パディングデータにより、データブロック内のデータポイントの数が、グラフィックプロセッサスレッドグループ内の複数のスレッドの数より大きい。一対一マッピングが複数のデータポイントと複数のスレッドとの間に確立される場合、複雑な添字演算が必要になるため、データ伝送遅延を増大させる。不規則なデータを読むために、簡単なグラフィックプロセッサスレッドグループを使用して不規則なデータブロックに関してマッピングする。ある実施形態では、各データブロックを複数のサブデータブロックに分割し、複数のサブデータブロックの内の少なくとも１つのデータサイズが、対応するグラフィックプロセッサスレッドグループ内の複数のスレッドの数と一致する。
【００６５】
例えば、図４に示されているように、ブロックロード０，ブロックロード１，ブロックロード２及びブロックロード３のような４つのサブデータブロックにデータブロックを分割する。
【００６６】
読込みユニット121 は、対応するグラフィックプロセッサスレッドグループによって、対応するグラフィックプロセッサスレッドグループのローカルメモリに複数のサブデータブロックを１つずつ読み込むべく構成されている。本開示の実施形態では、図４に示されているように、グレイの網掛け領域が、対応するグラフィックプロセッサスレッドグループによって最初に読み込まれる処理されるべきデータを表わす。その後、グレイの網掛け領域の右側の領域のデータを読み込んで、続いて残りの部分を２回読み込んでもよい。従って、データブロックの読込みが４回で終了する。スレッドの大部分が１回〜３回の読込みでは使用されないため、複雑な添字演算が回避される。
【００６７】
シングルチャネル畳み込み層のための処理装置では、データブロックを読み込むとき、複数のサブデータブロックの内の少なくとも１つのデータサイズが対応するグラフィックプロセッサスレッドグループ内の複数のスレッドの数と一致するように、各データブロックを複数のサブデータブロックに分割する。その後、対応するグラフィックプロセッサスレッドグループは、対応するグラフィックプロセッサスレッドグループのローカルメモリに複数のサブデータブロックを１つずつ読み込む。本方法は、複雑な添字演算を回避することができ、データ伝送遅延を減らし得るため、不規則なデータブロックの読込みに完全に適用可能である。
【００６８】
本開示の実施形態は、マルチチャネル畳み込み層を処理するための方法を提供する。
【００６９】
図７は、本開示の実施形態に係るマルチチャネル畳み込み層のための処理方法を示すフローチャートである。
【００７０】
図７に示されているように、マルチチャネル畳み込み層のための処理方法は以下のステップを有する。
【００７１】
ステップS701では、処理されるべきデータ及びフィルタが複数のチャネルを有しており、各チャネルにおける処理されるべきデータを複数のデータブロックに分割する。
【００７２】
ある実施形態では、処理されるべきデータは、画像、映像、音声及び単語のようなコンピュータ可読データであってもよい。本開示の実施形態では、画像データの例を挙げると、マルチチャネル畳み込み層内の処理されるべき入力データ（処理されるべきデータ）は複数の画像及び複数のフィルタを有しており、各画像及び各フィルタは複数のチャネルを有している。図８に示されているように、入力画像は、64の画像（つまり、画像０〜画像63）及び64のフィルタ（つまり、フィルタ０〜フィルタ63）を含んでおり、各画像は３つのチャネル（チャネル10，チャネル11及びチャネル12）を有しており、各フィルタは３つのチャネル（チャネル10，チャネル11及びチャネル12）を有している。図８に示されている実施形態は単に説明のためのものであり、本開示は他の実施形態によってなされてもよく、他の実施形態に適用されてもよいと理解されるべきである。当業者は、図８に示されている実施形態に従って、あらゆる量のチャネルを有するあらゆる量のデータ及びフィルタを処理することができる。
【００７３】
更に、各チャネルにおける処理されるべきデータを複数のデータブロックに分割する方法は、本開示の上記の実施形態によって提供されている、シングルチャネル畳み込み層のための処理方法における分割する方法を参照してもよく、本明細書では省略されている。
【００７４】
ステップS702では、複数のグラフィックプロセッサスレッドグループが、複数のグラフィックプロセッサスレッドグループのローカルメモリに複数のデータブロックを同時的に読み込む。
【００７５】
ステップS703では、複数のグラフィックプロセッサスレッドグループが、複数のグラフィックプロセッサスレッドグループのローカルメモリに複数のフィルタを同時的に読み込む。
【００７６】
本開示の実施形態では、画像データの例を挙げると、複数のグラフィックプロセッサスレッドグループが複数のグラフィックプロセッサスレッドグループのローカルメモリに複数のデータブロックを同時的に読み込む前に、複数の画像及び複数のフィルタがグラフィックプロセッサのグローバルメモリに読み込まれる。或いは、複数の画像及び複数のフィルタが中央処理装置（CPU ）メモリ（つまりホストメモリ）に記憶される。まず、複数の画像及び複数のフィルタが、CPU メモリからPCIE（peripheral component interface express）を介してグラフィックプロセッサのグローバルメモリに移され、その後、グラフィックプロセッサの夫々の計算ユニット内の複数のスレッドが協働して、複数の画像及び複数のフィルタをグローバルメモリからローカルメモリにロードする。
【００７７】
本開示の実施形態では、ステップS703をステップS702の前に実行してもよく、又は、ステップS702及びステップS703を同時的に実行してもよく、本明細書では限定されていない。
【００７８】
ステップS704では、複数のグラフィックプロセッサスレッドグループ内の複数のスレッドが、１つのチャネルにおける複数のデータブロック内の対応するデータポイント及び複数のフィルタの畳み込み演算を同時的に計算する。
【００７９】
本開示の実施形態では、データポイントはユニットデータである。グラフィックプロセッサ内の各計算ユニットがグラフィックプロセッサスレッドグループを含んでおり、各計算ユニット内の夫々のスレッドが、ローカルメモリ内の処理されるべきデータ及び複数のフィルタの畳み込み演算を計算する。例えば、対応するスレッドは、チャネル10における複数のデータブロック内の対応するデータポイント及び複数のフィルタの畳み込み演算を計算し、つまり、チャネル10における各データポイントと複数のフィルタとの畳み込み演算を計算する。
【００８０】
ステップS705では、複数のグラフィックプロセッサスレッドグループ内の複数のスレッドが、各チャネルにおける畳み込み演算を１つずつ計算して各チャネルの畳み込み演算結果を得て、各チャネルの畳み込み演算結果を蓄積して最終の畳み込み演算結果を得る。
【００８１】
ステップS706では、最終の畳み込み演算結果を、複数のグラフィックプロセッサスレッドグループのグローバルメモリに書き込む。
【００８２】
図８に示されているように、最終の畳み込み演算結果をグローバルメモリに書き戻す。
【００８３】
本開示の実施形態に係るマルチチャネル畳み込み層のための処理方法では、以下の効果がある。(1) 畳み込み演算が、データをデータポイント毎に展開せずに入力データで直接計算されるため、追加のメモリを必要とせず、メモリ空間が有効に使用され得る。(2) 同一のグラフィックプロセッサスレッドグループ内のグラフィックプロセッサスレッドが、直列出力のデータポイントを計算して直列入力のデータポイントを使用するため、ローカルメモリでのデータの再使用が高められ、グラフィックプロセッサスレッドが、高速グラフィックプロセッサのローカルメモリに処理されるべきデータ及び畳み込みカーネルのデータを一時的に記憶するため、低速グラフィックプロセッサスレッドのグローバルメモリの読出し回数を減少させ、ひいては優れた性能になり、グラフィックプロセッサスレッドはデータ移動回数を更に減少させるため、電力消費量を低下させ、電力消費量に対する効率を高める。(3) 登録分割法は関連技術で使用されており、登録分割法のデータ編成モードにより効果が現れ難いが、データを複数のデータブロックに分割する間、登録分割法を使用することによりメモリアクセス計算比率が低下する。
【００８４】
本開示の実施形態では、複数のグラフィックプロセッサスレッドグループが複数のグラフィックプロセッサスレッドグループのローカルメモリに複数のデータブロックを同時的に読み込むとき、複数のデータブロックに対応するパディングデータをローカルメモリに読み込んでもよい。複数のパディング済みデータブロックは不規則なデータブロックである。言うまでも無く、複数のデータブロックは規則的なデータブロックであってもよく、本明細書では限定されていない。
【００８５】
パディングデータにより、データブロック内のデータポイントの数が、グラフィックプロセッサスレッドグループ内の複数のスレッドの数より大きい。一対一マッピングが複数のデータポイントと複数のスレッドとの間に確立される場合、複雑な添字演算が必要になるため、データ伝送遅延を増大させる。不規則なデータを読むために、簡単なグラフィックプロセッサスレッドグループを使用して不規則なデータブロックに関してマッピングする。ある実施形態では、ステップS702は以下のステップを更に有する。複数のサブデータブロックの内の少なくとも１つのデータサイズが対応するグラフィックプロセッサスレッドグループ内の複数のスレッドの数と一致するように、各データブロックを複数のサブデータブロックに分割する。また、対応するグラフィックプロセッサスレッドグループは、対応するグラフィックプロセッサスレッドグループのローカルメモリに複数のサブデータブロックを１つずつ読み込む。これらのステップは、上記の実施形態に述べられているシングルチャネル畳み込み層のための処理方法におけるステップと同様であり、本明細書では省略されている。従って、複雑な添字演算を回避して、データ伝送遅延を減らす。
【００８６】
本開示の実施形態では、複数のグラフィックプロセッサスレッドグループ内の複数のスレッドによって、１つのチャネルにおける複数のデータブロック内の対応するデータポイント及び複数のフィルタの畳み込み演算を同時的に計算する際に、登録分割処理を行なう。
【００８７】
本開示の上記の実施形態を達成するために、マルチチャネル畳み込み層のための処理装置が本開示の実施形態によって提供される。
【００８８】
図９は、本開示の実施形態に係るマルチチャネル畳み込み層のための処理装置を示すブロック図である。
【００８９】
図９に示されているように、処理装置200 は、分割モジュール210 、第１の読込みモジュール220 、第２の読込みモジュール230 、第３の読込みモジュール240 、計算モジュール250 、蓄積モジュール260 及び書込みモジュール270 を備えている。
【００９０】
ある実施形態では、処理されるべきデータは、画像、映像、音声及び単語のようなコンピュータ可読データであってもよい。本開示の実施形態では、画像データの例を挙げると、処理されるべきデータ及びフィルタは複数のチャネルを有しており、つまり、マルチチャネル畳み込み層における処理されるべき入力データ（処理されるべきデータ）は複数の画像及び複数のフィルタを有しており、各画像及び各フィルタは複数のチャネルを有している。図８に示されているように、入力画像は、64の画像（つまり、画像０〜画像63）及び64のフィルタ（つまり、フィルタ０〜フィルタ63）を含んでおり、各画像は３つのチャネル（チャネル10，チャネル11及びチャネル12）を有しており、各フィルタは３つのチャネル（チャネル10，チャネル11及びチャネル12）を有している。図８に示されている実施形態は単に説明のためのものであり、本開示は他の実施形態によってなされてもよく、他の実施形態に適用されてもよいと理解されるべきである。当業者は、図８に示されている実施形態に従って、あらゆる量のチャネルを有するあらゆる量のデータ及びフィルタを処理することができる。
【００９１】
分割モジュール210 は、各チャネルにおける処理されるべきデータを複数のデータブロックに分割するように構成されており、このような分割する処理に関して、上記の実施形態に述べられているシングルチャネル畳み込み層のための処理方法における処理を参照してもよい。
【００９２】
第１の読込みモジュール220 は、複数のグラフィックプロセッサスレッドグループによって複数のグラフィックプロセッサスレッドグループのローカルメモリに複数のデータブロックを同時的に読み込むように構成されている。第２の読込みモジュール230 は、複数のグラフィックプロセッサスレッドグループによって複数のグラフィックプロセッサスレッドグループのローカルメモリに複数のフィルタを同時的に読み込むように構成されている。
【００９３】
本開示の実施形態では、画像データの例を挙げると、複数のグラフィックプロセッサスレッドグループが複数のグラフィックプロセッサスレッドグループのローカルメモリに複数のデータブロックを同時的に読み込む前に、第３の読込みモジュール240 は複数の画像及び複数のフィルタをグラフィックプロセッサのグローバルメモリに読み込む。或いは、複数の画像及び複数のフィルタが中央処理装置（CPU ）メモリ（つまりホストメモリ）に記憶されている。まず、第３の読込みモジュール240 は、CPU メモリからPCIE（peripheral component interface express）を介してグラフィックプロセッサのグローバルメモリに複数の画像及び複数のフィルタを移し、その後、グラフィックプロセッサの各計算ユニット内の複数のスレッドが協働して、複数の画像及び複数のフィルタをグローバルメモリからローカルメモリに、つまり、第１の読込みモジュール220 及び第２の読込みモジュール230 によってロードする。
【００９４】
計算モジュール250 は、複数のグラフィックプロセッサスレッドグループ内の複数のスレッドによって、１つのチャネルにおける複数のデータブロック内の対応するデータポイント及び複数のフィルタの畳み込み演算を同時的に計算するように構成されている。本開示の実施形態では、データポイントはユニットデータである。グラフィックプロセッサ内の各計算ユニットがグラフィックプロセッサスレッドグループを含んでおり、各計算ユニット内の夫々のスレッドが、ローカルメモリ内の処理されるべきデータ及びフィルタの畳み込み演算を計算する。例えば、対応するスレッドは、チャネル10における複数のデータブロック内の対応するデータポイント及び複数のフィルタの畳み込み演算を計算する。
【００９５】
蓄積モジュール260 は、複数のグラフィックプロセッサスレッドグループ内の複数のスレッドによって、各チャネルにおける畳み込み演算を１つずつ計算して各チャネルの畳み込み演算結果を得て、各チャネルの畳み込み演算結果を蓄積して最終の畳み込み演算結果を得るように構成されている。書込みモジュール270 は、最終の畳み込み演算結果を、複数のグラフィックプロセッサスレッドグループのグローバルメモリに書き込むように構成されている。
【００９６】
本開示の実施形態に係るマルチチャネル畳み込み層のための処理装置では、以下の効果がある。(1) 畳み込み演算が、データをデータポイント毎に展開せずに入力データで直接計算されるため、追加のメモリを必要とせず、メモリ空間が有効に使用され得る。(2) 同一のグラフィックプロセッサスレッドグループ内のグラフィックプロセッサスレッドが、直列出力のデータポイントを計算して直列入力のデータポイントを使用するため、ローカルメモリでのデータの再使用が高められ、グラフィックプロセッサスレッドが、高速グラフィックプロセッサのローカルメモリに処理されるべきデータ及び畳み込みカーネルのデータを一時的に記憶するため、低速グラフィックプロセッサスレッドのグローバルメモリの読出し回数を減少させ、ひいては優れた性能になり、グラフィックプロセッサスレッドはデータ移動回数を更に減少させるため、電力消費量を低下させ、電力消費量に対する効率を高める。(3) 登録分割法は関連技術で使用されており、登録分割法のデータ編成モードにより効果が現れ難いが、データを複数のデータブロックに分割する間、登録分割法を使用することによりメモリアクセス計算比率が低下する。
【００９７】
本開示の実施形態では、複数のグラフィックプロセッサスレッドグループが複数のグラフィックプロセッサスレッドグループのローカルメモリに複数のデータブロックを同時的に読み込むとき、第１の読込みモジュール220 は、複数のデータブロックに対応するパディングデータをローカルメモリに読み込むように更に構成されている。複数のパディング済みデータブロックは不規則なデータブロックである。言うまでも無く、複数のデータブロックは規則的なデータブロックであってもよく、本明細書では限定されていない。
【００９８】
パディングデータにより、データブロック内のデータポイントの数が、グラフィックプロセッサスレッドグループ内の複数のスレッドの数より大きい。一対一マッピングが複数のデータポイントと複数のスレッドとの間に確立される場合、複雑な添字演算が必要になるため、データ伝送遅延を増大させる。不規則なデータを読むために、簡単なグラフィックプロセッサスレッドグループを使用して不規則なデータブロックに関してマッピングする。ある実施形態では、第１の読込みモジュール220 は分割ユニット221 及び読込みユニット222 を有している。分割ユニット221 は、複数のサブデータブロックの内の少なくとも１つのデータサイズが対応するグラフィックプロセッサスレッドグループ内の複数のスレッドの数と一致するように、各データブロックを複数のサブデータブロックに分割するように構成されている。読込みユニット222 は、対応するグラフィックプロセッサスレッドグループによって、対応するグラフィックプロセッサスレッドグループのローカルメモリに複数のサブデータブロックを１つずつ読み込むように構成されている。分割ユニット221 及び読込みユニット222 は、上記の実施形態に述べられているシングルチャネル畳み込み層のための処理装置における分割ユニット121 及び読込みユニット122 と同様であり、本明細書では省略されている。従って、複雑な添字演算を回避して、データ伝送遅延を減らす。
【００９９】
本開示の実施形態では、計算モジュール250 は、複数のデータブロック内の対応するデータポイント及び複数のフィルタの畳み込み演算を計算する際に登録分割処理を行なうように更に構成されている。
【０１００】
本開示の夫々の部分がハードウェア、ソフトウェア、ファームウェア又はこれらの組み合わせによって実現されてもよいと理解すべきである。上記の実施形態では、複数のステップ又は方法は、メモリに記憶されて適切な命令実行システムによって実行されるソフトウェア又はファームウェアによって実現されてもよい。例えば、本開示の夫々の部分が別の実施形態で同様にハードウェアによって実現される場合、前記ステップ又は方法は、本技術分野で公知の技術、つまり、データ信号の論理関数を実現するためのロジックゲート回路を有する別個の論理回路、適切な組み合わせロジックゲート回路を有する特定用途向け集積回路、プログラマブルゲートアレイ（PGA ）、フィールドプログラマブルゲートアレイ（FPGA）などの１つ又は組み合わせによって実現されてもよい。
【０１０１】
本明細書を通じた「実施形態」、「ある実施形態」、「一実施形態」、「別の例」、「例」、「具体例」又は「ある例」への言及は、実施形態又は例に関して述べられている特定の特徴、構造、材料又は特性が、本開示の少なくとも一実施形態又は例に含まれていることを意味する。従って、「ある実施形態では」、「一実施形態では」、「実施形態では」、「別の例では」、「例では」、「具体例では」又は「ある例では」のような用語の本明細書全体を通じた様々な箇所での言及は、必ずしも本開示の同一の実施形態又は例を指さない。更に、特定の特徴、構造、材料又は特性が一若しくは複数の実施形態又は例にあらゆる適切な方法で組み合わせられてもよい。
【０１０２】
説明的な実施形態が示され述べられているが、上記の実施形態は本開示を限定すると解釈されることができず、変更、選択及び調整が本開示の趣旨、原則及び範囲から逸脱することなく本実施形態になされ得ると、当業者によって認識される。
【図１】
2016004572.tif 000003
【図２】
2016004572.tif 000004
【図３】
2016004572.tif 000005
【図４】
2016004572.tif 000006
【図５】
2016004572.tif 000007
【図６】
2016004572.tif 000008
【図７】
2016004572.tif 000009
【図８】
2016004572.tif 000010
【図９】
2016004572.tif 000011
【手続補正書】
【提出日】平成27年1月23日(2015.1.23)
【手続補正１】
【補正対象書類名】図面
【補正対象項目名】図２
【補正方法】変更
【補正の内容】
【図２】
2016004572.tif 000012
【手続補正２】
【補正対象書類名】図面
【補正対象項目名】図４
【補正方法】変更
【補正の内容】
【図４】
2016004572.tif 000013
【外国語明細書】
2016004572.tif 000014
2016004572.tif 000015
2016004572.tif 000016
2016004572.tif 000017
2016004572.tif 000018
2016004572.tif 000019
2016004572.tif 000020
2016004572.tif 000021
2016004572.tif 000022
2016004572.tif 000023
2016004572.tif 000024
2016004572.tif 000025
2016004572.tif 000026
2016004572.tif 000027
2016004572.tif 000028
2016004572.tif 000029
2016004572.tif 000030
2016004572.tif 000031
2016004572.tif 000032
2016004572.tif 000033
2016004572.tif 000034
2016004572.tif 000035
2016004572.tif 000036
2016004572.tif 000037
2016004572.tif 000038
2016004572.tif 000039
【図１】
2016004572.tif 000040
【図２】
2016004572.tif 000041
【図３】
2016004572.tif 000042
【図４】
2016004572.tif 000043
【図５】
2016004572.tif 000044
【図６】
2016004572.tif 000045
【図７】
2016004572.tif 000046
【図８】
2016004572.tif 000047
【図９】
2016004572.tif 000048