У меня проблема с программой, которую я пишу, используя CUDA. У меня есть входной массив и выходной массив, который мне нужно скопировать в память устройства. Проблема в том, что оба массива вместе слишком велики, чтобы вписаться в память устройства. То, что я сейчас делаю, - это разделение как входного, так и выходного массивов и последовательное выполнение ядра для обеих частей.
Для этого подхода к работе я использую промежуточный массив, поскольку cudaMemcpyFromArray и cudaMemcpyToArray работают только для текстурной памяти. Это приводит к ненужным операциям копирования памяти. Кто-нибудь знает более эффективный способ?Эффективная память большого входа в CUDA?
0
A
ответ
0
Вы можете использовать копию асинхронной памяти, если операции на одном сегменте массива не зависят от операций над другим сегментом массива. Это поможет вам копировать вещи взад и вперед при выполнении вычислений. Из Cuda с руководством по программированию:
некоторых вызовы функций являются асинхронными: Управление возвращаются в хосте нити перед тем, как устройство завершило поставленную задачу. Это:
- Kernel запускает;
- Память устройства к памяти устройства;
- Операции с памятью памяти устройства объемом 64 КБ или менее;
- Копии памяти, выполняемые функциями, которые имеют суффикс Async;
- Функции вызова функции памяти.
Надеюсь, что это поможет брату. Вы также можете рассмотреть возможность сжатия массивов с использованием рисового кодирования, чтобы они соответствовали друг другу.
1
некоторые варианты:
Также убедитесь, что вы знаете о блокировании: Алгоритм Построения http://en.wikipedia.org/wiki/Loop_tiling
Смежные вопросы
- 1. Cuda Распределение/Память tTime большого изображения
- 2. Память эффективная набивка список
- 3. Эффективная пирамида изображения в CUDA?
- 4. Память Эффективная рекурсия
- 5. Эффективная оценка функции отображения индексов в CUDA
- 6. cuda общая память перезаписывается?
- 7. Эффективная синхронизация большого репозитория Perforce?
- 8. Память эффективная std :: map альтернатива
- 9. Cuda - Инициализация большого массива
- 10. CUDA разделяемая память
- 11. Как управляется память CUDA?
- 12. Запись большого размера неизвестного размера в Cuda?
- 13. Прикрепленная память в Nvidia CUDA
- 14. Память CUDA для таблиц поиска
- 15. Эффективная память масок в памяти Numpy?
- 16. Память эффективная таблица объектов в Python
- 17. Больше памяти эффективная обработка большого файла .tsv в R
- 18. CUDA. Общая память vs Константа
- 19. CUDA закреплена память и коалесцирует
- 20. Bank конфликт CUDA разделяемая память?
- 21. CUDA глобальная память скорость доступа
- 22. CUDA общая память проблемы понимания
- 23. Cuda, унифицированная память, передача данных
- 24. CUDA: унифицированная память, используя массивы
- 25. Невозможно выделить общую память CUDA
- 26. Прямая доступная память устройства CUDA
- 27. Эффективная топологическая структура данных для сеток на CUDA?
- 28. Эффективная выборка большого числа наблюдаемых rx вместе
- 29. копирование в общую память в cuda
- 30. Запись в глобальную память в CUDA