У меня есть код, написанный в старом стиле Fortran 95 для моделирования сжигания. Одна из особенностей этой проблемы заключается в том, что приходится решать жесткую систему ОДУ для учета влияния химических реакций. Для этой пурпуры я использую библиотеку Fortran SLATEC, которая также довольно старая. Процедура решения прямо вперед, один просто нужно вызвать подпрограмму ddriv3 в каждой ячейке расчетной области, так что выглядит так:Slatec + CUDA Fortran
do i = 1,Number_of_cells ! Number of cells is about 2000
call ddriv3(...) ! All calls are independent on cell number i
end do
ddriv3 является довольно сложным и использует множество других функций библиотеки.
Есть ли способ получить преимущество от CUDA Fortran, не искав какую-то другую библиотеку для этой цели? Если я просто запускаю это как «параллельный цикл», это будет эффективно, или может быть, есть другой способ?
Прошу прощения за такой вопрос, который недвусмысленно возникает из наиболее очевидного ответа: «Почему бы вам не попробовать и не узнать об этом сами?», Но я в очень стесненных условиях времени. У меня нет никакого опыта в CUDA, и я просто хочу выбрать самый правильный и самый простой способ начать.
Заранее благодарен!
Это зависит от структуры подпрограммы, задействованных алгоритмов и требуемых передач memz. –