Re: С/С++ вопрос.
От: watch-maker  
Дата: 14.05.12 20:29
Оценка: 3 (1) +1
Здравствуйте, shadows_s, Вы писали:

_>Быстродействие играет большую роль, так как пишу программу под CUDA C.

Так где у тебя этот код должен исполнятся? На CPU или на GPU?
В любом случае, если важна производительность, то нужен компилятор. Тут есть два варианта — либо готовый внешний компилятор, либо нечто, способное формировать код на лету. Первый вариант, как правило, проще. У второго чуть ниже накладные расходы. Но по скорости работы производимого кода они в целом равнозначны.

Итого:
Если брать CPU и внешний компилятор, то выбор просто огромен. Берешь любой. Передаёшь ему свой код и забираешь, например, в виде динамической библиотеки. Если же хочется на CPU компилировать внутри одного процесса, то можно взять что-то готовое, наприме libtcc.
В случае же GPU можно взять, очевидно, компилятор nvcc. Если же делать без него, то в CUDA можно редактировать и динамически загружать PTX-модули, полученные из исходного текста на C/C++. К сожалению, насколько я помню, напрямую компиляция из C-кода в CUDA недоступна — это возможно, но просто недоступен соответствующий API, хотя в том же OpenCL (который может полноценно работать в виде обёртки над CUDA) соответствующий API есть. Впрочем это не серьёзное техническое затруднение, для кодогенерации и PTX вполне может подойти; либо, конечно, можно посмотреть на OpenCL.


_>Первое, что пришло на ум, сделать с помощью синтаксического анализатора.

Это совсем дохлый путь. Eсли нужен транслятор, то только анализатором не обойтись.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.