[phpBB Debug] PHP Warning: in file [ROOT]/phpbb/session.php on line 580: sizeof(): Parameter must be an array or an object that implements Countable
[phpBB Debug] PHP Warning: in file [ROOT]/phpbb/session.php on line 636: sizeof(): Parameter must be an array or an object that implements Countable
3.14.by forum • Трансляция C-программ на язык CUDA
Page 1 of 1

Трансляция C-программ на язык CUDA

Posted: Thu Aug 04, 2011 10:02 am
by chernyuk
Требуется программы, написанные на языке C (численное решение дифферециальных уравнений в частных производных), переписать на языке CUDA. Есть ли готовые рецепты для распараллеливания вычислений?

Вот тема на форуме ITC.ua: http://itc.ua/forum/showthread.php?p=617530. Там же есть некоторые ссылки на литературу.

Re: Трансляция C-программ на язык CUDA

Posted: Fri Aug 05, 2011 12:59 am
by BarsMonster
Боюсь по математике я не спец, готовых решений не знаю.

Re: Трансляция C-программ на язык CUDA

Posted: Fri Aug 05, 2011 9:00 am
by chernyuk
BarsMonster wrote:Боюсь по математике я не спец, готовых решений не знаю.
Спасибо за Ваш ответ.

Я хотел бы воспользоваться трансляторами, которые могут С-программу перевести в код CUDA.
При этом хотелось бы распараллелить вычисления на несколько потоков (на 2^n, n - натуральное). Этого транслятор, наверное, не сумеет. Под "готовыми решениями" имелись ввиду рецепты типичных алгоритмов распараллеливания циклов (и вложенных циклов), применяемых в классичеcком C.

Re: Трансляция C-программ на язык CUDA

Posted: Fri Aug 05, 2011 4:30 pm
by BarsMonster
chernyuk wrote:
BarsMonster wrote:Боюсь по математике я не спец, готовых решений не знаю.
Спасибо за Ваш ответ.

Я хотел бы воспользоваться трансляторами, которые могут С-программу перевести в код CUDA.
При этом хотелось бы распараллелить вычисления на несколько потоков (на 2^n, n - натуральное). Этого транслятор, наверное, не сумеет. Под "готовыми решениями" имелись ввиду рецепты типичных алгоритмов распараллеливания циклов (и вложенных циклов), применяемых в классичеcком C.
Где-то тут подвох )
CUDA / OpenCL - оба работают на C.
И у обоих основная суть - распаралеливание задачи на кучу потоков.
Само собой оно нигде не распаралелится - нужно самому решать где резать задачу на куски и как потом из кусков решения собирать целое.