2013-05-09 2 views
1

Мы много слышали о том, как некоторые типы вычислений могут быть выполнены быстрее GPU, чем процессором, но, как программист, я бы не знал, как заставить вычисление запускаться таким образом. Может ли кто-нибудь дать объяснение на высоком уровне о том, как это делается?Как написать код, который выполняет вычисления с использованием графического процессора?

Я знаю, что есть библиотеки, которые будут делать это «по волшебству», но я хотел бы понять, что они делают за кулисами. Я уверен, что нет флага runOnGpu, который вы можете передать на системные вызовы низкого уровня, и какие методы доступны?

+1

Возможно, начните с поискового запроса для «CUDA» или «OpenCL». Существует огромное количество доступных справочных материалов, которые должны отвечать на ваш вопрос ... – talonmies

ответ

0

Необходимо переписать программу. Используйте C++ AMP, если вы используете C++ или APARAPI, если вы используете Java.

+0

Как говорится в этом вопросе: «Я знаю, что есть библиотеки, которые будут делать это« по волшебству », но я хотел бы понять, что они делают за сцены " – codebox

+1

Извините, если я точно не понял ваш вопрос. Ну не ожидайте слишком много волшебства. Нет никакого королевского пути к эффективному и портативному и легко написанному параллельному коду - по крайней мере, я не знаю (но я могу ошибаться). Обычно вы выбираете 2 из 3. Возвращаясь к оригинальному вопросу, если вы заинтересованы в низкоуровневом графическом процессоре, изучите ядра CUDA/OpenCLL. Даже посмотрите на сгенерированный код сборки, чтобы увидеть «за кулисами», запустить профилировщики ядра (у nvidia есть хорошие инструменты). Если вам нужен определенный тип вычислений (например, fft, линейная алгебра), то доверьтесь библиотекам, предлагаемым поставщиком. –

+0

спасибо за указатели, я посмотрю на эти – codebox