同じブロック内の他のスレッドとそのメンバーの一部を共有するCUDAコードでクラスをインスタンス化したいと思います。
ただし、次のコードをコンパイルしようとすると、次のエラーが発生します。»属性「共有」はここには適用されません«(nvccバージョン4.2)。
class SharedSomething {
public:
__shared__ int i; // this is not allowed
};
__global__ void run() {
SharedSomething something;
}
その背後にある理論的根拠は何ですか?目的の動作(1つのブロックにまたがるクラスの共有メンバー)を実現するための回避策はありますか?