Я пишу приложение Qt с простой идеей: есть несколько устройств с поддержкой OpenCL, каждое из которых получает собственный управляющий поток, который подготавливает данные, выполняет ядро OpenCL и обрабатывает результаты.Код OpenCL на самом деле является ядром майнинга биткойнов (сейчас это , это , но это не имеет значения).
При работе с 2 графическими процессорами все в порядке.Когда я использую GPU и CPU, возникает проблема.Процессор работает с разумной скоростью, но производительность графического процессора замедляется до нуля.
В Linux нет такой проблемы.В Windows poclbm ведет себя одинаково: при запуске нескольких экземпляров (1 для GPU, 1 для CPU) производительность GPU равна 0.
Я не уверен, какую часть кода я должен публиковать, поэтомуэто будет полезно.Я могу только упомянуть, что нить является дочерним элементом QThread
с run()
, переопределенным с занятым циклом while( !_stop ) { mineBitcoins(); }
.Логика этого цикла в значительной степени скопирована из poclbm BitcoinMiner::mining_thread
( здесь ).
В каком направлении мне копать?Спасибо.
upd: я использую QtOpenCL с AMD APP SDK .