Ningún ordenador ha sido utilizado “durante décadas” de forma continua para encontrar “un número primo realmente grande”. Debe empezar por tener en cuenta que la búsqueda de números primos muy grandes no se hace a ciegas, sino que se hace sobre “candidatos especiales” y que el procedimiento (llamado “prueba de primalidad“) es mucho menos complejo que el problema complementario al de la primalidad que es la factorización (descomposición de un número cualquiera en factores primos).
Así, hasta la fecha, el número primo más grande que se conoce es el conocido como M82589933 o número primo de Mersenne nº 51. Para encontrar M82589933 un ordenador estuvo trabajando de forma ininterrumpida durante 12 días. Eso está muy lejos de constituir “años”. Debe pensar que la búsqueda de estos números se hace de forma coordinada y asíncrona (es decir, cada “ordenador” que participa en el proyecto recibe un paquete de números de Mersenne para comprobar su primalidad y trabaja únicamente sobre esos números… cuando ha conseguido descartar todos los números de un paquete, simplemente pide más al nodo que coordina el cálculo. Comprobar la primalidad de un candidato normalmente lleva horas, no días.
De todos modos entiendo que lo que en realidad pregunta es cómo registra un ordenador un resultado parcial durante un proceso de búsqueda realmente complejo que puede involucrar tiempos de computación muy prolongados. Esto tiene su importancia (mucha) en los grandes esfuerzos para resolver problemas realmente difíciles (ya he dicho que la primalidad no es tan difícil después de todo), como las simulaciones. Si no por otra cosa, por evitar perder todo el trabajo avanzado en situaciones impredecibles como los apagones o los fallos del software y del hardware.
Para ello, los programadores que diseñan y escriben este tipo de programas, hacen que, cada cierto número de pasos o cada cierto tiempo, el programa deje de hacer momentáneamente lo que quiera que esté haciendo para volcar los resultados parciales (esto supone un volcado inteligente de la memoria de trabajo) a disco o a cualquier otro medio de almacenamiento permanente. Eso es lo que se conoce en el argot como “checkpoint”. El programa puede ser invocado de una forma especial para antes de nada cargar su memoria de trabajo desde uno de esos volcados. De esta manera, si se produce un fallo de hardware o un apagón (o, como Vd. propone, es necesario realizar una actuación de mantenimiento sobre la máquina), el programa puede continuar desde el último checkpoint registrado.
Esta es una técnica común en la programación de supercomputadores. Pero, si lo piensa, es lo mismo que hace Word o Excel de forma automática cada cierto tiempo para evitar que Vd. pierda toda la edición de un documento si el sistema se “queda colgado”.
Así que… sí. A veces los ordenadores dejan brevemente de hacer lo que sea que estén haciendo para guardar resultados parciales… solo por si acaso.
Para escribir su respuesta aquí, Ingresar o Crear una cuenta
Compartir