2014-03-19 3 views
0

Мне было интересно, может ли GPU вести себя как процессор, если он изменен или запрограммирован для этого. Если есть способ, я также хотел бы знать, как это можно сделать. Причина, почему, ну, иногда я делаю такие вещи, как эксперименты, просто для удовольствия. Плюс, если это не большая проблема, тогда было бы намного лучше, чем покупать дорогостоящий процессор, чтобы получить лучшую производительность. Обычно мне не нужен мой GPU, только потому, что я использую свой компьютер для простейших вещей. Мой другой компьютер, это немного другая история (потому что я использую ее для воспроизведения видео), но вы получаете эту идею.Может ли программа GPU быть запрограммирована и/или изменена для выполнения инструкций CPU?

+4

GPU's Turing Complete. Поэтому это возможно. Совсем другое дело. Я сомневаюсь, что это иначе, чем как интеллектуальное упражнение; Графические процессоры оптимизированы, чтобы делать разные вещи, чем процессоры. См. Также http://superuser.com/questions/308771/why-are-we-still-using-cpus-instead-of-gpus –

+0

Да, вы, безусловно, правы, что это было бы нелогично. Однако, как я уже сказал, было бы интересно посмотреть результат как на эксперимент, по крайней мере, в моей собственной перспективе. –

+0

Я с нетерпением жду результатов ваших усилий. –

ответ

5

Да, это называется GPGPU (общего назначения GPU), и с ним можно запрограммировать некоторые CPU-подобные нагрузки на вашем GPU с использованием языков, как CUDA или OpenCL.

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

В самом деле, этот метод расчета поймал достаточно тяги, чтобы создать новые линии продуктов, (например, Xeon Phi, formely Larrabee) и расширение существующих графических процессоров (например, Tesla/Fermi и другие)

EDIT
Перечитав свой вопрос: если вы имеете в виду запуск реального CPU ISA на таком GPGPU, а не только какую-то общую задачу ЦП, то лучшим вариантом является Xeon Phi, упомянутый выше, он должен основываться на том же ISA, что и на CPU (это единственный x86 GPGPU, о котором я знаю).

+0

А, да. Но я боюсь, что у меня сейчас нет GPU GPU общего назначения. Не было бы смысла покупать его, просто чтобы я мог его запрограммировать. Но это отвечает на мой вопрос, поэтому спасибо! –

+0

@spicedawgx, проверьте, поддерживает ли он один из двух языков выше – Leeor

+0

Графические процессоры слабы со сложным потоком управления не столько из-за слабого предсказания ветвления, сколько для ориентации SIMD. Хотя графические процессоры позволяют увеличить расхождение «потоков» (сравнимо с каналом данных SIMD), чем чистый SIMD (даже с предикацией), расхождение более ограничено, чем на процессорах и снижает производительность.Графические процессоры также имеют пропускную способность, а не латентность для кэшей и контроллеров памяти (хотя интегрированные чипы CPU-GPU, похоже, используют контроллеры памяти с процессором), поэтому, если латентность не скрыта параллелизмом, то такие вещи, как перемещение связанного списка, еще медленнее. –

Смежные вопросы