CUDA или FPGA для особых целей 3D графические вычисления? [закрытый]

54
задан Trilarion 31 May 2019 в 02:17
поделиться

8 ответов

Я исследовал тот же вопрос некоторое время назад. После обсуждения людям, которые работали над FPGAs, это - то, что я получаю:

  • FPGAs являются большими для систем реального времени, где даже 1 мс задержки мог бы быть слишком длинным. Это не применяется в Вашем случае;
  • FPGAs может быть очень быстрым, особенно для четко определенных использований обработки цифровых сигналов (например, радарные данные), но хорошие являются намного более дорогими и специализированными, чем даже профессиональный GPGPUs;
  • FPGAs являются довольно громоздкими к программе. С тех пор существует компонент аппаратной конфигурации к компиляции, могли потребоваться часы. Это, кажется, больше подходит для инженеров-электроников (кто обычно те, кто работает над FPGAs), чем разработчики программного обеспечения.

, Если можно заставить CUDA работать на Вас, это - вероятно, наилучший вариант в данный момент. Это, конечно, будет более гибко, чем FPGA.

Другие опции включают Ручей от ATI, но до чего-то большого происходит, это просто также не принято как CUDA. После этого существуют все еще все традиционные опции HPC (кластеры x86/PowerPC/Cell), но они являются все довольно дорогими.

Hope, которая помогает.

47
ответ дан biozinc 7 November 2019 в 07:44
поделиться

Я пошел бы с CUDA.
я работаю в обработке изображений и пробовал аппаратные дополнения в течение многих лет. Сначала у нас было i860, затем Транспьютер, затем DSP, тогда FPGA и direct-compiliation-to-hardware.
то, Что неизбежно произошло, было то, что к тому времени, когда аппаратные платы были действительно отлажены и надежны, и код был портирован им - регулярные центральные процессоры совершенствовались для избиения их или измененной архитектуры машины хостинга, и мы не могли использовать старые платы, или производители платы обанкротились.

Путем придерживания чего-то как CUDA Вы не связываетесь с одним небольшим производителем специалиста плат FPGA. performence GPU улучшает быстрее тогда центральные процессоры и финансируется геймерами. Это - общепринятая технология и так вероятно, объединится с многоядерными центральными процессорами в будущем и тем самым защитит Ваши инвестиции.

15
ответ дан Martin Beckett 7 November 2019 в 07:44
поделиться

Мы сделали некоторое сравнение между FPGA и CUDA. Одна вещь, где CUDA сияет, если Вы можете действительно сформулировать свою проблему способом SIMD И можете получить доступ к объединенной памяти. Если доступы памяти не объединяются (1) или если у Вас есть различный поток управления в различных потоках, GPU может потерять решительно свою производительность, и FPGA может превзойти его по характеристикам. Другая вещь состоит в том, когда Ваша операция относительна маленький, но у Вас есть огромная сумма его. Но Вы наклоняетесь (например, из-за синхронизации), никакие не запускают ее в цикле в одном ядре, тогда Ваши времена вызова для ядра GPU превышают время вычисления.

Также питание FPGA могло быть лучше (зависит от Вашего приложения scenarion, т.е. GPU является только более дешевым (с точки зрения Ватт/Переброса) когда его вычисление все время).

Offcourse FPGA имеет также некоторые недостатки: IO может быть одним (у нас было здесь приложение, были, нам были нужны 70 ГБ/с, без проблем для GPU, но получить этот объем данных в FPGA, Вам нужно для стандартного дизайна больше контактов, чем доступный). Другой недостаток является временем и деньгами. FPGA является намного более дорогим, чем лучший GPU и время разработки очень высок.

(1) доступы Simultanously от различного потока до памяти должны быть к последовательным адресам. Этого иногда действительно трудно достигнуть.

48
ответ дан flolo 7 November 2019 в 07:44
поделиться

CUDA имеет довольно существенную кодовую базу примеров и SDK, включая бэкенд BLAS . Попытайтесь найти некоторые примеры подобными тому, что Вы делаете, возможно, также смотря серия GPU Gems книг, чтобы измерить, как хорошо CUDA будет соответствовать Вашим приложениям. Я сказал бы с логистической точки зрения, CUDA легче работать с и очень, намного более дешевый, чем какой-либо профессиональный инструментарий разработки FPGA.

Однажды я действительно изучал CUDA для резервного имитационного моделирования требования. Существует вполне хорошая серия лекций, связанных от веб-сайта для изучения. В Windows необходимо удостовериться, что CUDA работает на карте без дисплеев, поскольку графическая подсистема имеет сторожевой таймер, который уничтожит любой процесс, работающий больше 5 секунд. Это не происходит на Linux.

Любая машина с двумя PCI-e x16 слоты должна поддерживать это. Я использовал HP XW9300, который можно взять от eBay вполне дешево. Если Вы делаете, удостоверьтесь, что это имеет два ЦП (не один двухъядерный ЦП), поскольку слоты PCI-e живут на отдельных Гипертранспортных шинах, и Вам нужны два ЦП в машине для имения обеих активных шин.

3
ответ дан ConcernedOfTunbridgeWells 7 November 2019 в 07:44
поделиться

Решение на основе FPGA, вероятно, будет намного дороже, чем CUDA.

4
ответ дан 7 November 2019 в 07:44
поделиться

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

По моему опыту, любая реализация, выполненная абстрактным образом, то есть компилированный язык высокого уровня по сравнению с реализацией машинного уровня, неизбежно будет иметь потери производительности, особенно в реализация сложного алгоритма. Это верно как для FPGA, так и для процессоров любого типа. ПЛИС, разработанная специально для реализации сложного алгоритма, будет работать лучше, чем ПЛИС, элементы обработки которой являются общими, что обеспечивает определенную степень программируемости на основе регистров управления вводом, ввода-вывода данных и т. Д.

более высокая производительность достигается в каскадных процессах, где выходные данные процесса становятся входами для другого и не могут выполняться одновременно. Каскадные процессы в ПЛИС просты, и может значительно снизить требования к памяти ввода-вывода, в то время как память процессора будет использоваться для эффективного каскадирования двух или более процессов, в которых есть зависимости данных.

То же самое можно сказать о GPU и CPU. Алгоритмы, реализованные на языке C, выполняемые на процессоре, разработанном без учета характеристик производительности, присущих кэш-памяти или системе основной памяти, не будут работать так же хорошо, как реализованный. Конечно, неучет этих характеристик упрощает реализацию. Но ценой производительности.

Не имея прямого опыта работы с графическим процессором, но зная присущие ему проблемы с производительностью системы памяти, он тоже будет подвержен проблемам с производительностью.

То же самое можно сказать о GPU и CPU. Алгоритмы, реализованные на языке C, выполняемые на процессоре, разработанном без учета характеристик производительности, присущих кэш-памяти или системе основной памяти, не будут работать так же хорошо, как реализованный. Разумеется, неучет этих характеристик упрощает реализацию. Но ценой производительности.

Не имея прямого опыта работы с графическим процессором, но зная присущие ему проблемы с производительностью системы памяти, он также будет подвержен проблемам с производительностью.

То же самое можно сказать о GPU и CPU. Алгоритмы, реализованные на языке C, выполняемые на процессоре, разработанном без учета характеристик производительности, присущих кэш-памяти или системе основной памяти, не будут работать так же хорошо, как реализованный. Разумеется, неучет этих характеристик упрощает реализацию. Но ценой производительности.

Не имея прямого опыта работы с графическим процессором, но зная присущие ему проблемы с производительностью системы памяти, он тоже будет подвержен проблемам с производительностью.

4
ответ дан 7 November 2019 в 07:44
поделиться

На чем вы развертываете? Кто ваш покупатель? Даже не зная ответов на эти вопросы, я бы не стал использовать FPGA, если вы не создаете систему реального времени и в вашей команде нет инженеров-электриков / компьютерщиков, которые знают языки описания оборудования, такие как VHDL и Verilog. Здесь много всего, и это требует другого настроения, чем обычное программирование.

2
ответ дан 7 November 2019 в 07:44
поделиться

Я разработчик CUDA с очень небольшим опытом работы с FPGA: s, однако я пытался найти сравнения между ними.

К настоящему моменту я пришел к выводу:

Графический процессор имеет гораздо более высокую (доступную) пиковую производительность. У него более благоприятное соотношение FLOP / Вт. Это дешевле Он развивается быстрее (совсем скоро у вас будет буквально «настоящий» TFLOP). Программировать проще (прочтите статью об этом не личном мнении)

Обратите внимание, что я говорю «реальный / доступный», чтобы отличать от чисел, которые вы увидите в рекламе GPGPU.

НО графический процессор не более благоприятен, когда вам нужно делать случайный доступ к данным. Надеюсь, это изменится с новой архитектурой Nvidia Fermi, которая имеет дополнительный кэш l1 / l2.

мои 2 цента

3
ответ дан 7 November 2019 в 07:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: