Javier Luis Lopez Ответов: 2

Переключиться с opencl и CUDA на многопоточный C++?


Это очень трудно использовать графический процессор, потому что пользователь должен делать сегментацию памяти и передачу, использование локальной памяти и в большинстве приложений достигается очень низкое увеличение производительности в 10-20 раз.
С другой стороны, использовать многопоточность легко и быстро.
Было бы лучше использовать 1280 потоков параллельно с использованием недорогого графического процессора, такого как GTX1060, чем любой другой SW на основе openCL или CUDA

Что я уже пробовал:

я попробовал использовать многопоточность с OpenCL в алгоритмах compuret based vision используя графическую плату Gigabyte Radeon R6 360 и GTX1060

2 Ответов

Рейтинг:
2

KarstenK

Это зависит от того, что вы хотите сделать. Даже многопоточность не является оптимальной, когда работает много коротких потоков, потому что многопоточность означает также накладные расходы на процессор.

Графический вывод и низкоуровневые вычисления лучше всего выполнять на графическом процессоре, а также тогда, когда использование графического процессора приводит к меньшему использованию процессора.

Старайтесь избегать большого количества нитей, но меньше нитей с большим количеством работы, поэтому настройка и демонтаж теряют вес. Вы можете достичь этого, создавая пакеты данных для операций и результатов. Таким образом, потоки получают очередь операций и рабочую нагрузку.

Подумайте о критическом Рабочем пути, если вам нужно дождаться ресурсов или предварительно обработанных данных.


Рейтинг:
2

Javier Luis Lopez

Единственное решение-запустить многопоточность C++ на GPU и полностью отказаться от OPENCL или cuda навсегда.

Я говорю об увеличении производительности простого ПК с многопоточностью в 41 раз
И улучшение по сравнению с очень сложным opencl sw в 12 раз

Конечно, нужно внести много изменений в HW и драйверы


Rick York

"Конечно, нужно внести много изменений в HW и драйверы"

Как это вообще можно считать жизнеспособным решением?