Параллельное программирование на python, разгрузка на GPU

На мой взгляд, я пишу научный код на Python, содержащий множество очень параллелизуемых циклов for. В этих циклах я вызываю множество функций, принадлежащих классам, из библиотеки python2.7 с открытым исходным кодом, поэтому невозможно было бы перейти на другой язык. Если это не может быть связано с питоном. У меня есть два разных кода ->

  1. Вызывает C-binaries* в самом внутреннем цикле, который является горлышком бутылки, поскольку он может использовать только один поток, а затем записывает результаты на диск.

  2. Вызывает функции с открытым исходным кодом C PyObject-** во внутреннем цикле, сохраняет в ndarray, записывает на диск во внешнем цикле

Можно ли сделать разгрузку цикла for в любом из них для GPU? (NVIDIA GTX GPU) Например. используя OpenACC(Anaconda)/PGI, PyCUDA или PyOpenCL или даже OpenCV?

(* Зависит от пути для хранения ГБ временных данных, например, $HOME/tmp/) (** Менее распараллеливаемый, поскольку они зависят от предыдущей итерации..)

Ввод изображений CT -> 3d np.arrays значений int16 со знаком

У меня есть восемь потоков процессора, которые я могу использовать полностью с multiprocessing.pool, однако мой GPU ничего не делает. Предположим, 8 ГБ ОЗУ, используя < 2 ГБ. Использование Arch-Linux.

PS. Я открыт для предложений по модернизации оборудования -> Я занимаюсь исследованиями рака, что делает возможным финансирование.

0 ответов

Другие вопросы по тегам