Kria KV260 vs Jetson Orin Nano

108 views
Skip to first unread message

gerardo gimenez

unread,
Mar 10, 2025, 6:23:04 PM3/10/25
to embeb...@googlegroups.com
Hola,
Alguien tiene alguna opinión formada sobre què es mejor, si una acelerador por hardware o el uso de GPUs para correr modelos de visiòn computacional.

Por los dos estudios que encontrè, me convence mucho mas la Kria KV260. Pero no parece ser la favorita en las comunidades. Alguien tiene experiencia en esta placa.


Tampoco me queda claro què es  "Zynq® UltraScale+™" . 

Evidentemente es mucho mas sencillo trabajar con GPUs,  no se necesita mucho conocimiento de hardware. Me imagino que de ahì el exito de la Jetson Nano.


Osea, la pregunta serìa si vale la pena el trabajo extra que implica trabajar con SOMs como Kria.

Bueno, si alguien ya recorrió este camino y quiere compartir las aventuras, o desventuras, se los agradecerìa.

Saludos

Giménez Gerardo Daniel.
.

david rene comba lareu

unread,
Mar 10, 2025, 6:45:07 PM3/10/25
to embeb...@googlegroups.com
Hola,

yo tengo experiencia en el uso de IA en sistemas embebidos (en este momento estoy intentado hacer funcionar una integracion de webgpu para esto en android, e integrado modelos como whisper, u2net, gfpgan y upscalers en java / c++ para mobile)

no se a que le llamas modelos de vision computacional, por que el rango es muy amplio, desde YOLO lo mas simple y facil de correr (por que corre relativamente bien en todos lados), a modelos de deteccion de profundidad que ya es mucho mas complicado.

En hardware + ia, el problemas mas grave, es el tema de drivers. fijate que la plataforma de aceleracion (la NPU) este soportada por ONNX, llama.cpp o ggml. si no lo soporta, tu segunda opcion, es que tengas vulkan 1.1+ y reza que funcione (aca te pueden aparecer 800 problemas tanto en arm como en x86 imposibles de arreglar, por que tienen que ver con el driver del silicon).

si pensas usar ONNX, para hacer por cpu, fijate que lo soporte con aceleración XNNPack o openvino de intel, por que sino, dependiendo el modelo que uses, te va a ser inusable por lo lento

Yo no iria por al amd, por una cuestion de soporte y valor a largo plazo, excepto existan características muy especificas de consumo electrico, espacio, conexion de las camaras (por que necesitarias conectar y procesar en el mismo dispositivo 8 camaras al mismo tiempo? 

la gran ventaja de nvidia, es el soporte de cuda, sabes que funciona con todo, que hasta podes usar transformers. Si vas a usar otra cosa que no sea nvidia, busca lo mas barato (hasta las arm sbc, tipo rpi, allwinner etc..) que tengan relativamente buen soporte de vulkan por gpu y usa webgpu, en sus diferentes sabores. podes compilar dawn o wgpu nativo y linkearlo con onnx / transformers o compilar chromium headless y correr transformers.js / onnxruntime web directamente (esto ultimo yo estoy en el proceso de hacerlo por que parece ser la forma mas costo efectiva de hacerlo)

si el consumo y el tamanio no es problema, no descartes usar una notebook, una mini itx con una grafica nvidia aun vieja que soporte cuda.

Cualquier duda particular, pregunte nomas.

--
-- Recibiste este mensaje porque estás suscripto al Grupo Google Embebidos32. Para postear en este grupo, escribe un email a embeb...@googlegroups.com. Para des-suscribirte, envía un email a embebidos32...@googlegroups.com. Para más opciones, visita el sitio del grupo en https://groups.google.com/d/forum/embebidos32?hl=es
---
Has recibido este mensaje porque estás suscrito al grupo "Embebidos32" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a embebidos32...@googlegroups.com.
Para ver este debate, visita https://groups.google.com/d/msgid/embebidos32/CA%2BdLYhtv2D6Oi%3DpY1VZtcUYGtLLRdFjCGdcpZg8_m9qq%3DErewQ%40mail.gmail.com.

david rene comba lareu

unread,
Mar 10, 2025, 6:57:07 PM3/10/25
to embeb...@googlegroups.com
Ah y me olvidaba, no importa el modelo que uses, en sistemas embebidos vas a tener que quantizar. por espacio de memoria (el tamanio del modelo se carga en ram por que las gpu's de todas las sbc no tiene memoria propia).

ggml tiene algo tipo shards que lo quantiza muy bien, pero otra vez, el soporte de vulkan esta muy lejos de ser bueno, no se testea nada por fuera de lo mainstream.

usualmente se usa onnx, que deberias intentar quantizar a int, pero eso depende la estructura del modelo (algunos no se pueden directamente). si no podes, quantiza a uint aunque sea, ahi vas a ahorrar minimo 50% del espacio, pero fijate como procesa despues, algunos tiene mucha degradacion para quantizar.

y lo ultimo, si no usas transformers, vas a tener que escribir tu propia integracion, pre y post procesado de la data. eso no es tan facil como parece, dependiendo el modelo que uses (cosas como u2net, yolo, usualmente solo piden pixeles en RGB int format, pero tene cuidado del orden de los valores en el pre y el post, por que si no te anda, vas a pensar que es el modelo y en realidad sos vos malienterpretando la data)

Saludos.

Pedro Martos

unread,
Mar 10, 2025, 8:34:28 PM3/10/25
to embeb...@googlegroups.com
Hola,
Trabaje con Jetson TX2 y Kria KV260. Zynq ultrascale+ es la familia de FPGA que usa la KV260, basicamente es la suma de un bloque de logica programable (PL) y un bloque de computo con un procesador ARM cortex A de 64bits de 4 nucleos  y sus perifericos asociados + 2 procesadores ARM cortex R de 32bits + 1 GPU (PS)

Cual usar depende de tus requrimientos de performance vs el tiempo que podes dedicarle al desarrollo (y tus conocimientos en ambas plataformas), Las cosas salen mas facil y rapido con Jetson, pero podes obtener mejor rendimiento con KV260.. En Jetson todo el procesamiento es por software (ya sea en la GPU o en la CPU) y tenes que saber optimizar muy bien las transferencias de datos. En KV260 podes dividir y que parte del procesamiento se haga en hardware y el software reciba una imagen ya preprocesada, pero requiere que desarrolles tu propio hardware para procesar la imagen de la camara antes de pasarla al software.

Tambien depende de que software vayas a usar para el desarrollo. Si vas a hacer las cosas en C++, vale la pena usar kv260, si vas a hacer las cosas en python anda directamente por la jetson.

cordialmente, Pedro
.

--
-- Recibiste este mensaje porque estás suscripto al Grupo Google Embebidos32. Para postear en este grupo, escribe un email a embeb...@googlegroups.com. Para des-suscribirte, envía un email a embebidos32...@googlegroups.com. Para más opciones, visita el sitio del grupo en https://groups.google.com/d/forum/embebidos32?hl=es
---
Has recibido este mensaje porque estás suscrito al grupo "Embebidos32" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a embebidos32...@googlegroups.com.
Para ver este debate, visita https://groups.google.com/d/msgid/embebidos32/CA%2BdLYhtv2D6Oi%3DpY1VZtcUYGtLLRdFjCGdcpZg8_m9qq%3DErewQ%40mail.gmail.com.


--

Mariano Volker

unread,
Mar 11, 2025, 2:43:23 AM3/11/25
to embeb...@googlegroups.com
Hola, buenas noches.
Aprovecho que veo pasar este tema de esta placa.

¿Alguien pudo lograr la integración siguiente:
Entre Laird EZURIO IF573 con una NVIDIA Jetson Orin Nano y con Ubuntu 22.04 como SO ?

no puedo encontrar el driver que funcione. Hay una para cargarlo como un módulo dinámico .ko

gracias y saludos.





--
Ing. Mariano Volker
15-5415-4702

Pedro Martos

unread,
Mar 11, 2025, 9:51:07 AM3/11/25
to embeb...@googlegroups.com
Hola,
Aparentemente hay un tutorial para integrarla (https://lairdcp.github.io/guides/if573-tutorials/1.0/IF573_Jetson_Orin_Nano_Integration.html). No funcionan esas instrucciones?

cordialmente, Pedro

Mariano Volker

unread,
Mar 11, 2025, 11:28:36 AM3/11/25
to embeb...@googlegroups.com, eduard...@grupocgm.com, mariano...@grupocgm.com
Hola, buenos días.

Gracias Pedro por contestar, te comento los siguientes puntos que no me permiten seguir esas instrucciones:

  1. No llego a completar las dependencias totales que se indican en las instrucciones debido a que estamos usando ubuntu 22.04 con una versión más nueva del kernel.
  2. Además, sobre la imagen que se ejecuta en esa placa, instalé varios device drivers para otros dispositivos y sería inviable generar una imagen con una versión especifica de un kernel que soporte todos estos dispositivos a la vez.
  3. Necesitaría una versión del device driver de la placa if573 para la nvivia que mencioné y poder recompilarlo para la versión del kernel que estoy utilizando en esa placa, con modulos dkms, como sucede con otros dispositivos y otros kernels, por ejemplo, uno que estoy utilizando ahora "https://github.com/aircrack-ng/rtl8812au.git" para el dongle usb wifi "TP-Link 802.11ac WLAN Adapter", que no hay una versión oficial del device driver desde ubuntu.
  4. Por el momento estoy siguiendo esta posibilidad: 
    1. El módulo Laird EZURIO IF573 utiliza un chipset Cypress CYW4373, que es compatible con los controladores brcmfmac (Broadcom FullMAC) en Linux. Tengo que probarlo con -> "sudo apt install firmware-brcm80211" para empezar.

Veremos que sucede!
Si alguien tiene algún dato extra, se los voy a agradecer.
Saludos.


De: embeb...@googlegroups.com <embeb...@googlegroups.com> en nombre de Pedro Martos <pima...@gmail.com>
Enviado: martes, 11 de marzo de 2025 10:50
Para: embeb...@googlegroups.com <embeb...@googlegroups.com>
Asunto: Re: [embeb32] Kria KV260 vs Jetson Orin Nano
 

Pedro Martos

unread,
Mar 11, 2025, 2:12:57 PM3/11/25
to embeb...@googlegroups.com
Hola,
No instale especificamente ese dispositivo, pero leyendo el tutorial mas en detalle, en un punto bajas binarios provistos por nvidia. Esos binarios seguramente estan compilados contra una version especifica del kernel y una glibc especifica, por eso al principio te piden que la maquina de desarrollo tengan una version especifica de ubuntu, que uses una toolchain especifica y que compiles contra una version especifica del kernel. No hacer eso puede resultar en que no puedas generar la imagen para bootear la jetson nano con soporte para la IF573. 
Es la ca**da de usar modulos binarios provistos por el fabricante sin posiblidad de recompilarlos, te ata una version especifica de kernel y nada asegura que el driver generado para ese kernel pueda utilizarse con un kernel posterior. 

El unico escenario que veo viable es seguir el tutorial, obtener una imagen con soporte para la IF573 y a partir de ahi ver si se puede generar los drivers de los otros dispositivos utilizando la misma version de kernel y toolchain del tutorial

cordialmente, Pedro

david rene comba lareu

unread,
Mar 11, 2025, 2:30:00 PM3/11/25
to embeb...@googlegroups.com
Como dice pedro, no intentaria otra version de ubuntu y combinacion de binarios/libs que no sea la que propone el fabricante, pero ponele que por alguna razon necesites hacerlo y el problema es glibc, podes probar de integrar musl como reemplazo de glibc


Mariano Volker

unread,
Mar 11, 2025, 5:25:56 PM3/11/25
to embeb...@googlegroups.com
Gracias por las respuestas a ambos.

Veremos por donde puedo seguir.

Por el momento necesito seguir con esta versión de ubuntu por, como mencioné antes, no es el único device que utilizo.

Con respecto al tutorial, menciona una versión específica, tanto de la toolchain como la version del kernel, por sus dependencias del sdkmanager, del equipo de desarrollo para generar una imagen completa, lo cual no es viable para el proyecto que estamos encarando.

Voy a seguir y cuando tenga algo más en concreto lo comparto con la comunidad.

Gracias y Saludos.





De: embeb...@googlegroups.com <embeb...@googlegroups.com> en nombre de david rene comba lareu <shadow.o...@gmail.com>
Enviado: martes, 11 de marzo de 2025 15:29
Reply all
Reply to author
Forward
0 new messages