Me gustaría crear una instancia de una clase en código CUDA, que comparte algunos de sus miembros con otros hilos en el mismo bloque.¿Por qué no se pueden compartir las variables miembro?
Sin embargo, cuando intento compilar el siguiente código, aparece el error: »el atributo" compartido "no se aplica aquí« (nvcc versión 4.2).
class SharedSomething {
public:
__shared__ int i; // this is not allowed
};
__global__ void run() {
SharedSomething something;
}
¿Cuál es la razón detrás de eso? ¿Hay una solución alternativa para lograr el comportamiento deseado (miembros compartidos de una clase en un bloque)?
Gracias por la solución. Esto incluso puede hacerse más genérico al declarar una clase interna Compartida en Foo que contiene todos los datos compartidos. El código de llamada crea una instancia compartida de Foo :: Shared y la pasa al constructor de Foo. De esta forma, el código de llamada no tiene que cambiarse si Foo :: Shared cambia. – user1716882
Sí, buen punto. – harrism