13 votos

¿Cómo se implementan hoy en día los sistemas HFT en FPGA?

He leído sobre diferentes implementaciones de sistemas HFT en FPGAs.

Proveedores como Cisco afirman haber conseguido los mismos resultados con NIC de alto rendimiento ( http://www.cisco.com/c/dam/en/us/products/collateral/switches/nexus-3000-series-switches/white_paper_c11-716030.pdf ).

Mi pregunta es, ¿qué parte de los sistemas HFT se implementan mayoritariamente en FPGAs hoy en día? ¿Siguen siendo muy populares las FPGAs? ¿Sólo se implementa el gestor de alimentación en las FPGAs? Porque algunos de estos sistemas descritos anteriormente sólo tienen un gestor de alimentación implementado en la FPGA, porque la estrategia cambia demasiado, o es demasiado difícil de implementar en FPGAs. Otros afirman que también han implementado estrategias de trading en FPGAs o usando NICs de alto rendimiento en lugar de FPGAs para construir sistemas HFT. He leído sobre diferentes enfoques, pero me resulta difícil comparar, ya que la mayoría de los resultados se prueban en diferentes conjuntos de entrada.

0 votos

Hay más usos de las FPGA que los que mencionas. Una tarjeta FPGA a menudo se sitúa donde lo hace la NIC en un sistema de sólo CPU. En algunos casos la FPGA es casi autónoma, recibiendo datos de mercado, calculando los teos de una estrategia, disparando órdenes y cubriendo las ejecuciones. En el otro extremo de la escala, funcionan como una NIC inteligente, extrayendo los datos brutos del mercado y el tráfico de órdenes y alimentando una aplicación que se ejecuta en el servidor con sólo los datos que necesita. Una FPGA o NIC tiene una latencia de transcepción a la red similar a la que tiene sobre el bus PCIE, pero dos veces más para todo lo que va a la aplicación.

13voto

Chethan S. Puntos 2210

He aquí una forma de pensarlo: imagina que puedes hacer algo en un ASIC (es decir, directamente en el hardware). Sin embargo, el proceso de fabricación es en sí mismo caro, y obtienes un diseño que no puedes cambiar después. Los ASIC tienen sentido para tareas predefinidas, como la minería de Bitcoin, algoritmos de procesamiento de datos bien conocidos, etc.

Por otro lado, tenemos las CPUs ordinarias (así como las CPUs con coprocesador y las GPUs) que son de propósito general, pero procesan un pequeño (en términos de instrucciones concurrentes) conjunto de instrucciones a una velocidad muy alta.

Las FPGAs son el punto medio. Son "emuladores de hardware" y, como tales, pueden considerarse 10 veces más lentos que el hardware real, pero siguen siendo mucho más eficaces para concurrente operaciones que las CPU, siempre que se pueda utilizar el troquel para repartir la lógica en consecuencia.

Algunos usos de las FPGAs son:

  • Transcodificación de vídeo (por ejemplo, decodificación de vídeo HD en los televisores), así como diversas tarjetas de adquisición de datos
  • Corregido el análisis de estructuras de datos (análisis de Regex)
  • Simulación de sistemas discretos (por ejemplo, simular el resultado de un juego de cartas)
  • Muchas aplicaciones "propiamente integradas" como, por ejemplo, en la industria aeroespacial o la investigación científica

El problema de las FPGAs para usos cuánticos es que no son tan buenas para los cálculos de punto flotante, particularmente porque las CPUs ordinarias ya están optimizadas para eso con cosas como SIMD. Sin embargo, para cualquier cosa de punto fijo o estructuras de datos de tamaño fijo, el diseño de la FPGA permite configurar el dispositivo para que haga mucho procesamiento al mismo tiempo.

Algunas de las cosas que se hacen en el comercio son el uso de FPGA para los gestores de alimentación (analizando directamente el flujo de la red), así como la construcción de ciertas partes de la estructura de comercio (por ejemplo, los libros de órdenes) en el hardware con el fin de ser capaz de hacer frente a la estructura de datos que cambia rápidamente sin cargar la CPU.

Las FPGAs pretenden principalmente responder a la preocupación de procesar rápidamente los datos sin pagar los costes de propagación. Esto contrasta especialmente con dispositivos como la GPGPU (o cualquier tarjeta con PCI, como Xeon Phi), que pagan penalizaciones de rendimiento por llevar los datos al/del dispositivo. Dicho esto, las opciones de DMA también están mejorando en este sentido.

5voto

Piotr Kruczek Puntos 99

En realidad, las FPGA no son más que los mismos bloques lógicos repetidos una y otra vez en el silicio, con interruptores configurables para conectar los bloques lógicos entre sí. Esto hace que las FPGA sean muy buenas -y rápidas- a la hora de tratar problemas repetitivos que pueden describirse en un circuito de hardware que no cambia durante su funcionamiento. Y se pueden tener literalmente miles o decenas de miles de estos circuitos, todos trabajando en paralelo al mismo tiempo, en una sola FPGA.

Por otro lado, las CPU se basan en la ALU, que carga las instrucciones, carga los datos, opera con los datos, tal vez almacena los resultados, y luego lo vuelve a hacer. Por tanto, las CPU son muy buenas -y rápidas- a la hora de enfrentarse a problemas que cambian continuamente -tanto en tamaño como en alcance- y de cambiar entre diferentes tareas. Las CPUs o núcleos de hoy en día tienen entre decenas y cientos de ALU con canalizaciones paralelas para los datos y las instrucciones, lo que las hace muy rápidas en problemas complejos en los que se puede trabajar en paralelo.

Estos diseños hacen que las FPGA sean más rápidas en problemas más sencillos que pueden atacarse con una amplia arquitectura paralela, como la condensación de múltiples flujos de datos en menos de un microsegundo, cable a cable, o la activación de una compra, venta o cancelación precalculada en un precio que coincida con un patrón concreto. Las CPU son más rápidas en problemas más complejos que requieren menos paralelismo, como el cálculo de la cesta de compras, ventas y cancelaciones necesarias para mantener una cartera ajustada al riesgo o la integración de una serie de fuentes de precios y noticias de distinta antigüedad y calidad en indicadores de negociación utilizados por los operadores y la dirección para decidir qué ajustes realizarán en el sistema de negociación.

El uso de FPGAs en HFT depende mucho de la arquitectura de cada tienda. La mejor manera de utilizarlas es realizando tareas simples, repetitivas y amplias, y realizándolas rápidamente. Las CPU son una navaja suiza que puede hacer casi todo, especialmente cuando los requisitos son cambiantes y las dimensiones del problema no se entienden completamente al principio.

0 votos

¿Cuáles son entonces las ventajas de las FPGAs sobre las GPUs?

0 votos

@Permian una GPU es muy similar a una CPU, pero es mejor que una CPU en ciertos tipos de problemas, especialmente los que son de cálculo intensivo o implican matemáticas. Mientras que una GPU puede tener miles de núcleos, una FPGA puede tener decenas de miles o cientos de miles de hilos independientes ejecutándose simultáneamente, aunque cada hilo de la FPGA está ejecutando un código mucho más simple que una CPU o una GPU.

2voto

Timothy Carter Puntos 7079

Su pregunta no tiene mucho sentido. Es como preguntar qué parte del cableado de la infraestructura comercial utiliza fibra óptica y qué parte utiliza cobre. La mejor respuesta que podemos darte es que una FPGA no es una solución mágica.

Proveedores como Cisco afirman que han logrado los mismos resultados con NIC de alto rendimiento ( http://www.cisco.com/c/dam/en/us/products/collateral/switches/nexus-3000-series-switches/white_paper_c11-716030.pdf ).

Esta es una interpretación incorrecta del libro blanco de Cisco. Hay muy poco solapamiento entre los casos de uso del tejido de conmutación y los de una FPGA.

¿qué parte de los sistemas de HFT se implementan mayoritariamente en FPGAs hoy en día?

En la actualidad, las FPGA se utilizan a menudo en nuestras impresoras y descodificadores de televisión.

1voto

Rorick Puntos 3582

Quiero destacar el bloque de "procesamiento digital de señales" (DSP) con ALU. Las FPGAs actuales tienen cientos de bloques DSP programables; las más grandes tienen miles.

Ahora, de repente, tienes miles de pequeños procesadores a tu disposición, todos capaces de realizar cálculos en paralelo. Esto supera ampliamente el paralelismo proporcionado por los Xeon Phi o las GPU. De hecho, si realizas una modelización del precio de las opciones o una modelización del riesgo estocástico en una FPGA, puedes multiplicar por más de 100 el rendimiento en comparación con las últimas GPU y aún más en comparación con las últimas CPU.

Junto con los bloques DSP, el otro factor importante en esta ganancia de rendimiento es la memoria caché. La FPGA lleva incorporada una memoria RAM distribuida que es extremadamente rápida y permite alcanzar un ancho de banda de 100TB/s a nivel de ruta de datos.

El uso de las FPGAs actuales para las estrategias de algo proporciona un recurso de computación grande y masivamente concurrente que es capaz de dar un aumento de 100 a 1000 veces en el rendimiento en comparación con las GPUs o CPUs. La principal advertencia es que hay que dominar la escritura en Verilog o VHDL :)

Sanjay Shah DIRECTOR DE TECNOLOGÍA Nanospeed

1voto

Ian Ludr Puntos 194

Una serie de potentes procesadores multinúcleo están empezando a abrirse paso en el espacio de la aceleración de hardware que antes era completamente "propiedad" de las FPGA. Compañías como Tilera, Adapteva y Coherent Logix ofrecen estos procesadores en Estados Unidos, y Enyx, de Francia, también se está abriendo camino.

La verdadera medida de la eficacia de estos procesadores masivamente paralelos reside en la madurez de sus herramientas de software. Ahí es donde el futuro usuario debe centrar su atención. Nadie quiere programar o depurar decenas o cientos de núcleos utilizando técnicas manuales. Por supuesto, no hace falta decir que el ancho de banda de E/S es igual de importante.

En mi experiencia personal en este espacio estoy viendo la adopción por parte de los clientes de los procesadores Coherent Logix como coprocesadores o aceleradores de hardware para la aceleración de algo en lenguaje C. Al disfrutar del rápido ciclo de diseño de un entorno basado en C, los programadores de algo pueden ajustar el código a su gusto y no preocuparse por la costosa y larga codificación HDL para las FPGA.

La partición óptima es hacer que las FPGAs hagan lo que mejor saben hacer - operaciones repetitivas fijas - y que los procesadores multinúcleo hagan lo que mejor saben hacer: acelerar la productividad y la velocidad de ejecución de los desarrolladores de algo.

John Irza, Director de Desarrollo Comercial, Coherent Logix, Inc.

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X