Интеграция ODE на GPU с помощью boost и python

Не так давно я писал здесь о модели, которую я пытаюсь построить с помощью pycuda, которая решает около 9000 связанных ODE. Однако моя модель слишком медленная, и член SO предположил, что, вероятно, виновата передача памяти с хоста на GPU.

Прямо сейчас cuda используется только для расчета скорости изменения каждого из 9000 видов, с которыми я имею дело. Поскольку я передаю массив от хоста к графическому процессору для выполнения этого вычисления и возвращаю массив из графического процессора для интеграции на хосте, я вижу, как это замедлит работу.

Будет ли boost решением моей проблемы? Из того, что я читал, boost обеспечивает взаимодействие между С++ и Python. Он также включает в себя C++ odeint, который я читал, в партнерстве с Thrust позволяет быстро сократить и интегрировать все на GPU. Правильно ли я понимаю?

Спасибо, Карстен.


person Hair of Slytherin    schedule 22.05.2013    source источник
comment
Мы работаем над похожими вещами ODE. Отправьте нам письмо и давайте обсудим.   -  person arrayfire    schedule 22.05.2013


Ответы (1)


Да, boost.odeint и boost.python должны решить вашу проблему. Вы можете использовать odeint с Thrust. Есть также некоторые библиотеки OpenCL (VexCL, ViennaCL), которые могут быть проще в использовании, чем Thrust. Взгляните на эту статью для сравнения и вариантов использования odeint на графических процессорах.

Boost.python может осуществлять связь между приложением C++ и Python. Другим подходом может быть очень тонкое приложение командной строки для решения ODE (с использованием boost.odeint), которое полностью контролируется вашим приложением Python.

person headmyshoulder    schedule 23.05.2013