Информация об изменениях

Сообщение Re[20]: Собрал ревизию B от 05.02.2020 15:38

Изменено 09.02.2020 3:17 koandrew

Re[20]: Собрал ревизию B
Здравствуйте, Codealot, Вы писали:

C>Например, есть желание поэкспериментировать с числодроблением на FPGA. Но для этого нужна плата с минимумом 8гб оперативки и быстрым соединением с компом.

Зачем тебе столько оперативки? Ты не забывай, что оперативка на FPGA используется совсем не так, как в GPGPU или в компе. На FPGA вся обработка происходит в потоковом режиме (то есть данные заливаются, обрабатываются и сливаются параллельно и одновременно), потому оперативка используется чаще всего просто как эластичный FIFO буфер, задача которого "сглаживать" импульсный характер источников данных и получателей результатов. Потому чаще всего объём оперативки не так важен, как доступная полоса пропускания. Именно поэтому на плату из ОП я поставил DDR2 — у меня была задача обеспечить наиболее широкую полосу пропускания при учёте всех ограничений (всего 50 пинов, максимальная скорость PHY — 333 MHz), и 2 * 2 * 333 * 10^6 ≈ 1270 Мбайт/с — это максимум, которого можно было добиться, и этого едва хватает, чтобы организовать двойную буферизацию в режиме 1080p@60Hz (нужно 1920 * 1080 * 4 * 60 * 2 ≈ 949 Мбайт/с). Заметь, тут нигде нет слова "объём", ибо нужный мне объём — это всего два-три кадра по 4920 * 1080 * 4 ≈ 7.9 Мбайт каждый, то есть даже 32 Мбайт мне было бы за глаза.

А ты наверняка думаешь, как привык делать на компе — "сначала мы загружаем всё в оперативку, потом — обрабатываем, и затем — сливаем обратно". Но такой подход применяется в компах от безысходности, ибо процессор не может делать всё это сразу и параллельно. Хотя это, строго говоря, не совсем так, ибо есть DMA, который может заливать/сливать данные в/из оперативки без участия ЦП, но не часто встретишь софт, который бы начинал обработку данных по мере их загрузки в память, а не ждал окончания загрузки до того, как начать обработку.

Насчёт быстрого соединения с компом — тут тоже есть масса вариантов, в примерном порядке возрастания геморройности: USB 3 (via FT601), Ethernet 1G, Ethernet 10G, PCI Express (реализовать весьма просто, но нужны драйвера под ОС компа). Выбирай, какой тебе нужно?

У меня в общем-то есть в планах соорудить платку с упором на полосу пропускания памяти (типа DDR3 на 64-битной шине, или даже пара таких контроллеров), на которой буду делать 3D ядро (как известно, им нужны широченные каналы в память), выходами HDMI, DisplayPort и коннектором PCI Express. Но пока это на будущее

C>Вполне возможно. Но я же не умру, если сначала попробую dead bug? По моему, вполне работоспособный бомж-вариант

Ну ок
Re[20]: Собрал ревизию B
Здравствуйте, Codealot, Вы писали:

C>Например, есть желание поэкспериментировать с числодроблением на FPGA. Но для этого нужна плата с минимумом 8гб оперативки и быстрым соединением с компом.

Зачем тебе столько оперативки? Ты не забывай, что оперативка на FPGA используется совсем не так, как в GPGPU или в компе. На FPGA вся обработка происходит в потоковом режиме (то есть данные заливаются, обрабатываются и сливаются параллельно и одновременно), потому оперативка используется чаще всего просто как эластичный FIFO буфер, задача которого "сглаживать" импульсный характер источников данных и получателей результатов. Потому чаще всего объём оперативки не так важен, как доступная полоса пропускания. Именно поэтому на плату из ОП я поставил DDR2 — у меня была задача обеспечить наиболее широкую полосу пропускания при учёте всех ограничений (всего 50 пинов, максимальная скорость PHY — 333 MHz), и 2 * 2 * 333 * 10^6 ≈ 1270 Мбайт/с — это максимум, которого можно было добиться, и этого едва хватает, чтобы организовать двойную буферизацию в режиме 1080p@60Hz (нужно 1920 * 1080 * 4 * 60 * 2 ≈ 949 Мбайт/с). Заметь, тут нигде нет слова "объём", ибо нужный мне объём — это всего два-три кадра по 1920 * 1080 * 4 ≈ 7.9 Мбайт каждый, то есть даже 32 Мбайт мне было бы за глаза.

А ты наверняка думаешь, как привык делать на компе — "сначала мы загружаем всё в оперативку, потом — обрабатываем, и затем — сливаем обратно". Но такой подход применяется в компах от безысходности, ибо процессор не может делать всё это сразу и параллельно. Хотя это, строго говоря, не совсем так, ибо есть DMA, который может заливать/сливать данные в/из оперативки без участия ЦП, но не часто встретишь софт, который бы начинал обработку данных по мере их загрузки в память, а не ждал окончания загрузки до того, как начать обработку.

Насчёт быстрого соединения с компом — тут тоже есть масса вариантов, в примерном порядке возрастания геморройности: USB 3 (via FT601), Ethernet 1G, Ethernet 10G, PCI Express (реализовать весьма просто, но нужны драйвера под ОС компа). Выбирай, какой тебе нужно?

У меня в общем-то есть в планах соорудить платку с упором на полосу пропускания памяти (типа DDR3 на 64-битной шине, или даже пара таких контроллеров), на которой буду делать 3D ядро (как известно, им нужны широченные каналы в память), выходами HDMI, DisplayPort и коннектором PCI Express. Но пока это на будущее

C>Вполне возможно. Но я же не умру, если сначала попробую dead bug? По моему, вполне работоспособный бомж-вариант

Ну ок