Documentos de Académico
Documentos de Profesional
Documentos de Cultura
grandes matrices de
dispositivos móviles
Orador Ing. Carlos Alejandro Pérez
¿ES POSIBLE?
REDES
SISTEMA
SOFTWARE MICROELECTRÓNICA
CONVERGENTE
Primera parte: ¿es posible? Fuente: “The Zettabyte Era: Trend and Analysis (Mayo 2015)
Incremento constante en clientes
Primera parte: ¿es posible? Fuente: “The Zettabyte Era: Trend and Analysis (Mayo 2015)
Entretenimiento demandante
No resuelve
cualquier
problema
La
computación
actual →
mucho
futuro aún
Server: IBM Power 8 (2015 - mainframe)
12 núcleos
96 hilos
96 MB caché interno
128 MB caché externo
4GHz
Power 9
20 núcleos?
160 hilos?
Nvidia Tesla GPU?
Server: IBM Power 9 (2017 - mainframe)
Power 9
• 8.000 millones de transistores (4.200)
• Hasta 24 nucleos (12 núcleos)
• 14nm FinFET (22nm SOI)
• PCIe Gen4 (PCIe Gen3)
• 120 MB shared L3 cache (96 MB
shared L3 cache)
• Multihilos de 4-vías y 8-vías
simultáneos (8-way simultaneous
multithreading) → 192 hilos
• Ancho de banda 120 or 230 GB/sec
(230 GB/sec)
Server: Intel Knights Landing (Nov-2015)
• MCDRAM (DRAM
multicanal) 5x velocidad
• 215 watts máx.
• 16 GB RAM on-chip
• 72 núcleos, 4 hilos por
núcleo = 288 hilos
Server: ¿Intel Xeon Phi v3 2017?...No
Server: MCDRAM
• Memoria hibrida.
• 16 GBytes en chip.
500 GBytes/seg.
• Puede ser
• Todo caché
• RAM del sistema
• Parte caché, parte
RAM de sistema
Client: Qualcomm Snapdragon 820 S.o.C.
(2016)
HDMI 2.0 → 4K 60 fps 64 bits
Miracast → 4K 30 fps FINFET (familia lógica)
14 nanómetros
2,2 GHz (hasta 3GHz)
4 núcleos
• 1 GBPS download
• 1 GBPS upload
LTE-U: en contra
WiFi 802.11 AD/ AF / AH
El Software convergente
Linux Ubuntu 8
Sistemas operativos convergentes
• Plataforma = CPU + sistema operativo
• Compatibilidad binaria
• 32 – 64 bits
• Diferencias entre Big Endian (Motorola) y Little-Endian
(Intel)
• Buen rendimiento en factores de forma pequeños
• Interfaz del usuario unificada en el paradigma,
adaptable en tiempo de ejecución
Desafíos en S.O.
Orden “natural” según está escrito Orden “inverso” que facilita acceso a datos
Orden en el cual entran los bytes por la red
Software convergente
• Juegos y entretenimiento
• Comunicaciones y procesamiento de señales
• Visión por computadora y aplicaciones
• Redes definidas por software
• Redes y aplicaciones vehiculares inteligentes
• Salud remota.
Sistema convergente
Windows 10
Raspberry
PC Tablet Xbox Band Surface hub Hololens
PI
Home
2 en 1 Phablet
Automation
Projection
Todo compilado
IInspectable
Código Binario
Puro (32-64 bits) IUnknown
C#/
Projection
VB
CLR
Maquina virtual
W
App
.NET , Java
Objeto
HTML
Projection
Chakra
App
Browser con marco
de ejecución
Windows
Metadata
(antes MS CLI)
¿Evolución o Crisis? 2015 Framework modular
open-source (2.6
Interfaz millones de líneas),
Paginas web sin unificada XAML corre en Windows,
servidor web Linux y Android
¿obsoleto?
Nativo, sin VM
Todo se compila
a binario Intel o
ARM
Gran
dependencia del
servicio NUGET
Nuevo Jitter 64 bits Self-hosted compiler
para instalar
Pensado para carga de trabajo en Open Source
bibliotecas
datacenters. Varios órdenes de Deja de ser blackbox para
magnitud más rápido. Vectores. pasar a tener APIs
Snapdragon 835 compatible con
binarios Win32 (Intel 32 bits) 2017
CHPE: COMPILED HYBRID
PORTABLE EXECUTION.
Al instalar una DLL de Intel
x86 32 bits, se traduce
binariamente, instrucción
por instrucción, a ARM 64
bits.
Pero la interfaz que exhibe
es 32 bits
ARM CODE + 32 bits
entry points
Browsers
Contenido de 200 MB
Servidor IIS 2.7GB
Google Chrome 1 GB
Todo es servidor, todo es cliente
Veamos ahora
PARALELISMO
Potencia de cálculo → Límite
Causas del límite
• Ruido electromagnético
• Límites en la tecnología de la litografía (10 nm)
• Arquitectura de la familia lógica difícilmente
mejorable
Workaround
• Aumentar el paralelismo
• A bordo del procesador
• Aumentando los nodos de cómputo
• Implica tener frameworks adecuados en software
PAR1: Memoria distribuida compartida
PICO-RED
PAR3: PVM, parallel virtual machines
• VM: es una máquina lógica única
• Ejecuta sobre cluster o conjunto de procesadores con memoria
distribuida
• Cluster puede ser de hardware heterogéneo , tiene una capa de
abstracción HAL
• Unidad de paralelismo es la TAREA: subproceso que se conmuta
a si mismo entre tareas de cálculo puro y tareas de
Comunicaciones
• Ejemplo: TRAVELER (Wims, B., Xu, C. Z, 1999)
• Colección de agentes Java desplegados en WAN.
• Bytecodes viajan de un nodo a otro para se ejecutados.
• Utiliza matrices distribuidas para la comunicación
• Demostró que una solución pura OO es posible en entorno
distribuído utilizando VM y código móvil.
Paralelismo de redes neuronales Nordström, 1995
Yang,
Wang, & Su, 2005
Matriz de computo móvil
• Cada nodo de cálculo es un smartphone
• Se conectan por red inalámbrica (WiFi, WAN)
• Operador celular: alguien que desplegó la red por
nosotros
• Ventaja del smartphone
• Ampliamente programable
• Ampliamente conectable
• Importante potencia de cálculo
• System on a chip
• Dispositivos de visualización y entrada integrados
Diagrama simplificado
Smartphone #1
Carrier base
station
Tablet #1 Smartphone #2
Firewall WiFi AP
Router
HTTP
Server
MNIST database
Smartphone #3
Smartphone #n
Control INTERNET
Odata SignalR
service service page
Entrenamiento en paralelo por
patrones Dahl, Mc Avinney, & Newhall, 2008
• Cada dispositivo transmite sus resultados al resto, y recibe los resultados del
3 resto y los combina con los propios (suma de los pesos sinápticos, etc.)
http://host/servicio/Productos
http://host/servicio/Rubros(1)
http://host/servicio/Productos/Modelo.ElMasCaro()
SignalR
• Proporciona respuesta real-time utilizando estándar
abierto HTTP (!)
• Utiliza hasta 4 transportes para lograrlo
• HTML 1.1 Forever Frame
• AJAX Long-polling
• HTML5 Server-sent events
• HTML 5 Websocket
• Código compacto, Agnóstico a la conexión,
Reconexión automática, Backplane con scale-out
SignalR – llamada en reverso
Clases neuralnetwork
Clases: Colecciones de objetos
Colecciones de objetos
• Matriz convencional. Un elemento=una neurona
• Lista. N neuronas, se agregan al final.
• Diccionario. N neuronas con índice b-tree
• Bolsa de objetos.
• Colección hash. N neuronas con método de
almacenamiento y acceso basado en hash (25%
menos eficiente en RAM)
Paralelismo de cálculo
• Los modernos frameworks móviles tienen amplias
facilidades para cálculo paralelo.
• Las tareas en segundo plano no son servicios o daemons
convencionales
• Deben verse como código ejecutable in-process.
• No se admiten servicios reales en segundo plano que no estén
previstos en el framework.
• Extraordinariamente difícil comunicar AppA con AppB en un
mismo dispositivo (sandboxing)
• Relativamente fácil conectar AppA y AppB a servicios fuera del
dispositivo.
Paralelismo de cálculo en el móvil
• Por ello, todo cálculo paralelo debe ejecutarse en un
solo proceso de usuario.
• El framework
• distribuirá automáticamente el cálculo en los hilos
disponibles del procesador.
• Sincronizará automáticamente el conjunto de resultados
• Pondrá en cola las tareas si éstas son más que los núcleos
disponibles del procesador y las irá ejecutando a medida
que éstos queden libres.
Paralelismo de cálculo en el móvil
• Un proceso en el hilo principal
• N subprocesos en paralelo en hilos secundarios (1 en cada
núcleo del procesador)
• El subproceso no puede comunicarse directamente al
hilo principal donde ejecuta la GUI.
• Lo hace a través de un despachador, objeto que puede
interactuar con todos los subprocesos de un proceso
Ejemplo de paralelismo de tareas
(2do. Nivel), perceptrón
Cada salida tiene
una colección de
ramas.
Por cada salida se
genera una tarea
paralela, que suma
los valores de
entrada , ejecuta la
activación y calcula
el error.
Paralelismo de tercer nivel?
ES POSIBLE, CON
COLECCIONES
CONCURRENTES
Colecciones concurrentes
• Son aquellas que pueden ser escritas
al mismo tiempo desde N
subprocesos.
• El framework gestiona
automáticamente la ejecución.
Diccionario concurrente
¿Podemos paralelizar datos, luego
tareas, luego colecciones?
• Si, pero no conviene.
• Paralelizar la colección implica que el subproceso
debería generar otro subproceso.
• La gestión de este escenario gasta más recursos que
la ganancia en performance.
• → En 1 móvil = 1 nivel de paralelismo.
Tiempo(n_dispositivos)
Medición de las colecciones en RAM
Snapdragon 400, 1 GB RAM.
Tiempos de creación de colecciones
Snapdragon 810, 3GB RAM
Programación asincrónica
• Es obligatoria en dispositivos móviles.
• No existen bases de datos on-board
• ¿Qué pasó con HTML5 local database?
• Los datos deben traerse desde servicios en la nube
• Un servidor proporciona los datos de entrenamiento y
los metadatos para construir la red neuronal en
memoria en cada móvil.
• La conexión entre el móvil y el servidor es WLAN o
WiFi
• Código es rápido, servidor es lento → asincrónica.
async Task<int> MiTarea()
{
// crea cliente
HttpClient client = new HttpClient();
// GetStringAsync retorna una Task del tipo <string>
Task<string> getStringTask =
client.GetStringAsync("http://www.misitio.com");
// ejecute codigo que NO DEPENDA del resultadp
TrabajoIndependiente1();
TrabajoIndependiente2();
TrabajoIndependiente3();
// aqui se NECESITA el resultado, el codigo debe ESPERARLO
// el control se devuelve al llamador de MiTarea()
// la primitiva await bloquea la ejecución
string cualEsMiSitio = await getStringTask;
// con el resultado, el control se devuelve y se continúa
return cualEsMiSitio.Length;
}
Recupera del servidor los datos
Código real (petición de datos al
servidor
public async Task GetTrainingInputs1(int startt2ID, int endt2ID)
{
// recuperar datos de entrenamiento, imágenes 1 a 100 inclusive
string lcUri = "http://localhost/t1?$filter=t2ID+ge+1+and+t2ID+le+100"
lcUri = System.Net.WebUtility.HtmlEncode(lcUri);
Uri serviceuri = new Uri(lcUri, UriKind.RelativeOrAbsolute);
HttpClient http = new HttpClient();
HttpResponseMessage response = http.GetAsync(serviceuri);