(Nota: estoy muy decepcionado que después vender 400 millones no copias de Windows 7 Microsoft soporta ya Windows XP pero ha comenzado a rebajar su funcionalidad en pedazos lo que es no más conveniente para este proyecto. Puesto que el proyecto bajo Windows 7 es todavía más difícil que hacerlo bajo Linux y Linux ofrece muchas más ventajas mejor que Windows me estoy haciendo la transición a Linux y como aprendo actualizará este proyecto en consecuencia. También estoy pensando en lo que lo convierte en una colaboración de código abierto en Linux así que permítanme saber si gustaría colaborar.)
Puesto que los valores de la matriz superaron los límites de una variable de entero largo de Microsoft y tuve que usar variables de precisión simple o doble (en la búsqueda de valores duplicados comparando cada valor en la matriz con un índice desde el mínimo hasta el valor máximo de la matriz) a menudo se superó la cantidad de memoria disponible y el tiempo.
Un tamaño de la matriz de 265 elementos que contiene valores enteros que incrementan exponencialmente su valor cada ciclo potencialmente sin límite en el número de ciclos o los valores de la matriz del tiempo una memoria necesaria rápidamente excedió la capacidad de mi ordenador personal individual.
Una matriz y su conjunto de valores y un ejemplo de índice de comparación:
1 2622695870048
- -
- -
6645178834471 de 5
6 63491409181716
7 83861832294247
8 2622695870048
9 45029704436816
10 18117222372627
11 6659485477833
12 50600552165484
13 37292816675177
14 36784339702878
15 40751538724887
16 41576195825074
17 37319353740877
18 15405643023342
19 77102983094426
- -
- -
265 41576195825074
.. .con un índice de comparar de 0 a 28239790275938 para esta matriz particular.
He considerado escribir el programa en ASP, una Amazona de apertura o Google o Microsoft cuenta en la nube pero decide jugar con un pequeño racimo de Beowulf primero después de leer varios artículos sobre ellos.
Puesto que era posible duplicar la matriz y copiarlo en otro equipo y también era posible dividir el índice por la mitad y duplica los cuenta en la gama más baja de los valores en un ordenador y la gama superior en otro equipo
28239790275938 / 2 = 14119895137969
gama más baja de procesados en el mismo equipo 0 - 14119895137969 1
gama superior procesados en otro equipo: 14119895137969 a 28239790275938
y a continuación añadiendo más ordenadores potencialmente podrían aportar una solución a los límites de un solo equipo.
Si usted tiene un problema que se puede dividir en una manera similar y ejecución una mitad en un ordenador y la otra mitad en otro puede construir un superordenador simplemente dividiendo el problema y agregar más equipos.
Por supuesto puede utilizar un enlace de Ethernet para transferencia de datos en lugar de utilizar disquetes y querrá evitar equipos que funciona a velocidades de menos de 1 GHz, pero la idea no cambia.
Ya que mi aplicación no requiere de mucha memoria del servidor o tiempo de procesamiento para contar los duplicados puedo generalmente bajan varias instancia del programa en cada equipo en el fondo sin demasiado lento o pérdida de la memoria para otros programas. Con servidores dedicados generalmente puedo ejecutar instancias mucho más del programa.
El sistema que tengo y ejecutando ahora puede manejar un tamaño de matriz de 265 valores que requieren un índice total de 0 a 1,280,000,000,000 (1,28 trillones) para una sola computadora o que se puede dividir en 38 segmentos para reducir el tamaño del valor índice a 33,684,210 (33 millones), 38 casos pueden funcionar en 7 equipos sin problemas.
Aunque puede tomar durante la noche o más tiempo para completar esta tarea y ser lento por estándares industriales demuestra que con suficientes computadoras las posibilidades es virtualmente ilimitada...