Почему переменные-члены не могут быть общими?
Я хотел бы создать экземпляр класса в коде CUDA, который разделяет некоторые его члены с другими потоками в том же блоке.
Однако при попытке скомпилировать следующий код я получаю сообщение об ошибке: »атрибут "общий" здесь не распространяется (nvcc версия 4.2).
class SharedSomething {
public:
__shared__ int i; // this is not allowed
};
__global__ void run() {
SharedSomething something;
}
В чем причина этого? Есть ли обходной путь для достижения желаемого поведения (общие члены класса в одном блоке)?