Soy un informático. Aquí hay un ejemplo de la ciencia en informática de mi propio campo.
Digamos que un físico con el que trabajo ejecuta una simulación de ciencia de materiales masivamente paralela a través de unos pocos miles de procesadores en una de las supercomputadoras de LLNL. Es bastante fácil averiguar qué tan rápido se ejecutó el simulador. Lo que quiero saber es qué tan rápido debería haber corrido. ¿Cuál fue el rendimiento teórico óptimo? ¿Qué nos impidió alcanzar ese límite? Ampliando un poco la pregunta: ¿cómo podemos obtener un rendimiento óptimo para todos los trabajos que se ejecutan en nuestras supercomputadoras? ¿Alcanzar esa meta nos daría un rendimiento óptimo en todo el sistema? (Spoiler: no.)
Responder estas preguntas significa que necesito diseñar y ejecutar experimentos, crear y validar modelos y hacer predicciones falsificables (incluidas las predicciones sobre la máquina que todavía están en el tablero de dibujo). Una vez que tenga esos modelos en su lugar, puedo ponerme mi sombrero de ingeniería y ayudar a mejorar nuestros códigos existentes y cambiar la forma en que escribimos códigos futuros (y cómo diseñamos máquinas futuras). Pero el trabajo de ingeniería no puede comenzar hasta que los modelos científicos estén en su lugar.
- ¿Cuáles son las mejores empresas de desarrollo web en América del Sur?
- Estoy persiguiendo BE-ECE de la Universidad de Thapar. Buscando MS en Comp. Engg. (Hardware) .GRE-167Q 158V, GPA-7.1. ¿Es probable que las universidades de los Estados Unidos me acepten?
- Como estudiante de ingeniería informática, ¿qué debo aprender para desarrollar mis habilidades?
- ¿Qué es lo mejor para la ingeniería informática, AISSMS o Sinhgad (Kondhwa)?
- ¿Es un desarrollador / ingeniero de software Java una buena carrera para un estudiante de informática? Me gusta mucho el idioma. ¿Debería centrarme en especializarme o generalizar mis habilidades?
Aquí hay un experimento que puede hacer en su propia máquina para darle una idea de cómo es esto. Tome un punto de referencia de cálculo pesado que se ejecute en algún lugar entre 10 y 100 segundos. Tiempo su ejecución. Ahora ejecútelo mil veces más y registre cada tiempo de ejecución individual. Si su temporizador es lo suficientemente preciso, debería ver una variación considerable en el tiempo de ejecución.
¿Puedes encontrar las fuentes de la variación de ejecución a ejecución? ¿Qué parte de la variación proviene del sistema operativo y cuánto del procesador? ¿Qué puede cambiar en el procesador o en el sistema operativo para eliminar la variación? ¿Cuál es el rendimiento óptimo teórico y (una vez que se elimina la variación) qué tan cerca estuvo? ¿Qué te impide alcanzar el óptimo? ¿Cómo puedes mitigar ese problema?
¡Que te diviertas!