Primero, una objeción de redacción: la velocidad de la computadora y la velocidad de la memoria (módulo, algunos casos interesantes que ignoraré por el momento) son independientes del software. La velocidad del software , el tiempo de ejecución del reloj de pared, depende tanto de qué tan bien se escribió el software y de la velocidad del hardware subyacente.
Las mayores aceleraciones en la informática de propósito general provienen de descubrir que alguien usó (digamos) un algoritmo n ^ 2 cuando un algoritmo log (n) funcionará igual de bien. (Vea la notación Big O si no está familiarizado con el concepto). Este tipo de historias puede motivar a los estudiantes a tomar clases de análisis de algoritmos, pero la mayoría de las veces, especialmente en software ampliamente distribuido, ya sea el mejor algoritmo o un cierre equivalente ya habrá sido seleccionado.
Una vez que tenga el algoritmo correcto, no hay una manera fácil de obtener una aceleración significativa del rendimiento sin una gran cantidad de ajustes manuales. La aceleración de software más importante que conozco proviene del Cartiod
proyecto en LLNL: desde el puerto inicial hasta la arquitectura Sequoia, el equipo pudo obtener una aceleración de ~ 50x al realizar cientos de optimizaciones. Por ejemplo, el programa pasaba demasiado tiempo en la biblioteca MPI, por lo que omitieron la capa de comunicación para meter directamente los registros de interconexión.
- ¿Cuáles son los rasgos de los grandes ingenieros de confiabilidad del sitio?
- ¿Es bueno cambiar de compañía cada año en el campo del desarrollo de software?
- ¿El modelo en cascada (ingeniería de software) es adecuado para proyectos cuyos requisitos cambian constantemente o no se especifican correctamente y por qué?
- ¿Puede un ingeniero de control de calidad entrar en inteligencia de negocios o un rol de PM?
- ¿Cuáles son los lenguajes de programación, utilizados recientemente en las industrias de software?
En el ámbito de la supercomputadora, la aceleración 50x no es un mal día en la oficina, pero estamos mucho más interesados en obtener aceleraciones 1000x cada pocos años (o, de manera equivalente, poder resolver problemas que son 1000x más grandes en la misma cantidad de tiempo). En ese nivel solo tienes que lanzar hardware al problema. Sequoia tiene 1,5 millones de núcleos de procesador. Estamos trabajando en diseños de sistemas que tendrán mil millones de núcleos de procesador. Y sí, hay buena ciencia que no se puede hacer de manera factible a 1.5M que podría funcionar en 1B.