DekaBank quería una mejor gestión de riesgos, precios más precisos y respaldar el negocio de derivados en expansión del banco, todo sin aumentar los costes informáticos. Fue entonces cuando recurrieron a la diferenciación automática (AD) y, en particular, a la diferenciación automática adjunta (AAD). Después de comparar tres herramientas, DekaBank eligió la solución AD de NAG, NAG® DCO/C++.

DCO/C++

Herramienta de software AD para calcular sensibilidades de códigos en C++

  • Incorpora más de 15 años-persona de I+D, muchos de los cuales han requerido investigación original.
  • Es una herramienta de sobrecarga de operadores con una API ingeniosa: la herramienta es fácil de aprender, fácil de usar, se puede aplicar rápidamente a una base de código y se integra fácilmente con entornos de compilación y prueba.
  • Se pueden calcular derivados de orden arbitrario de cualquier código, exactos con la precisión de la máquina: la herramienta puede responder a todas sus preguntas relacionadas con la sensibilidad
  • Los bancos de nivel 1 y 2 lo han aplicado a sus principales bibliotecas de precios y riesgos y lo utilizan en producción: la herramienta ha sido probada en producción, a escala, en aplicaciones críticas para el negocio.
  • Tanto las pruebas de los clientes como las internas muestran que DCO/C++ ofrece el mejor rendimiento de su clase, gracias a un motor de plantillas avanzado y estructuras de datos internas altamente optimizadas.
  • El uso de la memoria de referencia es bajo y la interfaz intuitiva de puntos de control permite controlar y restringir aún más el uso de la memoria de forma casi arbitraria: el éxito de AD adjunto radica en equilibrar el uso de la memoria y el cálculo, y dco/c++ le da al usuario el control total de una manera muy natural.
  • La interfaz de puntos de control permite especificar adjuntos escritos a mano para cualquier parte del código, permite interactuar con GPU y mucho más: a medida que los usuarios aprenden más sobre AD, dco/c++ les permite implementar todos los trucos que la gente ha desarrollado para manejar patrones de código particular.
  • Admite adjuntos paralelos: en las arquitecturas modernas, explotar el paralelismo de manera efectiva es crucial, y dco/c++ también permite que el paralelismo se transfiera al código adjunto.
Funciones clave de DCO/C++
  • Devoluciones de llamada de cinta definidas por el usuario (adjuntos externos)
  • Interfaz elegante y orientada a la productividad
  • Cálculo muy rápido con plantillas de expresión y cinta altamente optimizada
  • Control total sobre el uso de la memoria
  • Admite paralelismo y GPU (en combinación con dco/map)
  • Modos vectoriales tangentes y adjuntos
  • Análisis de actividad
  • Detección de patrón de dispersión
  • Compresión de cinta
  • Manipulación directa de cintas
  • Soporte MPI adjunto

Estas características permiten la manipulación avanzada de DAG y permiten a los usuarios crear implementaciones adjuntas altamente eficientes