Эпоха GPU
Признанный лидер
- CPU. Intel Xeon E5-2680 v4 — 28 потоков с HyperThreading, 2.4 GHZ;
- GPU. NVIDIA GTX 1080 — 2560 CUDA Cores, 1607 Mhz, 8GB GDDR5X.
Линия графика, выделенная оранжевым, показывает время, которое требуется для создания данных в обычном ОЗУ, передачу их в память GPU и последующие вычисления. Зеленая линия показывает время, которое требуется на вычисление данных, которые были сгенерированы уже в памяти видеокарты (без передачи из ОЗУ). Синяя отображает время подсчета на центральном процессоре. Матрицы порядка менее 1000 элементов перемножаются на GPU и CPU почти за одинаковое время. Разница в производительности хорошо проявляется с матрицами размерами более 2000 на 2000, когда время вычислений на CPU подскакивает до 1 секунды, а GPU остается близким к нулю.
Многопоточность и все о ней
Многие наверняка слышали выражения из серии «2 потока», «4 потока», «8 потоков» и т.д. При этом физических ядер зачастую было в 2 раза меньше.
Многопоточность у красных появилась совсем недавно, с выходом чипов Ryzen на совершенно новом техпроцессе. Что это такое – тема отдельной статьи.
Цель функции заключается в том, что на 1 ядро может одновременно обрабатывать несколько потоков данных. Пока первый поток простаивает, а второй занимается вычислением, запущенное приложение может воспользоваться вакантной логической мощью для своих целей. В результате, прерывания случаются гораздо реже, а вы не ощущаете тормозов и прочих неудобств при работе.
Недостаток технологии заключается в следующем:
- оба потока обращаются к единой кэш-памяти 2 и 3 уровней;
- тяжелые вычислительные процессы могут вызвать конфликт в системе.
Если очень грубо, то все кирпичи с одного места на другое можно перенести в одной руке (1 поток), либо в двух (2 потока), но человек при этом один (1 ядро) и устает одинаково при любых условиях, хоть его производительность фактически увеличивается вдвое. Иными словами, мы упираемся в производительность ЦП, а конкретней в его частоту. Знакомы с понятием Turbo Boost? Процесс кратковременно повышает частоту процессора на несколько сотен мегагерц в особо сложных сценариях, чтобы вы не испытывали проблем при обработке сложных данных.
Есть ли смысл переплачивать за производительность?
Сквадра Груп
Процессоры Сквадра Груп | CPU Benchmark | Цена за сервер, ₽ | Новые процессоры | CPU Benchmark | Цена за сервер, ₽ |
Intel Xeon E5530 (4 Core, 8M Cache, 2.40 GHz) |
4621 | 18 000 | Intel Core i5-2300 (4 Core, 6M Cache, up to 3.10 GHz) |
5283 | 78 000 |
Intel Xeon E5620 (4 Core, 12M Cache, 2.40 GHz) |
4903 | 21 800 | Intel Core i7-870 (4 Core, 8M Cache, 2.93 GHz) |
5487 | 85 000 |
Intel Xeon E5645 (6 Core, 12M Cache, 2.40 GHz) |
6533 | 39 400 | Intel Xeon E3-1225 v3 (4 Core, 8M Cache, 3.20 GHz) |
7005 | 124 300 |
Intel Xeon X5650 (6 Core, 12M Cache, 2.66 GHz) |
7601 | 45 400 | Intel Xeon E5-2620 v2 (6 Core, 15M Cache, 2.10 GHz) |
8689 | 195 000 |
Intel Xeon E5-2670 v1 (8 Core, 20M Cache, 2.60 GHz) |
12497 | 77 900 | Intel Xeon E5-2640 v3 (8 Core, 20M Cache, 2.60 GHz) |
14055 | 375 000 |
Видеоаналитика «на борту»
Сейчас мало кого удивишь встроенными модулями видеоаналитики «на борту» камеры видеонаблюдения. Даже бюджетные модели могут иметь стандартные аналитические функции:
- пересечение линии
- вторжение в зону
- антисаботажные функции (изменение фона)
- оставленные предметы
- громкий звук
- захват лица
- подсчет посетителей
- тепловая карта для определения мест с наибольшей и наименьшей активностью посетителей
Топовые процессоры камер позволяют решать куда более специфичные задачи анализа видео, даже такие «модные», как нейросетевые алгоритмы.
Примеры таких алгоритмов:
- классификация по категориям «человек», «транспорт» или «другое»
- определение количества людей в очереди и времени ожидания каждого человека
- распознавание лиц
- распознавание номеров авто
И в этой связи нельзя не упомянуть однокристальную систему HiSilicon Kirin 970, как один из первых чипов со специальным модулем поддержки нейронных сетей.
Сколько нужно ядер и потоков современному обывателю?
Как я уже сказал выше, современные ОС падки на ресурсы процессора, поскольку отнимают часть мощностей на собственные службы, интерфейс, красивости и функции защиты в реальном времени. Но при этом пользователь хочет еще и работать с комфортом.
- По-хорошему, для офисной работы будет вполне достаточно 2‑ядерных ЦП, но при этом учитывайте, что одновременно работать с браузером, текстовыми редакторами, почтовым клиентом и проигрывателем, не получится – система попросту не справится. А если использовать топологию 2 ядра/4 потока, то ситуация в корне преображается – рук то больше.
- Игры требуют уже больше ресурсов. Начнем с того, что современные проекты очень падки на ресурсы чипа. Взять к примеру, ту же GTA V или Watch Dogs 2: они способны выжимать все соки из любого камня, поскольку параллельно отрисовывают сцены игры (скрипты), просчитывают окружение, прорабатывают звук, поведение искусственного интеллекта и не только. И все эти процессы еще нужно синхронизировать надлежащим образом.
- А если копнуть в задачи типа программирования, рендеринга и профессиональной работы с графики, то видно, что здесь и 4‑ядерные/8‑поточные чипы начинают захлебываться и работают на износ.
Что такое многопоточная обработка?
В компьютерной архитектуре многопоточная обработка — это способность центрального процессора (ЦП), чтобы обеспечить одновременное выполнение нескольких потоков, поддерживаемых операционной системой. Этот подход отличается от многопроцессорности, и его не следует путать; В многопоточном приложении потоки совместно используют ресурсы одного или нескольких ядер процессора, включая вычислительные блоки, кэш и буфер поиска трансляции (TLBL).
Когда многопроцессорные системы включают в себя несколько полных процессоров на одном или нескольких ядрах, многопроцессорность направлена на увеличение использования одного ядра за счет использования параллелизма на уровне потоков, а также параллелизма на уровне команд. Поскольку эти два метода дополняют друг друга, они объединены почти во всех современных системных архитектурах с несколькими многопоточными ЦП и с многоядерными ЦП, способными работать с несколькими потоками.
Многопоточная парадигма стала более популярной, поскольку попытки использовать параллелизм на уровне инструкций (то есть возможность выполнять несколько инструкций параллельно) застопорились в конце 1990-х годов. Это позволило концепции высокопроизводительных вычислений выйти из более специализированной области обработки транзакций.
Хотя дальнейшее ускорение отдельного потока или программы очень сложно, большинство компьютерных систем фактически выполняют многозадачность между несколькими потоками или программами, и поэтому методы, улучшающие производительность всех задач, приводят к увеличению производительности. Генеральная. Другими словами, чем больше инструкций может обрабатывать ЦП одновременно, тем выше общая производительность всей системы.
Ставим CUDA Toolkit
Идем по вышеприведенной ссылке и скачиваем CUDA Toolkit для Linux (выбрать можно из нескольких версий, для дистрибутивов Fedora, RHEL, Ubuntu и SUSE, есть версии как для архитектуры x86, так и для x86_64). Кроме того, там же надо скачать комплекты драйверов для разработчиков (Developer Drivers for Linux, они идут первыми в списке).
Запускаем инсталлятор SDK:
Когда установка будет завершена, приступаем к установке драйверов. Для этого завершаем работу X-сервера:
Открываем консоль <Ctrl+Alt+F5> и запускаем инсталлятор драйверов:
После окончания установки стартуем иксы:
Чтобы приложения смогли работать с CUDA/OpenCL, прописываем путь до каталога с CUDA-библиотеками в переменную LD_LIBRARY_PATH:
Или, если ты установил 32-битную версию:
Также необходимо прописать путь до заголовочных файлов CUDA, чтобы компилятор их нашел на этапе сборки приложения:
Все, теперь можно приступить к сборке CUDA/OpenCL-софта.
Что делает хороший потоковый ЦП?
ЦП для потоковой передачи требуется отличная многоядерная производительность. Такие задачи, как потоковая передача и рендеринг видео, выигрывают от многоядерной производительности больше, чем от чего-либо еще, но игры немного отличаются.
Если вы выполняете настройку с двумя ПК, вам не нужно беспокоиться о игровая производительность процессора вашей потоковой машины, поскольку все его ресурсы могут быть эффективно распределены для потока.
Если вы хотите использовать потоковую передачу на одном ПК, вам придется потратить гораздо больше на процессор. Это связано с тем, что игры не масштабируются на несколько ядер. Современные игровые движки становятся лучше в этом отношении, но до недавнего времени большинство игр не создавалось для использования более чем первых четырех ядер процессора.
Процессор против vCPU
С развитием облачных сервисов появилось виртуальное центральное процессорное устройство, или сокращенно vCPU. TechTarget определяет vCPU как “физический центральный процессор (CPU), который назначен виртуальной машине (VM)”.
Виртуальные машины — это, по сути, автономные операционные системы, которые работают внутри другой операционной системы, как если бы они были приложениями. Виртуальные машины используются для различных целей, таких как тестирование нового программного обеспечения в безопасной среде, запуск нескольких операционных систем (например, Windows и Linux) на одном компьютере или объединение нескольких физических серверов в один сервер для экономии места и снижения затрат.
Итак, vCPU — это программная реализация процессора; он физически не существует внутри вашего компьютера, как реальный процессор. Гипервизор, который представляет собой программное обеспечение, которое создает виртуальные машины и управляет ими, назначает VCPU виртуальной машине. Каждый vCPU рассматривается операционной системой внутри виртуальной машины как реальное ядро процессора.
Однако, поскольку процессоры VCPU основаны на программном обеспечении, они не так эффективны, как настоящие процессоры
Поэтому важно указать, сколько ядер имеет ваш процессор, когда вы покупаете компьютер (например, «четырехъядерный» означает четыре ядра). То же правило применяется при выборе виртуального частного сервера (VPS) или плана хостинга выделенного сервера
Основное различие между физическими процессорами и процессорами VCPU заключается в том, что обычные процессоры основаны на оборудовании, а процессоры VCPU основаны на программном обеспечении. Это означает, что процессоры CPU физически существуют внутри вашего компьютера, а процессоры VCPU — нет; вместо этого они создаются гипервизорами, когда это необходимо. Из-за этой разницы в реализации процессоры CPU намного эффективнее, чем процессоры VCPU; у них нет накладных расходов, связанных с запуском в программном обеспечении.
С начала 2000-х годов процессоры VCPU становятся все более популярными, поскольку их дешевле и проще назначать, чем физические процессоры; однако, если вы ищете производительность, лучше всего использовать компьютер с несколькими ядрами процессора, поскольку каждое ядро может обрабатывать инструкции независимо.
Генеративное проектирование
Использование программного обеспечения для итеративного проектирования в зависимости от конкретного сочетания нагрузок и ограничений связано с большим объемом вычислений. Ускорить выполнение таких задач могут рабочие станции с большим количеством процессорных ядер.
Корпоративные приоритеты
64-ядерный процессор AMD Ryzen Threadripper PRO 3995WX и 32-ядерный процессор Threadripper PRO 3975WX идеально подходят для выполнения задач генеративного проектирования. При этом 64-ядерный процессор 3995WX может обеспечивать 44-процентное преимущество в скорости над двумя 28-ядерными процессорами конкурента. 2 Кроме непревзойденной в своем классе производительности, отличительной особенностью процессоров Threadripper PRO являются упомянутые выше технологии AMD PRO, поэтому ИТ-организации могут положиться на современные функции безопасности и корпоративную управляемость. Еще одним преимуществом процессоров Threadripper PRO является поддерживаемый платформой большой объем памяти для выполнения проектов, связанных с обработкой очень больших наборов данных.
Приоритет производительности
Кроме того, процессоры AMD Ryzen Threadripper 3-го поколения отличаются огромным количеством ядер. Например, процессор AMD Ryzen Threadripper 3990X имеет 64 ядра, а процессор 3970X — 32 ядра. Хотя это семейство процессоров и не поддерживает технологии AMD PRO, процессоры AMD Ryzen Threadripper 3-го поколения имеют немного более высокую максимальную частоту, чем аналогичные процессоры семейства Threadripper PRO. Тем не менее, пользователи могут захотеть выполнить собственные тесты, чтобы проверить, обеспечивает ли более высокая тактовая частота процессоров AMD Ryzen Threadripper 3-го поколения более высокую производительность при работе именно с их проектами, так как относительно более слабая конфигурация памяти может существеннее влиять на производительность.
Процессоры AMD Ryzen 5000 серии также прекрасно подходят пользователям, желающим сохранить максимальную производительность при выполнении традиционных задач 3D-проектирования и использовать до 16 ядер для ускорения генеративного проектирования.
Немного о разнице CPU и GPU
Серверные CPU — это мощные универсальные комбайнеры. Но в CPU значительно меньше ядер: единицы и десятки против тысяч в GPU. Например, AMD Threadripper 3990X имеет 64 ядра и будет выполнять меньше команд за такт, чем Nvidia RTX 3090 с 10496 ядрами CUDA, но зато ядра устроены намного сложнее и способны выполнять длинные инструкции с высокой точностью.
Если сравнить рендеринг на CPU и GPU, то окажется, что CPU выдаст более сложную картинку, с меньшим количеством шумов, но скорость будет не такой впечатляющей. Чтобы выполнить аналогичные по сложности расчёты, GPU придётся разбивать длинную инструкцию на маленькие и простые. Обработка будет быстрее, но нюанс в том, что не все инструкции можно разбить, а потому рендеринг на GPU ограничен в возможностях.
При сравнении рендеринга в лоб получим следующее:
Параметр |
CPU |
GPU |
Скорость |
— |
+ |
Сложность |
+ |
— |
Качество |
+ |
— |
Рендеринг в реальном времени |
—* |
+ |
Стоимость |
— |
+ |
*CPU могут рендерить в реальном времени, но делают это несравнимо хуже.
На видео с 10-ой минуты можете убедиться в этом своими глазами. Crysis 1, запущенный на AMD Threadripper 3990X идёт с очень низким FPS на минимальных настройках. Напоминаю, что это процессор без встроенной графики для рабочих станций, у которого 64 ядра, 128 потоков и цена в 3990 долларов.
Вроде бы перевес в сторону GPU, но когда речь о дорогостоящих проектах, где в приоритете качество — всё же выбирают CPU. Поэтому серверы без дискретной графики вполне могут брать на себя следующие задачи: рендеринг, видеоконвертирование, обработка фото, видеоредактирование, создание видеоконтента, архивирование, научные расчёты и многое другое. И обработку 2D-интерфейса для передачи на тонкие клиенты CPU осилит — не сомневайтесь.
При создании анимационных фильмов, например “Город героев” от Disney, используются невероятные рендер-фермы с 55000 и более процессорами. Подобная инфраструктура создаётся, чтобы реализовать технологии параллельного рендеринга. Это позволяет значительно ускорить обработку сложной графики и/или визуализировать крупные массивы данных,
ImageMagick и OpenCL
Поддержка OpenCL появилась в ImageMagick уже достаточно давно, однако по умолчанию она не активирована ни в одном дистрибутиве. Поэтому нам придется собрать IM самостоятельно из исходников. Ничего сложного в этом нет, все необходимое уже есть в SDK, поэтому сборка не потребует установки каких-то дополнительных библиотек от nVidia или AMD. Итак, скачиваем/распаковываем архив с исходниками:
Далее устанавливаем инструменты сборки:
Запускаем конфигуратор и грепаем его вывод на предмет поддержки OpenCL:
Правильный результат работы команды должен выглядеть примерно так:
Словом «yes» должны быть отмечены либо первые три строки, либо вторые (или оба варианта сразу). Если это не так, значит, скорее всего, была неправильно инициализирована переменная C_INCLUDE_PATH. Если же словом «no» отмечена последняя строка, значит, дело в переменной LD_LIBRARY_PATH. Если все окей, запускаем процесс сборки/установки:
Проверяем, что ImageMagick действительно был скомпилирован с поддержкой OpenCL:
Теперь измерим полученный выигрыш в скорости. Разработчики ImageMagick рекомендуют использовать для этого фильтр convolve:
Некоторые другие операции, такие как ресайз, теперь тоже должны работать значительно быстрее, однако надеяться на то, что ImageMagick начнет обрабатывать графику с бешеной скоростью, не стоит. Пока еще очень малая часть пакета оптимизирована с помощью OpenCL.
Как узнать сколько ядер в процессоре
Основные сведение о компьютере
Перейдите в Свойства компьютера нажав сочетание клавиш Win+Pause&Break. В открывшемся окне напрямую не указывается количество ядер процессора. На примере установленного процессора можно узнать количество ядер непосредственно с его названия (Eight-Core Processor — восьмиядерный процессор). Бывает в названии процессора указывается количество ядер, как Х4 или Х6, в зависимости от модели процессора.
Перейдите в раздел Параметры > Система > О системе. В обновлённом интерфейсе указываются все характеристики компьютера, которые можно увидеть ранее. Непосредственно с названия устройства определяем сколько ядер в установленном в компьютере процессоре.
Приложение сведения о системе
В обновлённом поиске введите Сведения о системе и выберите Запуск от имени администратора. В главном окне открывшего приложения найдите элемент Процессор и посмотрите его значение.
На примере AMD FX(tm)-9370 Eight-Core Processor можно увидеть количество ядер: 4, логических процессоров: 8, хотя в названии процессора указывается значение: 8 физических ядер. Можно предположить, что такие значения указываются из-за своеобразной архитектуры процессора. Но как не странно при правильной оптимизации игровых проектов такой мощности более чем достаточно.
Классический диспетчер задач
Перейдите в диспетчер задач нажав сочетание клавиш Ctrl+Shift+Esc. Классический диспетчер задач в актуальной версии операционной системы можно открыть и другими способами. В открывшемся окне перейдите в закладку Производительность и посмотрите сколько Ядер и Логических процессоров доступно на установленном процессоре.
Стандартная командная строка
В поисковой строке наберите Командная строка, и выберите пункт Запуск от имени администратора. В открывшемся окне выполните команду: WMIC CPU Get DeviceID,NumberOfCores,NumberOfLogicalProcessors.
После выполнения команды пользователю будут выведены значения NumberOfCores — количество ядер и NumberOfLogicalProcessors — количество логических процессоров. Возможно, на только выпущенных процессорах некоторые данные будут неправильно отображаться, но после обновления системы всё встанет на свои места.
Диспетчер устройств в системе
Откройте диспетчер устройств выполнив команду devmgmt.msc в окне Win+R. Теперь перейдите в Процессоры, и посмотрите сколько отображается пунктов (потоков процессора).
В диспетчере устройств можно узнать количество потоков процессора, в случае линейки AMD FX(tm)-9370 количество ядер равно количеству потоков исходя из официальных характеристик устройства (не будем углубляться в подробности построения самого процессора). Здесь отображаются все другие подключённые устройства. Например, можно также узнать, какая видеокарта или процессор стоит на компьютере.
Средство конфигурации системы
О приложении конфигурации системы мы более подробно вспоминали в инструкции: Как зайти в MSConfig Windows 10. Не рекомендуется вносить изменения в конфигурацию системы без ознакомления с описанием каждого параметра.
Выполните команду msconfig в окне Win+R. Перейдите в раздел Загрузка > Дополнительные параметры и после активации пункта Число процессоров можно в ниже представленном списке посмотреть сколько ядер процессора доступно пользователю.
Не применяйте изменения после выбора любого значения, поскольку текущий пункт был создан для ограничения производительности. Вместе со средствами операционной системы можно использовать стороннее ПО. Его использовали для просмотра характеристик компьютера на Windows 10. К самым известным классическим программам относят: CPU-Z, AIDA64 и EVEREST Ultimate Edition.
А также непосредственно современный BIOS материнской платы позволяет ограничить производительность процессора, а значит и можно узнать сколько ядер в установленном процессоре. Для более надёжного и подробного ознакомления с характеристиками процессора рекомендуется посмотреть спецификации на сайте производителя.
Существует много способов узнать сколько ядер в процессоре на Windows 10. Стоит различать значения физических ядер и логических потоков. Поскольку сейчас на рынке есть множество процессоров с разными соотношениями ядрам к потокам. Интерес пользователей сейчас притянут к процессорам с увеличенному количеству потоков в два раза.
Источник
Какая из спецификаций подойдет для вашей компании?
Небольшая компания:
- Ядра. Для большинства задач подойдет сервер с 4-х ядерным процессором. Если перед вами стоят более требовательные задачи – необходимо работать с графическим дизайном, выясните, какое количество ядер необходимо для конкретного софта. Если необходимо 8 ядер, то лучше всего инвестировать деньги сразу в сервер на базе 8-ядерных процессоров.
- Память. Количество памяти, которое поддерживает сервер, тоже может играть свою роль. Материнская плата и тип операционной системы помогут определиться с необходимым объемом.
- Частота. Софт, с которым вы планируете работать, будет влиять на скорость ЦПУ. Например, постоянное использование программы Adobe CS 6 потребует процессор со скорость как минимум 2 Ггц.
Средние компании
Цена. Большинство средних компаний должны придерживаться установленного бюджета, когда дело касается покупки оборудования. Цена относительно производительности процессора может стать ключевым фактором.
Многопоточность
При выборе серверного процессора обязательно обратите внимание на технологию гиперпоточной обработки (Hyper-Threading). Эта технология обеспечивает более эффективное использование ресурсов процессора, позволяя выполнять несколько потоков на каждом ядре и повышает пропускную способность процессоров, улучшая общее быстродействие многопоточных приложений.
Корпоративные заказчики
- Ядра. При выборе ЦПУ стоит учитывать количество ядер. Необходимо ориентироваться на технические требования приложений. Например, если установлен 8-и ядерный процессор, но для приложения необходимо только 4 из них, то нет смысла переплачивать. Размер не всегда имеет значение.
- Частота. Здесь тоже стоит ориентироваться на софт – некоторым компаниям хватает 2 Ггц, а другим и 4 Ггц мало.
- TDP. Проверьте этот показатель перед покупкой процессоров. Тогда вы будете уверенным, что система охлаждения справится с выделением тепла.
Количество ядер (потоков)
Многоядерность одна из важнейших характеристик центрального процессора, но в последнее время ей уделяют слишком много внимания. Да, сейчас уже нужно постараться, чтобы найти рабочие одноядерные процессоры, они себя благополучно изжили. На замену одноядерным пришли процессоры с 2, 4 и 8 ядрами.
Если 2 и 4-ядерные вошли в обиход очень быстро, процессоры с 8 ядрами пока не так востребованы. Для использования офисных приложений и серфинга в интернете достаточно 2 ядер, 4 ядра требуются для САПР и графических приложений, которым просто необходимо работать в несколько потоков.
Что касается 8 ядер, очень мало программ поддерживают так много потоков, а значит, такой процессор для большинства приложений просто бесполезен. Обычно, чем меньше потоков, тем больше тактовая частота. Из этого следует, что если программа, адаптированная под 4 ядра, а не под 8, на 8-ядерном процессе она будет работать медленнее. Но этот процессор отличное решение для тех, кому необходимо работать сразу в большом количестве требовательных программ одновременно. Равномерно распределив нагрузку по ядрам процессора можно наслаждаться отличной производительностью во всех необходимых программ.
В большинстве процессоров количество физических ядер соответствует количеству потоков: 8 ядер – 8 потоков. Но есть процессоры, где благодаря Hyper-Threading, к примеру, 4-ядерный процессор может обрабатывать 8 потоков одновременно.
Эволюция камер видеонаблюдения
В процессе эволюции камер наблюдения применялись (и применяются) различные типы процессоров и вычислительных платформ:
- DSP-процессор (Digital Signal Processors) — процессор цифровой обработки сигналов;
- FPGA (Field-Programmable Gate Array) — программируемая логическая интегральная схема (ПЛИС);
- ISP-процессор (Image Signal Processor) — процессор обработки изображений (специализированный DSP), может быть частью SoC;
- SoC-процессор (System On Chip) — центральный процессор (ЦП) — «мозг» камеры;
- SoM (System on Module) — готовая вычислительная платформа, может включать в себя SoC. SoM включает основные компоненты встроенной системы обработки, включая процессорные ядра, интерфейсы связи и блоки памяти, на одной готовой к производству печатной плате (PCB)
Эволюция камер видеонаблюдения
Принцип работы:
- На объектив камеры попадает изображение, которое усиливается благодаря светочувствительной линзе
- Усиленный сигнал передается на матрицу
- Световой поток преобразуется в электрический сигнал в ISP-процессоре
- Аналоговая информацией переводится в цифровые данные и передается в процессор сжатия видео
- Благодаря компрессионному блоку обеспечивается форматирование изображения или видео, готовится сетевая передача
- Сжатый видеосигнал выводится при помощи центрального SoC-процессора
- Через ОЗУ и флеш-память можно хранить резервные копии, допускается буферизация и временное хранение полученных данных.
- На завершающей стадии через сетевой интерфейс производится пакетная передача данных в локальную сеть (для IP-камер) либо потоковая передача данных (для HD-SDI или EX-SDI камер), либо видеосигнал из цифрового преобразуется обратно в аналоговый (для старых аналоговых CVBS камер либо новых HD-CVI, HD-TVI и AHD камер)
Структура камеры видеонаблюдения
Переупорядочивание памяти
С таким поведением процессора сложно получить последовательное представление о памяти. Для того чтобы лучше разобраться, представим, что у нас есть две простые программы, которые запущены на двух процессорах или двух ядрах. Они делают одно и то же: записывают в память значение объявленной переменной, а затем выгружают из памяти. Как вы думаете, в каком порядке и на каких процессорах будут выполнены эти операции, и какие будут значения этих переменных? Каковы возможные наборы значений? От чего будет зависеть ответ?
Все зависит от того, на какой машине запущены эти программы. Если вы поищете информацию о том, какие гарантии дают разные архитектуры, найдете похожую таблицу. В этой таблице буква Y (yes) означает, что определенная архитектура не дает никаких гарантий по определенной теме.
Итак, давайте рассмотрим одну архитектуру. Пусть это будет x86 или AMD64, здесь не так много Y. Это означает, что она дает нам много гарантий в разных вопросах. На самом деле, x86 изначально не разрабатывался под многоядерные процессоры, поэтому когда Intel начали добавлять новые ядра, они решили сохранить ту же семантику, что раньше.
По таблице видим, что процессор с этой архитектурой может переупорядочить операции «сохранить» (store), после операций «загрузить» (load). Когда вы хотите сохранить значение, достаточно отправить сообщение. Ждать ответа не обязательно. А когда вы «загружаете» данные, вам нужно отправить запрос и ждать ответа. Для этой операции процессор может применить различные оптимизации.
Теперь посмотрим на колонку ARM. Как видите, эта архитектура дает нам меньше гарантий. Причина очень проста: ARM не нацелена на совместимость с x86. Их целевые платформы были совершенно разные. А еще ARM использует слабую модель памяти, чтобы повысить производительность.
Вернемся к примеру с двумя программами. Напомню, что результат этой программы зависит от того, на каком процессоре он работает. Удивительно, что такие простые программы могут возвращать разные значения на разных машинах.
На Intel x86 вы можете быть уверены, что переменные A и B идут строго последовательно, то есть если удалось загрузить B, то переменная A точно инициализирована. А если всё это выполняется на ARM, то у нас нет никаких гарантий, в каком порядке все это будет выполняться и как процессор проведет оптимизацию.
Что такое потоки процессора
Ещё одним аспектом, от которого выигрывают пассивные рабочие нагрузки, является большое количество потоков и возможности гиперпоточности.
Но, что это за «потоки»?
Поток в процессоре – это набор данных, который отправляется из приложения в ЦП для обработки.
Потоки не являются физическими компонентами ЦП, а скорее индикатором количества процессов, которые могут обрабатываться ядрами.
Помните про накладные расходы на переключение контекста, о которых мы говорили ранее в разделе «Ядра»?
Поскольку большая часть производительности ядра тратится на переключение между задачами, многопоточность создаёт несколько виртуальных ядер из каждого физического ядра (обычно два потока на ядро).
Это позволяет оптимизировать постановку задач в очередь и гораздо эффективнее использовать реальное ядро.
Возможность обработки нескольких потоков позволяет вашему процессору беспрепятственно переключаться между рабочими нагрузками и задачами.
Что такое гиперпоточность?
Гиперпоточность в процессорах Intel и SMT (одновременная многопоточность) в процессорах AMD – это названия процесса разделения физических ядер на виртуальные, что позволяет одному ядру более эффективно обрабатывать несколько потоков.
По сути, это способ планирования потоков, которые будут выполняться ядром без простоев. Это достигается путём подготовки потока к обработке во время выполнения другого потока.
На самом деле, Hyperthreading и SMT – это не одновременная обработка двух потоков одним физическим ядром, а эффективный способ подготовки двух потоков к оптимизированной обработке – по одному за раз.
Все ли процессоры поддерживают Hyperthreading или SMT?
Большинство процессоров имеют поддержку Hyperthreading или SMT и способны запускать два потока на ядро.
Однако есть некоторые процессоры, такие как процессоры Intel Celeron или AMD Ryzen 3 более низкого уровня, которые не поддерживают Hyperthreading или SMT и, следовательно, будут иметь только один поток, работающий на ядро.
Intel специально отключает поддержку Hyperthreading на некоторых процессорах более высокого уровня, в основном по причинам сегментации рынка, поэтому обязательно ознакомьтесь с описанием продукта для ядер и потоков, прежде чем покупать процессоры ещё более высокого уровня.
Являются ли потоки такими же быстрыми, как ядра?
Потоки не так быстры, как ядра.
Hyperthreading или SMT позволяет планировать задачи более эффективно, то есть они могут использовать части ядра, которые в настоящее время не обрабатывают задачу активно.
В лучшем случае потоки обеспечивают примерно на 50% большую производительность по сравнению с физическим ядром.
Вам нужен ЦП с поддержкой Hyperthreading или SMT?
Это зависит от вашей загруженности.
Поскольку задача всегда предпочтёт выполняться на свободном ядре, а не на свободном потоке (поскольку ядра быстрее, чем потоки), в зависимости от ваших типичных рабочих нагрузок вы можете вообще не использовать потоки ЦП.
Если вы выполняете активные рабочие нагрузки, такие как 3D-моделирование или игры, в течение обычного дня, скорее всего, вы не будете использовать все свои ядра, поскольку такие рабочие нагрузки не могут быть легко распараллелены и обычно выполняются только на одном или двух ядрах.
Тем не менее, для рабочих нагрузок, таких как рендеринг на ЦП, которые используют 100% ваших ядер, и легко используют все доступные потоки, наличие ЦП с поддержкой Hyperthreading или SMT может существенно повлиять на производительность.
Концепция магазина образов FPGA
Создание эффективно работающего FPGA-образа для определенной прикладной задачи — достаточно трудоемкая и длительная по времени задача. У хорошо слаженной команды на программирование образа может уйти до пары месяцев, а менее опытные клиенты потратят гораздо больше времени, а то и не справятся с этой задачей вообще.
Поэтому сама собой напрашивается концепция магазина образов, — по аналогии с существующими магазинами приложений для таких платформ как MacOS, Windows или Android. Разработчики могли бы передавать туда работоспособные образы, созданные ими для различных задач, а клиенты — приобретать их для загрузки на свои серверы с FPGA-ускорителями, если эти образы соответствует вычислительным задачам в их проектах.
В компании Selectel в 2018 году начата работа над созданием подобного магазина образов FPGA, которые можно было использовать на арендованных серверах Selectel с этой технологией. Тем самым, для клиентов значительно ускорился бы цикл разработки для новых проектов, а сами программисты (авторские коллективы) получили бы определенный доход от ранее проделанной работы, плюс были бы защищены от пиратского распространения образов по рынку без их согласия.
Полезная ссылка:
Заключение
Выбирая процессор камеры — нужно четко понимать место камеры в вашей системе видеонаблюдения. В каких условиях будет вестись съемка, нужна ли обработка видео для лучшего восприятия оператором для ситуационного наблюдения или будет применяться видеоаналитика, для которой любое вмешательство в изображение с матрицы — скорее вред? Нужен ли вам функционал аналитики камеры «на борту» или обработка будет идти на стороне сервера? Сколько потоков с камеры и для каких задач вы будете забирать? Умеет ли работать с такими потоками ваш софт? И как он будет управлять камерой — по API камеры (фактически с помощью драйвера в софте) или стандартными протоколами управления? И хватит ли вам функционала стандартных протоколов?
Очень много вопросов, о которых придется подумать — дать вам готовый рецепт я не готов. Но в блокнот можно записать:
На что влияет процессор IP-камеры?
- Число и характеристики потоков
- Функции обработки изображения с матрицы
- Видеоаналитика «на борту»
- Стандарты «управления» со сторонних устройств
Число и характеристики потоков
- Как правило, не менее 2 (основной и дополнительный)
- Максимальное разрешение и FPS
- Битрейт и тип (CBR / VBR)
- Кодеки и доп. сжатие
- Тип сетевого протокола (UDP, Multicast, редко TCP)
Видеоаналитика «на борту»
- антисаботажные функции (изменение фона)
- пересечение линии / вторжение в зону
- оставленные предметы
- нейросетевая (классификация «человек», «транспорт», распознавание лиц, номеров)
Стандарты «управления» со сторонних устройств
- Onvif
- PSIA
- RTSP (только видео и звук)
Пишите ваши комментарии где что я напутал, забыл или неправильно указал, вступайте в Клуб проектировщиков Telegram и подписывайтесь на мои соц. сети — продолжим общение там. Спасибо за уделенное время!
Мой online-курс для начинающих «Проектирование видеонаблюдения»