Mathematica 8 obtiene un impulso de rendimiento, integración con Wolfram Alpha

Hola y mil gracias por leerme. Te escribe Simón Sánchez y en esta ocasión te voy a contar sobre Mathematica 8 obtiene un impulso de rendimiento, integración con Wolfram Alpha

La octava versión de Mathematica fue lanzada el mes pasado, la última en la plataforma de software de computación de Wolfram Research de 22 años. Aunque la herramienta es relativamente nueva en el mundo de la informática de alto rendimiento, en los últimos años se han agregado una serie de características nuevas que están dirigidas directamente a la audiencia del rendimiento. Mathematica 8 se basa en estas capacidades y agrega otras nuevas que lo convierten en un serio competidor para las aplicaciones HPC.

El enfoque en el rendimiento comenzó en serio con Mathematica 4 en 1999. A partir de esa versión, Wolfram Research comenzó a incorporar una variedad de características y capacidades que mejoraron la ejecución del tiempo de ejecución, incluida la optimización de algoritmos, soporte para vincular bibliotecas externas de C y Fortran y agregar capacidades de compilación de código. En 2008, con Mathematica 7, se agregó soporte integrado para paralelismo multinúcleo y clústeres de cómputo.

Mathematics 8 agrega una serie de características nuevas que deberían aumentar aún más el rendimiento. Quizás el más importante es la capacidad de generar, compilar y vincular código C. La nueva funcionalidad permite que el código de Mathematica se traduzca automáticamente a código fuente C. La fuente se puede manejar luego a través de un compilador estándar (que requiere un compilador C nativo para Windows o Mac) y vinculado a un ejecutable de Mathematica para producción.

La idea aquí es aprovechar la velocidad del código compilado en C para aumentar el rendimiento de partes críticas del programa matemático. Anteriormente, Mathematica solo admitía la compilación en un código de bytes de máquina virtual similar a Java, que aunque más rápido que la ejecución interpretada, tendía a ser mucho más lento que el código C compilado. En un ejemplo, una aplicación de renderizado que usa Vanilla Mathematica proporcionó solo un cuadro cada 10-15 segundos, mientras que el código compilado en C era capaz de alcanzar de dos a cuatro cuadros por segundo. Se esperan aceleraciones comparables de códigos similares de uso intensivo de cómputo. Todo esto se puede lograr sin que el programador tenga que escribir una sola línea de C.

Mejor aún, se puede aplicar una opción de paralelización a una función compilada, que Mathematica usará para crear una implementación multiproceso. Esto puede acelerar aún más la ejecución, asumiendo, por supuesto, que la CPU de destino es multinúcleo.

El código C compilado se puede recopilar en bibliotecas de enlaces dinámicos (DLL), que se pueden absorber en la aplicación o compartir con otros programas de Mathematica. La capacidad de vincular archivos DLL también significa que las bibliotecas C y C ++ desarrolladas externamente se pueden incorporar a Mathematica, abriendo la puerta a muchos más paquetes de rendimiento optimizado. Antes de eso, hablar con código C externo involucraba la interfaz MathLink, que estaba cargada con la sobrecarga de comunicación entre programas. La capacidad de acceder directamente a las rutinas de DLL hace que llamar a código externo sea mucho más eficiente y fácil.

Para los entusiastas de GPGPU, Mathematica 8 ofrece soporte para CUDA y OpenCL. Desafortunadamente, esta función no tiene la automatización perfecta que ofrece la capacidad de generación de código C. Más bien, el algoritmo objetivo debe primero desarrollarse en CUDA u OpenCL y luego insertarse en el programa. Básicamente, Mathematica automatiza algunas de las funciones de limpieza, como descargar código y datos a la tarjeta GPU y cargar los resultados al host. El soporte de GPGPU se puede escalar para usar todas las GPU en un sistema o, usando el complemento gridMathematica, en un clúster.

Si bien no es posible transformar automáticamente una función arbitraria en una versión de GPU, Mathematica 8 incluye un par de docenas de funciones integradas que ya están optimizadas para GPU habilitadas para CUDA (en otras palabras, las de NVIDIA). Las funciones se distribuyen entre álgebra lineal, simulación financiera y procesamiento de imágenes. La gente de Wolfram Research sin duda agregará rutinas de GPU más integradas en versiones futuras, prometiendo un enfoque más ágil para el soporte de GPU también.

Otra categoría de mejoras de rendimiento está habilitada por la aceleración de una serie de algoritmos centrales. Estos incluyen solucionadores optimizados para álgebra lineal entera, funciones altamente oscilatorias, métodos polinomiales trascendentales y de alto grado, y una serie de nuevas funciones especiales. En algunos casos, las optimizaciones pueden aumentar el rendimiento en un orden de magnitud o más, según el tamaño del problema.

Además de las capacidades adicionales de mejora del rendimiento, Mathematica 8 también incluye aproximadamente 500 nuevas funciones integradas, un aumento que representa casi todo el recuento de funciones en el Mathematica 1 original de 1988. Las nuevas características en la versión 8 encapsulan funciones simbólicas de alto nivel de Probabilidad y Estadística; permutaciones y algoritmos de teoría de grupos; rutinas de ingeniería financiera de propósito general; funciones del sistema de control; funciones de análisis de ondículas; algoritmos gráficos y de red; y rutinas de procesamiento de imágenes.

La última categoría incluye algunas rutinas muy útiles para procesar datos visuales. Una de las nuevas funciones es la detección de características, como el reconocimiento de rostros y caracteres. También se incluyen transformaciones geométricas y alineación de imágenes. Para video, Mathematica ahora puede importar y exportar cuadros individuales, así como capturar transmisiones de cámaras web en tiempo real. Todas estas capacidades se pueden combinar para proporcionar algunas aplicaciones de procesamiento de imágenes bastante sofisticadas, además de un motor de cálculo ya completo.

Quizás la adición más visible a la versión 8, al menos desde la perspectiva de la interfaz de usuario, es la integración con Wolfram Alpha, el motor de conocimiento computacional basado en la web de la empresa. Hay una serie de beneficios al unir Mathematica a su spin-off web, que, por cierto, es en sí misma una aplicación de Mathematica en su núcleo.

La primera es la capacidad de aprovechar el archivo de datos curados de Wolfram Alpha, que incluye una base de datos grande y en crecimiento que abarca muchas disciplinas técnicas y no técnicas. Queda por ver si permitir que los usuarios de Mathematica accedan a los datos de Wolfram Alpha estimulará nuevas aplicaciones o simplemente se usará como una caja de arena para aplicaciones centradas en datos más personalizadas.

Para el diseñador de aplicaciones, uno de los usos potencialmente más interesantes de Wolfram Alpha es la capacidad de utilizar sus habilidades lingüísticas de forma libre. Entonces, en lugar de tener que definir un problema dentro de los rígidos confines del lenguaje matemático, puede usar (más o menos) un lenguaje natural. Entonces, por ejemplo, la suma de todos los números enteros de 1 a 1000 debe especificarse como Suma[i, i, 1, 1000] en Mathematica, pero podría definirse simplemente como «suma de enteros de 1 a 1000 ′» usando el modo de forma libre.

La versión en inglés se convierte automáticamente a la sintaxis de Mathematica sobre la marcha, que se puede editar y desarrollar por separado. Al ampliar aún más la capacidad, los usuarios pueden pasar variables de Mathematica a cálculos de Wolfram Alpha.

Lo bueno de la arquitectura de Mathematica es que casi todas sus características, incluidas las nuevas que se describen aquí, están incluidas en la tecnología central. El equipo de Wolfram Alpha se ha alejado de las cajas de herramientas, bibliotecas y complementos de productos independientes (excepto gridMathematica). Como resultado, las nuevas características de la versión 8 pueden aprovechar inmediatamente la gran base de componentes acumulados de Mathematica.

Al comienzo de Mathematica 8 en la Wolfram Technology Conference en noviembre, el CEO de la compañía, Stephen Wolfram, reiteró su compromiso de mantener la plataforma como una herramienta de software unificada y consistente. Mantener la arquitectura monolítica significa que son libres de evolucionar el producto mediante el refinamiento de las piezas individuales y la adición de otras nuevas. Con este tipo de modelo siempre se garantiza que el todo sea mayor que la suma de las partes. «Hemos adoptado una metodología estratégica muy simple», explicó Wolfram. «Simplemente implemente todo».

No te olvides compartir en tus redes sociales para que tus amigos opinen

👇👇👇 😘 💪 👇👇👇