I would like to instantiate a class in CUDA code, that shares some of its members with other threads in the same block.
However, when trying to compile the following code, I get the error:
attribute "shared" does not apply here
(nvcc version 4.2).
class SharedSomething {
public:
__shared__ int i; // this is not allowed
};
__global__ void run() {
SharedSomething something;
}
What is the rationale behind that? Is there a work-around to achieve the desired behavior (shared members of a class across one block)?