Bygga din egen superdator
(Obs: Jag är verkligen besviken att efter säljande 400 miljoner kopior av Windows 7 Microsoft inte längre stöder Windows XP men har börjat att nedgradera sin funktionalitet i bitar här och gör det inte längre lämpar sig för detta projekt. Sedan gör projektet under Windows 7 är ännu svårare än att göra det under Linux och Linux erbjuder många fler ultimata fördelar än Windows jag gör övergången till Linux och som jag lär dig kommer att uppdatera detta projekt detta. Även funderar jag på att göra detta en öppen källkod samarbete under Linux så låt mig veta om du skulle vilja samarbeta.)
Eftersom värdena i matrisen överskridit gränserna för en Microsoft långt heltalsvariabel och jag var tvungen att använda enkel eller dubbel precision variabler (i sökandet efter dubblettvärden genom att jämföra varje värde i arrayen med ett index som sträcker sig från lägsta till högsta array värdet) överskreds ofta mängden tillgängligt minne och tid.
En matrisstorlek 265 element som innehåller heltalsvärden som ökar exponentiellt i värde varje cykel med potentiellt ingen begränsning i antalet cykler eller värdena i matrisen ett minne krävs snabbt överskriden med förmåga att min enda dator.
En matris och sin uppsättning av värden och ett jämför index exempel:
1 2622695870048
- -
- -
5 6645178834471
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
.. .med en jämför index från 0 till 28239790275938 för denna särskilda array.
Jag ansåg att skriva om programmet i ASP, öppna en Amazon eller Google eller Microsoft cloud konto men besluta att mixtra med en liten Beowulfkluster först efter att ha läst flera artiklar om dem.
Eftersom det var möjligt att kopiera matrisen och kopiera den till en annan dator och det var också möjligt att dela upp index på hälften och räkna dubbletter i det lägre intervallet med värden på en dator och upperen spänna på en annan dator
28239790275938 / 2 = 14119895137969
lägre spänner bearbetas på en dator 0 till 14119895137969 - 1
Övre rad bearbetas på en annan dator: 14119895137969 till 28239790275938
sedan lägga till fler datorer kan eventuellt ge en lösning på gränserna för en enda dator.
Om du har ett problem som kan delas på ett liknande sätt och kör hälften på en dator och den andra hälften på en annan kan du bygga en superdator genom helt enkelt dela upp problemet och lägga till fler datorer.
Naturligtvis kan du använda en Ethernet-länk för att överföra data istället för att använda disketter och du kanske vill undvika datorer att springa på hastighet mindre än 1 GHz men idén inte ändras.
Eftersom min ansökan inte kräver för mycket serverminne eller efterbearbetning tid räkna dubbletter jag kan oftast köra flera instans av programmet på varje dator i bakgrunden utan för mycket långsamt ner eller minnesförlust för andra program. Med dedikerade servrar kan jag brukar köra många fler instanser av programmet.
Systemet har jag och kör nu kan hantera en matrisstorlek 265 värden som kräver en odelad index från 0 till 1,280,000,000,000 (1.28 biljoner) för en enda dator eller som kan delas in i 38 segment att minska index värde storleken till 33,684,210 (33 miljoner), 38 instanser kan köras på 7 datorer utan problem.
Även om det kan ta över natten eller längre för att fullgöra denna uppgift och att sakta av industriella standarder visar att med tillräckligt många datorer möjligheterna är nästan obegränsade.