Nvidia framework sdk что это
Разработчики программного обеспечения пользуются основными инструментами: SDK и API. По сути, как SDK, так и API позволяют улучшить функционал приложений, не прибегая к большим усилиям.
Преимущества SDK
- Доступ к компонентам и инструкциям для разработки ПО: например, SDK для ритейла содержит все элементы, необходимые для приложений в этой отрасли (например, «Избранное», «Корзина», «Сохранить заказ», «Оформить заказ» и т. д.).
- Ускоренная и слаженная интеграция: SDK упрощают стандартные процессы и предоставляют доступ к необходимой информации.
- Сокращение цикла разработки, повышение эффективности развертывания и вывода продуктов на рынок: поскольку SDK созданы для информирования, предоставления необходимых инструментов и шаблонов, разработчики могут сфокусироваться на разработке своего продукта.
- Встроенная поддержка и экспертные знания: нет необходимости искать ответы или нанимать дополнительных экспертов в свою команду; SDK уже содержат код, написанный экспертами, и всю необходимую сопроводительную документацию.
- Контроль расходов: все перечисленное выше позволяет оставаться в рамках бюджета во время разработки и после развертывания.
Copyright
© 2022 NVIDIA Corporation and Affiliates. All rights reserved.
NVIDIA SDK Manager provides an end-to-end development environment setup solution for NVIDIA’s DRIVE, Jetson, Clara Holoscan, Rivermax, DOCA and Ethernet Switch SDKs for both host and target devices.
What’s New in SDK Manager:
- SDK Manager is now available with Docker Image based on Ubuntu 20.04.
- Added support for Jetson AGX Orin.
- Added support for NVIDIA Converged Accelerator for DOCA SDK users.
- Bug fixes and stability improvements.
Host OS | Ubuntu 16.04, 18.04 and 20.04 on x86_64 system CentOS/RHEL 7.6, 8.0 and 8.2 on x86_64 system |
Dependencies | Requirements vary depending on the deployed SDK. |
Hardware | RAM 8GB Internet Connection |
For specific DRIVE, JetPack, Clara Holoscan, Rivermax, DOCA and Ethernet Switch deployed SDKs, see product release notes.
✔ Faster than ever
Fast download and streamlined development environment setup.
✔ Packages and dependencies manager
Orchestrates SDKs, tools and driver combinations, secures incompatibilities of software versions.
✔ Supports both host machine and target devices
Installs SDKs on host machine, flashes NVIDIA HW development platforms, supports different OSes.
✔ Designed for developers
GUI and command line applications.
✔ Easy to get
A single location for multiple software development SDKs and tools.
✔ Know when there is an update
Update notifications to get the latest and greatest from NVIDIA.
SDK Manager deploys NVIDIA DRIVE, Jetson, Clara Holoscan, Rivermax, DOCA and Ethernet Switch SDKs.
2. Установка
Фреймворк для работы требует видеокарту NVIDIA c драйвером 440 (рекомендовано). CUDA устанавливать рекомендуется, однако bazel при первой же сборке скачает и будет использовать свою версию NVCC для сборки CUDA кода.
Для SDK 2020.2 на Jetson должен быть установлен JetPack 4.4.1, а для версии 2020.1: JetPack 4.3. Это необходимо для корректной кросс-компиляции на Jetson.
Весь фреймворк скачивается с официального сайта одной папкой, которую вы располагаете в удобном вам месте на рабочей машине. Например, в ~/isaac . Далее вам нужно установить зависимости на компьютере, за которым вы будете работать (далее будем называть этот компьютер рабочим компьютером) :
Данный скрипт ни на одной моей Ubuntu 18.04 не сработал сразу без ошибок. Ни в версии 2020.1, ни в новой 2020.2 . К сожалению, вам придется в ручную смотреть что не смог установить скрипт и устанавливать это в ручную. Видимо, стоит его рассматривать только как пример, а не готовый к использованию инструмент.
Установка на Jetson, он же бортовой вычислитель робота (он находится с рабочим компьютером в локальной сети), делается следующей командой:
для более поздних версий
Заметим, для версии 2020.1 и более поздних скрипты располагаются немного в другом месте:
На этом установка закончится.
Как можно заметить, на бортовой вычислитель робота (в д.с. это Jetson TX2, Nano, Xavier NX или любой x86_64 компьютер c NVIDIA GPU) исходники скачивать не нужно. Предполагается, что все ПО собирается через кросс-компиляцию и закачивается на робот по сети. Это очень удобно и настроено из коробки. Подробнее об установке можно найти в официальной документации.
Примеры использования SDK
SDK — неотъемлемая часть разработки мобильных приложений. SDK имеют множество областей применения:
- SDK для определенных языков программирования, например JSON и Java Developer Kit (JDK) для JavaScript и Java соответственно, используются для разработки программ на этих языках оптимальным и стандартизированным путем.
- SDK для аналитики от Google и других компаний предоставляют данные о пользовательских действиях, поведении и путях их перемещения по сайту или приложению.
- SDK для монетизации от Google, Facebook и других компаний упрощают интеграцию рекламы с существующими приложениями с целью получения дохода.
4. Создание своего приложения
Начнем с того, что в Isaac SDK используются такие понятия как: пакеты(packages), узлы(nodes), каналы(channels), но и такие понятия как: приложения(applications) и компоненты(components).
Так вот, одной фразой иерархию можно описать так: Пакеты включают в себя приложения, которые состоят из узлов, которые состоят из компонентов. Узлы между собой общаются с помощью каналов. При этом, стоит заметить, что компоненты универсальны по отношению к узлам. Все "полезные" вычисления происходят в компонентах. Компоненты, находящиеся в составе одного узла блокируют друг-друга, а находящиеся в разных узлах - нет.
Каждый пакет состоит из BUILD файла - c инструкциями для сборщика bazel. BUILD ссылается на один или несколько .json, в которых описывается структура и связи узлов и компонентов приложения, а также настройки компонентов. Компоненты обычно описываются в виде cpp/hpp или предварительно скомпилированных .so файлов. Кроме С++ поддерживается Python, который можно использовать для написания компонентов или вместо json файла.
В качестве примера реализуем простейшее приложение "Ping Pong", в отличие от стандартного, наше приложение будет состоять из одного компонента и для Ping и для Pong. (а почему бы и нет)
Итак, начнем. Создадим директорию нового приложения в ~/isaac/sdk/packages/myapp. В этой директории создадим файлы:
Рассмотрим структуру файла MyPingPong.hpp:
И соответствующую реализацию в MyPingPong.cpp
Теперь разберем файл myapp.app.json
name - название приложения, описываемого данным json файлом
modules - список модулей или компонентов, которые используются в приложении
graph.nodes - определение узлов, из которых будет состоять граф приложения
Каждый узел описывается его именем name, задаваемым произвольно и списком компонентов узла components.
Компоненты описываются именем name, тоже задаваемым произвольно и типом type, который должен соответствовать классу, описывающему соответствующий компонент (см. ISAAC_ALICE_REGISTER_CODELET(/* type */) в .hpp файле)
graph.edges - определение ребер графа, связывающих узлы графа между собой. Или связывающих входы (graph.eges[].source) и выходы (graph.eges[].target) компонентов приложения между собой.
graph.config["Название узла"]["Название компонента"] <. >- определение параметров каждого компонента.
Для сборки приложения, необходимо, кроме прочего, определить инструкции для сборщика bazel в файле .BUILD:
isaac_app() - определяет название, состав модулей и .json файл для запуска. По умолчанию, для имени myapp будет запускаться myapp.app.json. Но это можно определить в ручную параметром app_json_file . Более подробно о параметрах можно узнать в файле //engine/build:isaac.bzl, который используется для загрузки правил сборщика в начале BUILD файла.
isaac_cc_module() - определяет модуль или цель сборки. Пользователю необходимо указать исходные и заголовочные файлы в соответствующих srcs и hdrs параметрах, а deps позволяет подключить модули из других компонентов Isaac SDK. Заметим, что вместо srcs можно напрямую указывать предварительно скомпилированные .so файлы. В модуле можно собрать исходники сразу для нескольких компонентов, поэтому это и называется модулем.
На этом создание простейшего приложения закончено, осталось лишь его запустить:
Если просмотреть лог, то можно найти много полезной информации, например, "посмертную" статистику работы приложения:
Судя по данному логу, можно заметить, что помимо наших компонентов запустились еще несколько других. Это системные компоненты, необходимые для работы функций ядра Isaac SDK.
Кроме данных компонентов, ядром предоставляются и другие. Автоматически, по крайней мере в 2020.2, они не запускаются. Рассмотрим пару самых, на мой взгляд, необходимых:
Как работает SDK
SDK предоставляет инструменты, которые способствуют ускорению и стандартизации разработки приложений.
- Приобретите, загрузите и установите набор SDK для своей платформы (например, предварительно подготовленные фрагменты сборки, примеры и инструкции).
- Откройте и используйте любые API исредства разработки, необходимые для создания нового приложения, начиная с интегрированной среды разработки (IDE). Это пространство, в котором работает программист и установлено средство отладки.
- При разработке используйте инструкции, документацию, примеры кода и инструменты тестирования, которые обеспечат вам и вашей команде хороший старт.
По поводу NVIDIA FrameView SDK Service
Теперь про эту службу. Значит тут важно понимать следующее:
- NVIDIA FrameView SDK — это компонент, который нужен для работы самой программы NVIDIA FrameView. Или это не компонент, а собственно и есть сама программа.
- Слово Service говорит нам о том, что это служба от программы NVIDIA FrameView. Без службы соответственно работать программа не будет.
- Если вы вообще не пользуетесь данной программой — тогда думаю что ее можно просто удалить. Это не драйвера, нет, это именно ПО для отображения данных производительности поверх самой игры. Удалить можно так: зажмите Win + R, появится окошко Выполнить, вставьте команду appwiz.cpl, нажмите ОК. Откроется окно установленных программ, находим тут NVIDIA FrameView SDK, кроме этого может быть еще и просто NVIDIA FrameView. Сперва удаляем то, что без SDK. А после — уже само SDK. Так вот, нашли название ПО — нажали правой кнопкой, выбрали Удалить и следуете инструкциям на экране. Обычно нужно нажимать Далее/Next/Удалить/Uninstall. Если потом вдруг эта программа понадобиться — сможете скачать с оф сайта NVIDIA.
Ну вот ребята на этом и все. Надеюсь данная информация оказалась полезной. Удачи и добра, до новых встреч друзья!
Isaac SDK это современный фреймворк для разработки систем управления роботов, ориентированный на машинное обучение. Isaac SDK появился в начале 2019г. и уже имеет несколько релизов. Разрабатывается фреймворк компанией NVIDIA для своей встраиваемой платформы Jetson и компьютеров с GPU NVIDIA на борту. На другом железе Isaac SDK не поддерживается. Пользуясь тем, что никто еще тут про него не написал, попробую сделать это сам, раз уж имею какой-никакой опыт работы с ним.
Кроме того, совсем недавно вышла новая версия 2020.2. В которой появилось много нового. Примеры будут именно для этой версии.
Isaac SDK является аналогом ROS, и очень на него похож, однако, обладает существенными отличиями в реализации и архитектуре. Об этих отличиях чуть позже.
Get Started:
- From a terminal window, launch SDK Manager with the command: sdkmanager
4. LOGIN & SETUP
6. PoseTree
PoseTree это инструмент, упрощающий работу с преобразованием систем координат. Аналог TF из ROS.
Добавить новую систему координат можно путем определения матрицы преобразования из одной системы координат в другую. Данное преобразование можно добавить с помощью специального макроса в заголовочном файле компонента:
После этого, необходимо определить параметр ping_T_pong , например, следующим образом:
В результате, мы увидим в WebSight:
Соответственно, если необходимо получить преобразование между теми или иными с/к, достаточно просто использовать get_foo_T_bar() , где foo и bar названия систем координат.
Notice
THE INFORMATION IN THIS GUIDE AND ALL OTHER INFORMATION CONTAINED IN NVIDIA DOCUMENTATION REFERENCED IN THIS GUIDE IS PROVIDED “AS IS.” NVIDIA MAKES NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO THE INFORMATION FOR THE PRODUCT, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE. Notwithstanding any damages that customer might incur for any reason whatsoever, NVIDIA’s aggregate and cumulative liability towards customer for the product described in this guide shall be limited in accordance with the NVIDIA terms and conditions of sale for the product.
THE NVIDIA PRODUCT DESCRIBED IN THIS GUIDE IS NOT FAULT TOLERANT AND IS NOT DESIGNED, MANUFACTURED OR INTENDED FOR USE IN CONNECTION WITH THE DESIGN, CONSTRUCTION, MAINTENANCE, AND/OR OPERATION OF ANY SYSTEM WHERE THE USE OR A FAILURE OF SUCH SYSTEM COULD RESULT IN A SITUATION THAT THREATENS THE SAFETY OF HUMAN LIFE OR SEVERE PHYSICAL HARM OR PROPERTY DAMAGE (INCLUDING, FOR EXAMPLE, USE IN CONNECTION WITH ANY NUCLEAR, AVIONICS, LIFE SUPPORT OR OTHER LIFE CRITICAL APPLICATION). NVIDIA EXPRESSLY DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH HIGH RISK USES. NVIDIA SHALL NOT BE LIABLE TO CUSTOMER OR ANY THIRD PARTY, IN WHOLE OR IN PART, FOR ANY CLAIMS OR DAMAGES ARISING FROM SUCH HIGH RISK USES.
NVIDIA makes no representation or warranty that the product described in this guide will be suitable for any specified use without further testing or modification. Testing of all parameters of each product is not necessarily performed by NVIDIA. It is customer’s sole responsibility to ensure the product is suitable and fit for the application planned by customer and to do the necessary testing for the application in order to avoid a default of the application or the product. Weaknesses in customer’s product designs may affect the quality and reliability of the NVIDIA product and may result in additional or different conditions and/or requirements beyond those contained in this guide. NVIDIA does not accept any liability related to any default, damage, costs or problem which may be based on or attributable to: (i) the use of the NVIDIA product in any manner that is contrary to this guide, or (ii) customer product designs.
Other than the right for customer to use the information in this guide with the product, no other license, either expressed or implied, is hereby granted by NVIDIA under this guide. Reproduction of information in this guide is permissible only if reproduction is approved by NVIDIA in writing, is reproduced without alteration, and is accompanied by all associated conditions, limitations, and notices.
5. WebsightServer
WEB-сервер, необходимый для взаимодействия пользователя и приложения. Для тех, кто знаком с ROS, этот компонент можно назвать аналогом RViz, который объединен с RQt.
Для простого запуска Sight необходимо добавить модуль "sight" в инструкции сборщика BUILD и инструкции запуска myapp.app.json .
Изменить в BUILD:
Изменить в myapp.app.json:
Тогда, в логе запуска нашего приложения появится пару строк:
Для нашего приложения WebSight будет выглядеть так:
Но может он выглядеть гораздо более красочно:
О том, как сделать его таким, рассмотрим чуть позже. А сейчас рассмотрим его интерфейс.
Справа список узлов, раскрывая которые можно менять параметры компонентов каждого узла.
Если поменять Пинг на Пинг мод, и нажать Submit , то наш компонент ping будет выводить в консоль:
Так можно менять любые параметры, и если логика компонента предусматривает, что значение параметра может быть изменено в процессе его работы, то это будет работать. Можно сказать, аналог dynamic_reconfigure из ROS.
Слева виден список окон:
Статистика (Statistics) - показывает статистику запущенных компонентов приложения.
статистика
Граф приложения (App Graph) - показывает граф узлов приложения и связи между ними. Аналог rqt_node_graph из ROS, но более скудный по функционалу. Например, он не показывает название каналов (аналог топиков в ROS), да и меньше инструментов по фильтрации отображения. Однако, тут показывается статус выполнения каждого из узлов и расположение узлов можно менять с помощью мышки. Это удобно.
серый цвет для еще не запущенных узлов
золотой для стартующих узлов
оранжевый для узлов, выполняющихся с частотой менее 0.1 Гц или находящихся на паузе.
зеленый для узлов, выполняющихся с частотой более 0.1 Гц.
красный для остановленных узлов.
PoseTree - окно, показывающее дерево зависимости систем координат в приложении. Аналог tf_tree в ROS. Работу с системами координат рассмотрим чуть позже. Изображение ниже показано для примера.
Пример дерева с/к
Virtual Gamepad - виджет WebSight позволяющий передавать сигналы джостика, мыши и клавиатуры в Isaac SDK, например, для ручного управления роботом по сети.
Пример окна для подключенного геймпада
Для подключения джостика используется браузерный Gamepad API.
Для получения данных джостика из этого виджета, необходимо добавить в граф вашего приложения компонент isaac::navigation::VirtualGamepadBridge .
Replay Control Panel - виджет, позволяющий проигрывать ранее записанные данные каналов. Например, данные сенсоров. Аналог rosbag play из ROS.
Record Control Panel - виджет, позволяющий записывать данные публикуемые в каналы для последующего воспроизведения. Аналог rosbag record из ROS.
До сих пор, интерфейс позволяет получить доступ только к стандартному функционалу.
Однако, Sight позволяет выводить свою 2D/3D графику, строить графики изменения различных величин и интерактивные элементы.
Docker Support:
- The Docker image is designed to be executed directly from the host, without the need to open the terminal inside the docker itself. The sdkmanager executable is the entrypoint. SDK Manager CLI arguments should be used directly when running a new container:
- Example command: SDK Manager CLI with Docker: docker run -it --rm sdkmanager --help
- For more information, see SDK Manager user guide.
*SDK Manager is using open source software available for download here.
Привет ребята. Значит смотрите, служба идет от NVIDIA, думаю и так понятно, а вот работает она под процессом nvfvsdksvc_x64.exe, который запускается из этой папки:
C:\Program Files\NVIDIA Corporation\FrameViewSDK\
Ну и зачем нужна эта служба? Чтобы ответить на этот вопрос, думаю логично будет сперва определиться с тем, что такое вообще NVIDIA FrameView… а полное название этой штуки — NVIDIA GeForce FrameView.
Покопавшись в интернете, вот что я понял — NVIDIA GeForce FrameView это ребята некое ПО, позволяющее измерять частоту смену кадров, уровень энергопотребления и уровень производительности видеокарты. То есть не драйвера как бы, но утилита, которая может вам пригодиться, можете узнать частоту кадров, как понимаю это имеется ввиду FPS. Еще оказывается, что полноценно работает программа только на операционке Windows 10.
3. Сборка приложения
Isaac SDK использует систему сборки bazel и все приложения, пакеты, компоненты собираются вместе с исходниками всего SDK. При этом, многие зависимости будут скачиваться при первой сборке, поэтому первая сборка будет не быстрой.
Сборка для рабочего компьютера происходит следующей командой (для примера использовано стандартное приложение ping_pong):
Запуск приложения на рабочей машине:
Во время такого запуска, если это необходимо, происходит и сборка.
Cборка для бортового вычислителя робота удобным образом происходит с помощью специального скрипта. Этот скрипт собирает приложение на рабочем компьютере(кросс компиляция), и заливает готовое к запуску приложение по ssh на бортовой вычислитель робота. Предварительно, официальная документация рекомендует настроить доступ по ssh без пароля:
Тогда использование скрипта сборки выглядит следующим образом:
Добавка -pkg здесь не случайна. Ее необходимо добавлять к названию приложения. jetpack43 - обозначение версии платформы бортового вычислителя. Для семейства Jetson, на данный момент, используется jetpack43, в ином случае можно выбрать х86_64 . Запускаемое приложение скачивается на бортовой вычислитель в /home//deploy/bob, где bob - имя пользователя на рабочем компьютере
Для более старых версий: bob@desktop:~/isaac/$ ./engine/build/deploy.sh
Для автоматического запуска приложения на бортовом вычислителе сразу после сборки, к команде добавляется аргумент --run.
Для ручного запуска, можно выполнить на бортовом вычислителе:
Заключение
В заключение, хотелось бы выразить свое мнение относительно Isaac SDK. Isaac SDK разработан для профессионального использования и хорошо оптимизирован под обработку видео данных и машинное обучение. Отдельно замечу удобство использования CUDA кода рядом с обычным C++(упрощена передача данных CPU-GPU) и богатую библиотеку стандартных компонентов, ускоренных с помощью GPU. Однако, система сборки bazel может оказаться непривычной, особенно, если необходимо использовать сторонний код, собираемый cmake. Дополнительно, серьезным недостатком является пока еще сравнительно маленькое сообщество и форум, на котором отвечают не так быстро, как хотелось бы.
Оговорюсь, что сравнивать с ROS1 этот фреймворк не стоит. На мой взгляд, ROS1 не годится для профессионального использования. ROS2 другое дело. Сравнение было бы интересно. Вроде бы, на просторах интернета такого сравнения еще нет.
Хочу сказать спасибо моему другу и коллеге Александру, который подал мне идею написать эту статью и периодически пинал меня, чтобы я ее закончил.
Прошу поучаствовать в опросе. Было бы интересно узнать, как много людей на хабре знакомы или используют Isaac SDK.
Что такое SDK?
Аббревиатура SDK расшифровывается как software development kit. SDK, или devkit, — это набор средств для разработки ПО под определенную платформу. Он содержит компоновочные блоки, средства отладки, а зачастую фреймворк или группу библиотек кода, например набор подпрограмм для определенной операционной системы.
В стандартном SDK могут присутствовать как некоторые, так и все компоненты из списка ниже:
- Компилятор: переводит с одного языка программирования на используемый вами.
- Примеры кода: демонстрируют примеры приложений или веб-страниц.
- Библиотеки кода (фреймворк): предоставляют фрагменты кода, часто используемые программистами.
- Инструменты для тестирования и аналитики: предоставляют аналитические данные о работе продукта в тестовой и эксплуатационной средах.
- Документация: содержит инструкции для разработчиков.
- Средства отладки: помогают разработчикам обнаруживать ошибки в коде, чтобы публикуемый код работал как задумано.
5.1. Вывод своих данных в Sight
Вывод осуществляется с помощью функции show(). Для нее существует несколько реализаций, для различных типов данных и наборов аргументов:
Реализация функции show():
Тогда, в sight появится доступный к использованию канал:
После чего, отобразить график можно либо нажав ПКМ по latency, либо с помощью Add plot.
Либо, сконфигурировать изначально в myapp.app.json (добавить в config).
Функция show позволяет осуществлять и более сложный рендеринг с помощью sight::Sop. Тогда, show() будет выглядеть примерно так:
Notices
Что представляет вызов API с технической точки зрения:
- Как пользователь приложения, которому необходимо выполнить задачу, вы инициируете задачу из своего приложения, создавая запрос.
- API совершает вызов к веб-серверу, передавая запрос. API знает, куда отправлять запрос, поскольку он передается в конечную точку API, обычно — URL сервера.
- Запрос выполняет стороннее приложение или база данных, предоставляющие такой сервис.
- API в картографии обычно используются для интеграции карты на веб-странице или в мобильном приложении.
- API платежных сервисов обычно используются компаниями, занимающимися e-commerce, для повышения гибкости процесса покупки, что приводит к расширению базы потенциальных клиентов.
- API метеорологических служб могут улучшить опыт пользователей спортивных приложений, поисковых систем и т. д.
- Объединение разнородных программных приложений для создания более сильного продукта
- Сокращение цикла разработки за счет автоматизации
- Снижение нагрузки на штатные ресурсы
- Повышение узнаваемости бренда и доверия к нему
- Максимально эффективное предоставление новых сервисов конечным пользователям
Нужно ли выбирать между SDK и API?
Нет, ведь как сказано выше, SDK зачастую имеет по меньшей мере один API. Они выполняют разные функции, но могут работать и помогать вместе.
Следует иметь в виду, что с использованием API и SDK связаны некоторые сложности. Одна из них заключается в потенциальных уязвимостях. Другая сложность, относящаяся к SDK, — частота обновлений. Поэтому важно, чтобы команды DevOps держали вопрос информационной безопасности в поле зрения, а также следили за своевременным обновлением компонентов.
The NVIDIA Software Development Kit (SDK) Manager is an all-in-one tool that bundles developer software and provides an end-to-end development environment setup solution for NVIDIA SDKs.
SDK Manager provides you with:
Support for different NVIDIA hardware development platforms.
The ability to flash different operating systems.
A central location for all your software development needs.
Quick, easy, and simple setup of your development environment.
Coordination of SDKs, library and driver combinations, and any needed compatibilities or dependencies.
Notifications for software updates keep your system up-to-date with the latest releases.
Что такое API?
Аббревиатура API расшифровывается как application programming interface (интерфейс программирования приложений). API — и как отдельное решение, и в составе SDK — облегчает обмен данными между двумя платформами и позволяет сторонним разработчикам использовать функционал проприетарного ПО.
API можно рассматривать как соглашение между двумя сторонами. API не только обеспечивает возможность обмена данными, но и устанавливает его правила.
Поскольку некоторые API предоставляют интерфейс напрямую, термины API и «интерфейс» иногда взаимозаменяемы.
Чтобы внести ясность, стоит отметить, что API может состоять из двух компонентов:
- Технические спецификации и документация: информация об интеграции и эффективном использовании API.
- Интерфейс: доступ к нему осуществляется как напрямую, через ключевое слово (в случае веб-API), или косвенно, через отдельный интерфейс (в случае REST API).
NVIDIA GeForce FrameView — рассмотрим немного детальнее
Эта программа работает как для видеокарт NVIDIA, так и для видеокарт AMD. Вот только показатель энергопотребления видеокарт AMD будет не совсем точным — потому что выводится промежуточное значение мощности видеочипа и платы.. в общем не совсем понятно. Но понятно другое — показатель энергопотребления видеокарт AMD может быть не таким точным, как у видеокарт NVIDIA.
Это официальный веб-сайт, все дела, все безопасно))
У вас скачается архив. Внутри него будут две папки FrameView_x64 и FrameView_x86. Вам нужно выбрать папку, которая соответствует вашей разрядности системы.. если у вас оперативки например больше 4 гига стоит — то у вас точно 64-битная виндовс и нужно выбирать папку FrameView_x64, а в остальном случае конечно уже выбирайте папку FrameView_x86. Разрядность ПК узнать легко, если что — посмотрите в интернете, ну реально легко очень, через туже панель управления и значок в ней система, собственно уже способ и написал)) Ну а вот собственно содержимое папки с программой для 64-битной системы (для 32 бит почти все также) — вот этот файл FrameView_x64.exe, как понимаю он и запускает саму программу:
Да, все верно. Чтобы запустить программу — нужно нажать по файлу правой кнопкой мышки и выбрать пункт запуск от администратора, после чего увидите окно программы:
Здесь видим две основные настройки:
- Benchmark folder location — здесь указываем место, куда… как понимаю куда будут записываться данные о производительности. Данные бенчмарка, а бенчмарк это как раз и есть тест на производительность. Или тест, или просто функция, которая определяет уровень производительности. PS: кнопки BROWSE и OPEN FOLDER — нужно чтобы открыть текущее расположение и чтобы выбрать новое, только какая кнопка за что отвечает увы непонятно)))
- Benchmark hotkey — это функция где вы можете выбрать горячую кнопку. Зачем? Ну, видимо для того чтобы можно было кнопкой запустить отображение производительности, то есть сколько кадров в секунду. Этой кнопкой можно как вкл так и выкл.
Стоит учесть, что сама программа тоже требует немного ресурсов для работы. Но как говорят разработчики — это сведено к минимуму. А также непонятно, учитывается ли это при отображении данных или нет. Но судя по тому что пишут в интернете — эта программа отображает данные более точно.
Теперь рассмотрим некоторые значение, которые показывает программа:
Теперь рассмотрим значения энергопотребления:
- CHP (GPU Only Power) — показывает сколько в ваттах потребляет именно видеочип видеокарты. Ну или графический процессор, как больше нравится. Чем полезно? Скажу так — тем выше значение, тем чаще смотрите на температуру видеокарты, чтобы не было перегрева. Просто чем выше значением — тем больше как бы греется видеокарта.
- TGP (Total board minus USB-C) — отображает потребление графического процессора и платы, но не учитывает устройства, которые подключены по порту USB-C. В принципе все понятно кроме одного — платы, непонятно что именно имеется ввиду? плата видеокарты или материнской платы? Сперва я подумал что материнская плата, но нет — оказывается на современных видеокартах спокойно может быть USB-C — значит имеется ввиду именно плата видеокарты.
- PPW — отображает производительность на ватт. Собственно думаю и так понятно, чем выше значение тем разумеется лучше. Полезно например если вы хотите высчитать уровень производительности относительно уровня потребления энергии.
Ну а вот собственно как и отображает данные программы в игре:
Вот кстати порт USB-C на видеокарте, наверно такие порты могут присутствовать на реально современных моделях:
Кстати результаты отображения этой производительности могут быть сохранены в файле CSV, и видимой в той папке, которую можно указать после запуска программы, как понимаю это папка, которая указывается в Benchmark folder location. А файл CSV можно открыть в Экселе или PresentMon, зачем? Ну например таких файлов может быть несколько, от разных видеокарт и открыв файлы можно сравнить производительность разных видеокарт, и кстати тут может быть особенно полезным показатель PPW.
В общем программа неплохая, если ее использовать для видеокарт NVIDIA, а вот с AMD — данные могут быть уже не совсем точные, особенно это касается данных энергопотребления.
1. Архитектура
Архитектура системы управления в Isaac SDK представляет собой граф узлов (nodes) и их соединений (channels), как и в ROS. Однако, узлы не являются отдельными независимыми процессами, которые в ROS общаются посредством TCP/IP(за исключением nodelet). В Isaac SDK весь граф собирается в одно приложение, которое все сразу собирается и все сразу запускается. Передача данных по сети, при необходимости, делается отдельно. При этом, система получается априори децентрализованной.
Для тех, кто не знаком с ROS
Для тех, кто не знаком с ROS, поясню, что узлами(nodes) называются программы, которые пишутся вами, другими пользователями, или уже есть готовые. Каждая из этих программ решает одну конкретную задачу. Например, детектирование объектов на изображении делает один узел, а предварительную обработку изображения (фильтрация, ректификация и т.п.) делает другой узел. Получением видеопотока с камеры занимается третий узел и т.д.
Передача информации между этими узлами происходит с помощью каналов или топиков, информацию в которые узлы могут публиковать и на которую могут подписываться. Иными словами, используется модель Издатель-Подписчик (Publisher-Subscriber).
Программные инструменты для написания узлов и коммуникации между ними предоставляет ROS. Аналогично работает и Isaac SDK.
Для пользователя, разрабатывающего приложения, Isaac SDK предоставляет множество инструментов и готовых решений:
Isaac SDK включает в себя поддержку CUDA, TensorRT, OpenCV, Eigen, Gstreamer, различные библиотеки для выполнения вычислений на графическом ускорителе и прочее. И в процессе установки он их все скачает :)
Для ряда задач робототехники и машинного обучения уже есть готовые GEMs (high-performance algorithms), причем среди них есть и достаточно вкусные алгоритмы. Например, AprilTags и ORB дескриптор с GPU ускорением. Включены примеры для работы с моделями по детектированию объектов, людей, области проходимости и тд. Есть инструменты для планирования маршрутов и навигации роботов на 2d карте для колесных и шагающих роботов.
В дополнение к Isaac SDK, поставляется ПО IsaacSim, которое позволяет использовать симуляторы для роботов. Поддерживаются хорошо известный Unity, и новинка от NVIDIA - Omniverse IsaacSim. Мне не приходилось, пока что, с ними работать, поэтому в данном руководстве работа с симуляторами рассматриваться не будет.
Previous | Next
Содержание
Trademarks
NVIDIA, the NVIDIA logo, Bluefield-2, CLARA, NVIDIA CLARA AGX SDK, cuBLAS, CUDA, CUDA-GDB, CUDA-MEMCHECK, cuDNN, cuFFT, cuSPARSE, DIGITS, DGX, DGX-1, DGX Station, NVIDIA DOCA SDK, NVIDIA DRIVE, NVIDIA DRIVE AGX, NVIDIA DRIVE Software, NVIDIA DRIVE OS, NVIDIA Developer Zone (aka "DevZone"), NVIDIA DOCA SDK, NVIDIA Ethernet Switch, NVIDIA Ethernet Switch SDK, GRID, Jetson, NVIDIA Jetson Nano, NVIDIA Jetson AGX Xavier, NVIDIA Jetson TX2, NVIDIA Jetson TX2i, NVIDIA Jetson TX1, NVIDIA Jetson TK1, Kepler, NGX, NVIDIA GPU Cloud, Maxwell, Multimedia API, NCCL, NVIDIA Nsight Compute, NVIDIA Nsight Eclipse Edition, NVIDIA Nsight Graphics, NVIDIA Nsight Systems, NVLink, nvprof, Pascal, NVIDIA Rivermax SDK, NVIDIA SDK Manager, Tegra, TensorRT, Tesla, Visual Profiler, VisionWorks and Volta are trademarks and/or registered trademarks of NVIDIA Corporation in the United States and other countries. Other company and product names may be trademarks of the respective companies with which they are associated.
Читайте также: