Я хочу использовать разделяемую память между вызовом ядра одного ядра. Могу ли я использовать общую память между вызовом ядра?Как использовать общую память между вызовом ядра CUDA?
ответ
Нет, вы не можете. Общая память имеет жизненный цикл блока резьбы. Переменная, хранящаяся в ней, может быть доступна всем нитям, принадлежащим одной группе, во время одного вызова функции .
Попытайтесь заблокировать страницу, но скорость должна быть намного медленнее, чем графическая память. cudaHostAlloc (void ** ptr, size_t size, cudaHostAllocMapped); , затем отправьте ptr на код ядра.
Раньше вы могли сделать это нестандартным способом, когда у вас будет уникальный идентификатор для каждого блока разделяемой памяти, а следующее ядро проверяет идентификатор и, следовательно, выполняет требуемую обработку в этом блоке разделяемой памяти. Это было трудно реализовать, так как вам нужно было обеспечить полное заполнение каждого ядра и иметь дело с различными угловыми случаями. Кроме того, без официальной поддержки вы не полагаетесь на совместимость между вычислительными устройствами и версиями cuda.
- 1. Невозможно выделить общую память CUDA
- 2. CUDA: запись в общую память увеличивает время выполнения ядра много
- 3. CUDA, может ли использовать общую память улучшить мою производительность?
- 4. Как использовать именованную общую память?
- 5. копирование в общую память в cuda
- 6. Локальный указатель на общую память в CUDA
- 7. CUDA ядра зарегистрировать размер
- 8. CUDA функция ядра
- 9. Использовать общую память для соседних элементов массива?
- 10. Память передачи CUDA во время выполнения ядра
- 11. Как координировать общую память между двумя процессами
- 12. Как я могу использовать общую память здесь в своем ядре CUDA?
- 13. CUDA: Можно ли загрузить объект в общую память, как показано?
- 14. Как использовать общую память (IPC) в Android
- 15. Как использовать общую память с Golang?
- 16. Как использовать общую память правильно под окнами
- 17. Оптимизация ядра CUDA
- 18. Почему коды ядра, которые используют общую память, обязательно должны быть синхронизированы? (CUDA)
- 19. Общая память и потоки при запуске ядра
- 20. конвертировать общую память в регистр с помощью Cuda
- 21. Cuda, унифицированная память, передача данных
- 22. Как профилировать общую память?
- 23. Простой CUDA ядра Оптимизация
- 24. Объявление CUDA Global Array и инициализация перед вызовом ядра
- 25. Ядро ядра CUDA
- 26. cuda странная ошибка доступа к памяти в общую память
- 27. Как управляется память CUDA?
- 28. CUDA переменные внутри глобального ядра
- 29. Как синхронизировать функцию ядра cuda?
- 30. CUDA: Как передать несколько дублирующих аргументы ядра CUDA
Общая память имеет продолжительность жизненного цикла блока, а не область ядра. – talonmies
@talonmies, Спасибо! Извините, я имею в виду то же самое, но ошибался в терминологии. Я имею в виду, что вместо глобальной памяти (на самом деле, пока вы не вызываете cudaFree), нет способа получить переменную между глобальными вызовами функций. – geek