実現したいこと
using namespace nvcuda
を使えるようにしたい
前提
cudaでwmmaを利用したいので、nvidiaのドキュメントに目を通していたところ、
サンプルコードを見つけ、それを試しに動かそうとしています。
発生している問題・エラーメッセージ
using namespace nvcudaを使えるようになったらいいので、global関数の中身に関しては大丈夫です
エラーメッセージ
error : name must be a namespace name
該当のソースコード
CUDA
1#include <mma.h> 2using namespace nvcuda; 3 4__global__ void wmma_ker(half *a, half *b, float *c) { 5 // Declare the fragments 6 wmma::fragment<wmma::matrix_a, 16, 16, 16, half, wmma::col_major> a_frag; 7 wmma::fragment<wmma::matrix_b, 16, 16, 16, half, wmma::row_major> b_frag; 8 wmma::fragment<wmma::accumulator, 16, 16, 16, float> c_frag; 9 10 // Initialize the output to zero 11 wmma::fill_fragment(c_frag, 0.0f); 12 13 // Load the inputs 14 wmma::load_matrix_sync(a_frag, a, 16); 15 wmma::load_matrix_sync(b_frag, b, 16); 16 17 // Perform the matrix multiplication 18 wmma::mma_sync(c_frag, a_frag, b_frag, c_frag); 19 20 // Store the output 21 wmma::store_matrix_sync(c, c_frag, 16, wmma::mem_row_major); 22}
試したこと
調べても特に有効策が分からない状態です
> using namespace nvcuda;
この行をコメントアウトしたらどうなります?
wmma::を用いている箇所すべてに対して
error : name followed by "::" must be a class or namespace name
のメッセージがでています
namespace nvcuda 内に namespace wmma ってことでしょうかね...
> error : name must be a namespace name
このエラーはどこで出たんですか?
解決後に気づきました。
ここに書いてることと同様の方法で動くようになりました。
ありがとうございました。

回答1件
あなたの回答
tips
プレビュー