[解決済み] ファンネルシフトとは?
質問
CUDA 5.0 プログラミングガイドを読んでいて、3.5 の計算可能なデバイスにはあるが 3.0 にはない "Funnel shift" と呼ばれる機能に行き当たりました。この機能には、「リファレンスマニュアルを参照してください」という注釈がありますが、マニュアルで「ファネルシフト」という用語を検索しても、何も出てきません。
ググってみたが、以下のサイトにしか記載がなかった。 http://www.cudahandbook.com 第8章に掲載されています。
8.2.3 ファネルシフト (SM 3.5)
GK110 では、64 ビットの「ファンネルシフト」命令を追加し、以下の組込み関数でアクセスできるようにし ました。
__funnelshift_lc():左ファネルシフトの最上位32ビットを返します。
__funnelshift_rc(): 右ファネルシフトの最下位 32 ビットを返します。
これらの組込み部品は、インラインデバイスとして実装されています。 関数 (インライン PTX アセンブラを使用) は sm_35_intrinsics.h にあります。
しかし、quot;left funnel shift" や "right funnel shift" が何であるかについては、まだ説明されていないのです。
では、それは何なのか、どこに必要なのか。
どのように解決するのか?
CUDAの場合、2つの32ビットレジスタを連結して64ビット値にし、その値を左または右にシフトし、最上位(左シフトの場合)または最下位(右シフトの場合)32ビットを返します。
からの組込み関数
sm_35_intrinsics.h
は以下の通りです。
unsigned int __funnelshift_lc(unsigned int lo, unsigned int hi, unsigned int shift);
unsigned int __funnelshift_rc(unsigned int lo, unsigned int hi, unsigned int shift);
Andy Glew (dead link removed)によると、ファンネルシフトの応用として、高速な不整列memcpyや、上のコメントでnjuffaが言及しているように、2つの入力ワードが同じであれば、rotateの実装に使用することができるそうです。
関連
-
[解決済み】NVIDIA NVML Driver/library version mismatch [終了しました。]
-
[解決済み】CUDAドライバのバージョンがCUDAランタイムのバージョンに対して不足しています。
-
[解決済み】コマンドプロンプトからCUDAをコンパイルするとエラーになる。
-
[解決済み] Cudamemcpy関数の使用法
-
[解決済み] ファンネルシフトとは?
-
[解決済み] cudaMemcpyToSymbolとcudaMemcpyの比較 なぜまだ残っているのか (cudaMemcpyToSymbol)
-
[解決済み] OSXでNVIDIA Cudaエラー「すべてのCUDA対応デバイスはビジー状態か使用不可」発生
-
[解決済み] ハードウェアなしでCUDAプログラミングができるGPUエミュレータ【終了しました
-
[解決済み】CUDAランタイムAPIを使用してエラーをチェックする標準的な方法は何ですか?
-
[解決済み】CuDNNのインストールを確認する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】CUDAドライバのバージョンがCUDAランタイムのバージョンに対して不足しています。
-
[解決済み】コマンドプロンプトからCUDAをコンパイルするとエラーになる。
-
[解決済み] ジョブを実行するGPUはどのように選択するのですか?
-
[解決済み] Cudamemcpy関数の使用法
-
[解決済み] cuda atomicAdd のサンプルで正しい出力が得られない
-
[解決済み] このCUDAカーネルの起動パラメータを理解する
-
[解決済み] cudaMemcpyToSymbolとcudaMemcpyの比較 なぜまだ残っているのか (cudaMemcpyToSymbol)
-
[解決済み] ハードウェアなしでCUDAプログラミングができるGPUエミュレータ【終了しました
-
[解決済み] GPU上のCUDAアクティビティを監視するためのtopライクなユーティリティ
-
[解決済み】CuDNNのインストールを確認する方法は?