?

Log in

No account? Create an account

Previous Entry Share Next Entry
van de Koppel et al., 2011
covtoc
basil_yakimov
van de Koppel J., Gupta R., Vuik C. Scaling-up spatially-explicit ecological models using graphics processors // Ecological Modelling. 2011. 222: 3011-3019.

При работе с имитационными моделями экологических процессов в пространстве существенную сложность представляет время, затрачиваемое на вычисления. Чаще всего пространство в таких моделях представляет собой решетку, на которой происходят вычисления. Каждая ячейка может находиться в нескольких состояниях, изменения которых происходят по заложенным в конструкцию модели правилам (правила могут быть совсем простые a la игра в жизнь Конвея, а могут описываться развесистыми дифурами).

Ввиду ограниченности вычислительных мощностей исследователи обычно имеют дело с решетками размером до 1000 х 1000. В частности, у меня в диссертации модели контактного процесса с мутациями прогонялись на решетках размера 512 х 512. Особое значение размер решетки играет при изучении масштабно-инвариантных свойств, таких как структура кластеров, распределение кластеров по размерам, скейлинг видового богатства (SAR) и моментов (мф-анализ).

Интересное решение проблемы вычислительной мощности предлагается в данной работе. Помимо центрального процессора в современных компьютерах используется графический процессор, особенностью которого является наличие большого числа ядер, а также его оптимизированность под операции на данных с плавающей точкой (типов long и double). Производители современных видеокарт для расширения вариантов использования своей продукции облегчают программистам работу и предоставляют специальные инструменты, позволяющие задействовать графический процессор. Одним из таких инструментов является CUDA – расширение языка C, разработанное компанией NVidia.

В данной статье авторы демонстрируют основы применения CUDA в контексте экологических моделей. Сначала на простом примере разбирается базовый синтаксис (прямо с анализом кода на C), затем на трех относительно недавних моделях демонстрируется эффективность использования графического процессора. Эффективность вычислений возрастает примерно в 100 раз по сравнению с Matlab и примерно в 50 раз по сравнению с компилированной программой на C.

Возможность использования графического процессора расширяет перспективы пространственных моделей, поскольку относительно легко доступными становятся исследования на решетках размером миллионы ячеек (в статье использовались решетки размером 3072 х 3072). Такая эффективность графических процессоров в данном контексте связана с наличием большого числа ядер, на которые распараллеливается процесс вычислений. Однако эта особенность накладывает и главное ограничение – использовать видеокарту имеет смысл только при работе с моделями с синхронным обновлением состояния решетки, то есть с моделями типа клеточных автоматов. Если же принципиально необходимо использование алгоритмов с асинхронным обновлением, то получение выгоды от параллельных вычислений навряд ли возможно.

P.S. Отдельное спасибо хочется сказать авторам за выложенные реализации моделей. Если дойдут руки вернуться к моделированию – очень пригодится.