Аппаратные ограничения при передаче данных (высокая пропускная способность)

375
Daimonie

В настоящее время я изучаю аппаратные ограничения для научной установки. Мы сталкиваемся с потерей данных, связанной с высокой нагрузкой. Сначала я объясню проблему и предложу решение, которое, я надеюсь, вы сможете проверить.

У нас есть камера, обеспечивающая четыре изображения с разрешением 120px x 120px и частотой 10 кГц. Они собираются с помощью фрейм-граббера (NI PCIe-1433). Фрейм-граббер подключен к слоту PCI.

Если я правильно понял, данные будут передаваться из фрейм-граббера в процессор. (Frame grabber -> шина -> южный мост -> шина -> северный мост -> лицевая сторона шины -> процессор -> встроенный контроллер памяти -> шина -> RAM?)

Затем мы загружаем данные в высокопроизводительный графический процессор, что означает, что ЦП запрашивает данные из ОЗУ (RAM-> шина-> Контроллер памяти ЦП?) И загружает их в графический процессор (ЦП -> шина на передней стороне -> северный мост). -> шина -> видеокарта NVidia?).

Сами характеристики фрейм-граббера вполне понятны, и он должен справиться с этим. В настоящее время думают, что двойная загрузка процессора (запись в ОЗУ; ОЗУ -> GPU) вызывает узкое место. Вероятные исправления - это либо обновить ЦП до более высокой одночастотной модели и / или обновить ОЗУ.

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

1
Это PCI или PCI-E? При 144 000 000 пикселей в секунду (при условии, что сжатие данных не выполняется) и 8 бит на пиксель, который будет потоком данных 1 152 000 000 бит / 137 МБ / с. Нормальный PCI будет где-то около 133 МБ / с. Название подсказывает, что это модель PCI-E? Поскольку современная компьютерная архитектура на самом деле не имеет классического моста север / юг, как это было раньше, и могут использоваться такие технологии, как DMA, не так просто определить, по какому пути пойдут данные. Как вы загружаете данные в графический процессор? Seth 7 лет назад 0
Это должно быть PCIe. Материнская плата Dell 0k240y, процессор Intel Xeon 1620v3. Доступ к данным осуществляется через labview, который вызывает DLL C ++ / CUDA, которая загружает и вычисляет нужные нам данные. Daimonie 7 лет назад 0
Кстати, вычисление, которое вы сделали выше, не учитывает кодировку 8B / 10B, не так ли? Daimonie 7 лет назад 0
Не это не так. Это был просто быстрый расчет на случай, если это действительно просто PCI, игнорирующий любые специальные кодировки, сжатие или подобное, которые могут иметь место. Ваше представление о данных от граббера к оперативной памяти довольно точно, даже если FSB и северный мост были в значительной степени устранены. Что касается пути ЦП к графическому процессору, то это будет зависеть от того, как устроен этот модуль. В зависимости от этого графический процессор может напрямую считывать данные из оперативной памяти. Я не такой, как вы бы измеряли связь. Возможно, есть несколько тестов скорости ОЗУ. Также рассмотрите возможность проверки кода на наличие узких мест, таких как дорогие операции в циклах. Seth 7 лет назад 0
Спасибо - я только что прочитал около 8/10, поэтому мне было любопытно. Да, я рада, что поняла некоторые вещи правильно! Код не делает много дорогих OPS. Кодировка GPU - C ++ / CUDA, поэтому, хотя процессор использует указатели на данные ОЗУ (быстро), он все же требует передачи хоста / устройства (медленно). Если я правильно понял, линии PCIe для граббера и графического процессора различны, поэтому здесь не должно быть особых требований. Однако, из того, что я собираю, может быть узкое место ЦП. Похоже, что i7 Skylake действительно может изменить ситуацию (скорость шины южного моста, скорость одноядерного процессора). Daimonie 7 лет назад 0
Южный мост не является частью процессора, он является частью чипсета. И южный мост, вероятно, здесь вообще не будет использоваться, если к нему не подключен слот PCIe, который вы используете. Большинство линий PCIe подключены непосредственно к процессору. Было бы полезно, если бы вы объяснили, в чем именно заключается ваша проблема. Также пропускная способность ОЗУ, скорее всего, здесь не проблема, поскольку четырехканальный DDR4 имеет гораздо большую пропускную способность, чем шина PCIe - 64 ГБ / с - это максимальная пропускная способность, поддерживаемая ЦП. Что касается оценки узких мест, существуют различные анализаторы шин, но они довольно дороги. Muh Fugen 7 лет назад 0
После просмотра таблицы данных для этой карты у нее есть собственный механизм DMA, и у вас будет и графический процессор Nvidia. Похоже, что более быстрая тактовая частота процессора здесь вообще ничего не даст, так как процессоры на обеих картах будут напрямую обращаться к памяти хост-системы. Вам, вероятно, придется обратиться к поставщикам за поддержкой здесь. Muh Fugen 7 лет назад 0
Я видел, что Skylake использует DMI3, который имеет лучший автобус для севера / юга. Понял, что это поможет. Спасибо за четкие ответы! Что касается описания проблемы; это просто, что мы теряем данные где-то в процессе, в зависимости от частоты сбора данных. Выше 8 кГц мы начинаем терять все больше и больше данных. Это связано с узким местом где-то, и мы пытаемся оценить, где. Я могу запустить часть процесса CPU / GPU на старом GTX 580 без проблем на частоте до 14 кГц. Это то, что подсказывает нам аппаратное узкое место. Daimonie 7 лет назад 0
Просто чтобы добавить это. Я разговаривал с инженером-прикладником National Instruments, который согласен с тем, что карта должна поддерживать пропускную способность системы. В результате мы сейчас очень критически оцениваем нашу программную реализацию, в частности LabView. Daimonie 7 лет назад 0
Я хотел обновить эту проблему для дальнейшего использования. Из-за смены приоритетов мы решили получить более сильный ПК, чтобы попытаться решить проблему без затрат времени (ASUS ROG Maximus Hero IX, Intel i7-7700K). К сожалению, это не решило это. Обещанный критический взгляд на реализацию C ++ / CUDA показал, что это не проблема. Точно так же его минимальная реализация labview не сделала этого. Кажется, проблема заключается в захвате, который не захватывает все захваченные кадры. Это будет решено в ближайшее время. Daimonie 6 лет назад 0

0 ответов на вопрос

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