¿Hay alguna manera en CUDA de asignar memoria en la función __device__? No pude encontrar ningún ejemplo de hacer esto.CUDA asigna memoria en la función __device__
De manual: B.15 Dynamic Global Memory Asignación void * malloc (size_t size); void free (void * ptr); asigna y libera memoria dinámicamente desde un montón de tamaño fijo en la memoria global. La función CUDA in-kernel malloc() asigna al menos un tamaño de bytes desde el montón del dispositivo y devuelve un puntero a la memoria asignada o NULL si no hay memoria suficiente para cumplir con la solicitud. Se garantiza que el puntero devuelto esté alineado con un límite de 16 bytes. La función CUDA in-kernel free() desasigna la memoria apuntada por ptr, que debe haber sido devuelta por una llamada previa a malloc(). Si ptr es NULL, la llamada a free() se ignora. Las llamadas repetidas a free() con el mismo ptr tienen un comportamiento indefinido. La memoria asignada por un hilo CUDA dado a través de malloc() permanece asignada durante el tiempo de vida del contexto CUDA, o hasta que se libera explícitamente mediante una llamada a free(). Puede ser utilizado por cualquier otro hilo CUDA, incluso desde el lanzamiento del núcleo posterior. Cualquier hilo CUDA puede liberar memoria asignada por otro hilo, pero se debe tener cuidado para asegurar que el mismo puntero no se libere más de una vez.
¿Está tratando de asignar memoria dinámicamente? – jmilloy
Sí. Entiendo que es un requisito un poco exótico pero estoy portando la base de código existente – SparcU