Есть ли способ в CUDA выделить память в функции __device__? Я не мог найти примеров этого.
Из руководства: B.15 Динамическое распределение глобальной памяти void * malloc (size_t size); void free (void * ptr); динамически выделять и освобождать память из кучи фиксированного размера в глобальной памяти. Функция CUDA in-kernel malloc() выделяет по меньшей мере размер байтов из кучи устройства и возвращает указатель на выделенную память или NULL, если для выполнения запроса недостаточно памяти. Возвращаемый указатель гарантированно будет выровнен с 16-байтной границей. Функция CUDA in-free free() освобождает память, на которую указывает ptr, которая должна была быть возвращена предыдущим вызовом malloc(). Если ptr равно NULL, вызов free() игнорируется. Повторные вызовы free() с тем же ptr имеют поведение undefined. Память, выделенная данным потоком CUDA через malloc(), остается выделенной для времени жизни контекста CUDA или до тех пор, пока он явно не будет освобожден вызовом free(). Он может использоваться любыми другими потоками CUDA даже после последующих запусков ядра. Любой поток CUDA может освобождать память, выделенную другим потоком, но необходимо следить за тем, чтобы один и тот же указатель не был освобожден более одного раза.