Jump to content

Recommended Posts

  • Replies 437
  • Created
  • Last Reply

Top Posters In This Topic

funziona ma a me carica solo 1 core... il 3 come vedi dallo screen. direi che ci metta sui 20secondi circa per 16M!! incredibile!!!:ave::ave::ave:

 

 

ora ci metto il timer e lo riposto sul mio server,

in teroria i cores li sfutta, ma è talmenente ottimizzato

il codice, che a momenti fà a meno della cpu :asd:

Link to comment
Share on other sites

cioè ma mi stai dicendo che se non tolgo la spunta su "visualizza numeri primi" e faccio calcola. quando mi dice il numero di numeri primi trovati lui li ha davvero trovati tutti????

ci mette un secondo scarso se non fai la visualizzazione!

è mostruoso! :o

 

 

scarica la seconda versione, e valuta di persona se li trova davvero tutti :perfido:

Link to comment
Share on other sites

e6700 @ 3ghz

2x1gb ddr2-800

 

 

i36646_pcfast16msv.PNG

i36645_pcfast16mnv.PNG

 

 

c'è ancora notevole disparità visualizzando o no i numeri...cosa che è un po' strana ma ci potrebbe stare (quando li visualizza la scheda video o chi per lei inizia a fischiare....)

 

ps: non si potrebbe mettere uan check box che consenta di togliere la spunta a visualizza i numeri?

così una volta messa non si toglie più...

Link to comment
Share on other sites

:AAAAH: 20 secondi ? :AAAAH: cosa hai ...un Vic 20 ? :asd: :asd: :asd:

 

 

per i 16milioni non saranno 20 ma poco ci cala. dopo che li ha visualizzati tutti sta a lavorare un pò ancora il core che ha fatto i conti. forse 5 o 7 secondi e quindi conto anche quelli. per i numeri primi bhò forse sono 3-4 sec. la stima a 20sec era spannometrica.. forse sono 10-12 ;)

Link to comment
Share on other sites

per i 16milioni non saranno 20 ma poco ci cala. dopo che li ha visualizzati tutti sta a lavorare un pò ancora il core che ha fatto i conti. forse 5 o 7 secondi e quindi conto anche quelli. per i numeri primi bhò forse sono 3-4 sec. la stima a 20sec era spannometrica.. forse sono 10-12 ;)

 

no caro,

quello che fà il tuo processore dopo i miei calcoli

sono fatti suoi :) ,

 

io prendo i millisecondi dal timer di windows

e li metto in una variabile dall'istante in cui

inizia il primo calcolo, alla fine del risultato

dell'ultimo calcolo, riprendo i millisecondi

dal timer di windows, e faccio la sottrazione.

Edited by Xstreme
Link to comment
Share on other sites

e6700 @ 3ghz

2x1gb ddr2-800

 

 

 

 

 

 

c'è ancora notevole disparità visualizzando o no i numeri...cosa che è un po' strana ma ci potrebbe stare (quando li visualizza la scheda video o chi per lei inizia a fischiare....)

 

ps: non si potrebbe mettere uan check box che consenta di togliere la spunta a visualizza i numeri?

così una volta messa non si toglie più...

 

 

 

in teoria ed anche in pratica, il risultato delle operazioni

matematiche nude e crude è quello senza display, quando

utilizzi il display dei numeri, ci si mette di mezzo anche

il processore della scheda grafica (GPU), quindi, tutto

quello che succede a livello grafico incide sulla

potenza di calcolo effettiva della sola CPU, per concludere

quando si finisce qualsiasi tipo di test o di benchmark,

che fà uso di interfaccia grafica il risultato è SEMPRE

la combinazione di velocità di CPU & GPU, a meno che

quando si fanno i calcoli, non si utilizza l'uso di

qualsiasi tipo di grafica, con un apposita opzione di

scelta, l'inconveniente e che non sai a che punto è

il processo di test o benchmark, calcolando che

le ultime release di windows fanno pesante uso di

grafica testuale e non, (il testo sempre grafica è)

puoi ben intuire l'influenza dell GPU sul risultato finale

del test.

Link to comment
Share on other sites

questa versione è migliorara un pò ;)

cmq 16milioni in:

420ms no visualizzazione

7260ms visualizzazione

 

forse mi sono spiegato male io, anzi, è cosi.... :)

 

su i primi 16 milioni di numeri interi ci sono 1031130 numeri primi

 

quindi ha calcolato l'estrazione di 1031130

numeri primi da 16 milioni di numeri interi in 420 ms

 

ok ? O0

Link to comment
Share on other sites

eh si, devo dire che con l'algoritmo di estrazione hai davvero fatto un ottimo lavoro :clapclap:

 

 

P5B Premium

[email protected] (11x326)

4GB Ram 407Mhz@5-5-5-15

Windows 7 Ultimate build 7100 64bit

 

 

senza visualizzazione: 0.421sec

 

 

 

 

 

con vis: 6.487sec

 

 

 

mi sono inventato MEFISTO :)

 

MErsenne

Factorial

Iteraction

STring

Operations

 

MFI per gli amici ...

 

e sto lavorano sulle iterazioni MFI in blocchi di

16 milioni di interi a gradini di 32 - 64 - 128 - 256 etc etc,

cioè per esempio con un iterazione di 32 MFI

l'algo estrarrà (1031130 * 32) di numeri primi,

sui primi scoperti eseguirò un ulteriore

estrapolazione dei "Mersenne",

infine sui Mersenne ne calcolo il fattoriale,

il fattoriale servirà ad alimentare varie stringhe

di testo, (cioè trasformo numeri in testo),

con questi blocchi di stringhe che ci faccio ?

beh visto che ci sono gli applico un algo

di quicksort.....direi che potrebbe bastare,

 

una volta fatto questo gli applico la verifica

dei risultati con tabella statica preinserita

nel codice in rigoroso DATA .

 

per settimana prossima dovrei riuscire a

rilasciare la versione gamma.

Link to comment
Share on other sites

forse mi sono spiegato male io, anzi, è cosi.... :)

 

su i primi 16 milioni di numeri interi ci sono 1031130 numeri primi

 

quindi ha calcolato l'estrazione di 1031130

numeri primi da 16 milioni di numeri interi in 420 ms

 

ok ? O0

 

 

si avevo visto che il n° di numeri primi era 100k e suffla. ottimo lavoro

 

mi sono inventato MEFISTO :)

 

MErsenne

Factorial

Iteraction

STring

Operations

 

MFI per gli amici ...

 

e sto lavorano sulle iterazioni MFI in blocchi di

16 milioni di interi a gradini di 32 - 64 - 128 - 256 etc etc,

cioè per esempio con un iterazione di 32 MFI

l'algo estrarrà (1031130 * 32) di numeri primi,

sui primi scoperti eseguirò un ulteriore

estrapolazione dei "Mersenne",

infine sui Mersenne ne calcolo il fattoriale,

il fattoriale servirà ad alimentare varie stringhe

di testo, (cioè trasformo numeri in testo),

con questi blocchi di stringhe che ci faccio ?

beh visto che ci sono gli applico un algo

di quicksort.....direi che potrebbe bastare,

 

una volta fatto questo gli applico la verifica

dei risultati con tabella statica preinserita

nel codice in rigoroso DATA .

 

per settimana prossima dovrei riuscire a

rilasciare la versione gamma.

 

 

mi esalto sempre di più quando vedo operazioni matematiche hard :asd::asd::asd:

aspetto di gusto!!!

Link to comment
Share on other sites

modulo toto1

 

 

 

Inizializzazione:

 

00401000             /$ 68 2C000000     PUSH 2C                                                         ; /n = 2C (44.)
00401005                               |. 68 00000000     PUSH 0                                                          ; |c = 00
0040100A                               |. 68 A4424000     PUSH toto1.004042A4                                             ; |s = toto1.004042A4
0040100F                               |. E8 5C100000     CALL                                        ; memset
00401014                               |. 83C4 0C         ADD ESP,0C
00401017                               |. 68 00000000     PUSH 0                                                          ; /pModule = NULL
0040101C                               |. E8 55100000     CALL                            ; GetModuleHandleA
00401021                               |. A3 A8424000     MOV DWORD PTR DS:[4042A8],EAX
00401026                               |. 68 00000000     PUSH 0                                                          ; /MaximumSize = 0
0040102B                               |. 68 00100000     PUSH 1000                                                       ; |InitialSize = 1000 (4096.)
00401030                               |. 68 00000000     PUSH 0                                                          ; |Flags = 0
00401035                               |. E8 42100000     CALL                                  ; HeapCreate
0040103A                               |. A3 A4424000     MOV DWORD PTR DS:[4042A4],EAX
0040103F                               |. E8 6C130000     CALL toto1.004023B0
00401044                               |. E8 6B120000     CALL toto1.004022B4
00401049                               |. 68 03000000     PUSH 3
0040104E                               |. 68 03000000     PUSH 3
00401053                               |. E8 C4120000     CALL toto1.0040231C
00401058                               |. 68 15000000     PUSH 15
0040105D                               |. 68 C8424000     PUSH toto1.004042C8
00401062                               |. 68 00000000     PUSH 0
00401067                               |. 8B15 C8424000   MOV EDX,DWORD PTR DS:[4042C8]
0040106D                               |. E8 8E0F0000     CALL toto1.00402000
00401072                               |. B8 00200000     MOV EAX,2000
00401077                               |. 68 04000000     PUSH 4
0040107C                               |. E8 9F0F0000     CALL toto1.00402020
00401081                               |. 68 32404000     PUSH toto1.00404032                                             ;  ASCII "Toto attendi prego..."
00401086                               |. FF15 68404000   CALL DWORD PTR DS:[404068]                                      ;  toto1.0040234B
0040108C                               |. 68 09000000     PUSH 9
00401091                               |. 68 09000000     PUSH 9
00401096                               |. E8 81120000     CALL toto1.0040231C
0040109B                               |. 68 1C404000     PUSH toto1.0040401C

[.................]

 

 

 

Elaborazione:

 

004010A0                               |. FF15 68404000   CALL DWORD PTR DS:[404068]                                      ;  toto1.0040234B
004010A6                               |. 68 09000000     PUSH 9
004010AB                               |. 68 09000000     PUSH 9
004010B0                               |. E8 67120000     CALL toto1.0040231C
004010B5                               |. E8 C80F0000     CALL                                ; [GetTickCount
004010BA                               |. A3 B0424000     MOV DWORD PTR DS:[4042B0],EAX
004010BF                               |. C705 B4424000 0>MOV DWORD PTR DS:[4042B4],1
004010C9                               |> B8 50C30000     /MOV EAX,0C350
004010CE                               |. 3B05 B4424000   |CMP EAX,DWORD PTR DS:[4042B4]
004010D4                               |. 0F8C F3000000   |JL toto1.004011CD
004010DA                               |. C705 B8424000 0>|MOV DWORD PTR DS:[4042B8],0
004010E4                               |. C705 BC424000 0>|MOV DWORD PTR DS:[4042BC],0
004010EE                               |> B8 FE1F0000     |/MOV EAX,1FFE
004010F3                               |. 3B05 BC424000   ||CMP EAX,DWORD PTR DS:[4042BC]
004010F9                               |. 7C 1F           ||JL SHORT toto1.0040111A
004010FB                               |. 8B1D BC424000   ||MOV EBX,DWORD PTR DS:[4042BC]
00401101                               |. 8B2D C8424000   ||MOV EBP,DWORD PTR DS:[4042C8]
00401107                               |. C1E3 02         ||SHL EBX,2
0040110A                               |. C7441D 00 01000>||MOV DWORD PTR SS:[EBP+EBX],1
00401112                               |. FF05 BC424000   ||INC DWORD PTR DS:[4042BC]
00401118                               |.^EB D4           |JMP SHORT toto1.004010EE
0040111A                               |> C705 BC424000 0>|MOV DWORD PTR DS:[4042BC],0
00401124                               |> B8 FE1F0000     |/MOV EAX,1FFE
00401129                               |. 3B05 BC424000   ||CMP EAX,DWORD PTR DS:[4042BC]
0040112F                               |. 0F8C 8D000000   ||JL toto1.004011C2
00401135                               |. 8B1D BC424000   ||MOV EBX,DWORD PTR DS:[4042BC]
0040113B                               |. 8B2D C8424000   ||MOV EBP,DWORD PTR DS:[4042C8]
00401141                               |. C1E3 02         ||SHL EBX,2
00401144                               |. 8B5C1D 00       ||MOV EBX,DWORD PTR SS:[EBP+EBX]
00401148                               |. 83FB 01         ||CMP EBX,1
0040114B                               |. 75 6A           ||JNZ SHORT toto1.004011B7
0040114D                               |. 8B1D BC424000   ||MOV EBX,DWORD PTR DS:[4042BC]
00401153                               |. 031D BC424000   ||ADD EBX,DWORD PTR DS:[4042BC]
00401159                               |. 891D C0424000   ||MOV DWORD PTR DS:[4042C0],EBX
0040115F                               |. 8305 C0424000 0>||ADD DWORD PTR DS:[4042C0],3
00401166                               |. 8B1D BC424000   ||MOV EBX,DWORD PTR DS:[4042BC]
0040116C                               |. 031D C0424000   ||ADD EBX,DWORD PTR DS:[4042C0]
00401172                               |. 891D C4424000   ||MOV DWORD PTR DS:[4042C4],EBX
00401178                               |> 8B1D C4424000   ||/MOV EBX,DWORD PTR DS:[4042C4]
0040117E                               |. 81FB FE1F0000   |||CMP EBX,1FFE
00401184                               |. 7F 2B           |||JG SHORT toto1.004011B1
00401186                               |. 8B1D C4424000   |||MOV EBX,DWORD PTR DS:[4042C4]
0040118C                               |. 8B2D C8424000   |||MOV EBP,DWORD PTR DS:[4042C8]
00401192                               |. C1E3 02         |||SHL EBX,2
00401195                               |. C7441D 00 00000>|||MOV DWORD PTR SS:[EBP+EBX],0
0040119D                               |. 8B1D C4424000   |||MOV EBX,DWORD PTR DS:[4042C4]
004011A3                               |. 031D C0424000   |||ADD EBX,DWORD PTR DS:[4042C0]
004011A9                               |. 891D C4424000   |||MOV DWORD PTR DS:[4042C4],EBX
004011AF                               |.^EB C7           ||JMP SHORT toto1.00401178
004011B1                               |> FF05 B8424000   ||INC DWORD PTR DS:[4042B8]
004011B7                               |> FF05 BC424000   ||INC DWORD PTR DS:[4042BC]
004011BD                               |.^E9 62FFFFFF     |JMP toto1.00401124
004011C2                               |> FF05 B4424000   |INC DWORD PTR DS:[4042B4]
004011C8                               |.^E9 FCFEFFFF     JMP toto1.004010C9
004011CD                               |> E8 B00E0000     CALL                                ; [GetTickCount


[.................]

 

 

 

 

Visualizzazione:

 

0040120B                               |. BA 48404000     MOV EDX,toto1.00404048                                          ;  ASCII " iterazioni in : "
00401210                               |. E8 EB110000     CALL toto1.00402400
00401215                               |. A1 DC424000     MOV EAX,DWORD PTR DS:[4042DC]
0040121A                               |. 50              PUSH EAX
0040121B                               |. 50              PUSH EAX
0040121C                               |. A1 B0424000     MOV EAX,DWORD PTR DS:[4042B0]
00401221                               |. 99              CDQ
00401222                               |. 52              PUSH EDX
00401223                               |. 50              PUSH EAX
00401224                               |. E8 E70F0000     CALL toto1.00402210
00401229                               |. 58              POP EAX
0040122A                               |. BA 0D404000     MOV EDX,toto1.0040400D                                          ;  ASCII " millisecondi."
0040122F                               |. E8 CC110000     CALL toto1.00402400
00401234                               |. FF05 DC424000   INC DWORD PTR DS:[4042DC]
0040123A                               |. 8B15 64404000   MOV EDX,DWORD PTR DS:[404064]
00401240                               |. 011424          ADD DWORD PTR SS:[ESP],EDX
00401243                               |. FF15 68404000   CALL DWORD PTR DS:[404068]                                      ;  toto1.0040234B
00401249                               |. 8F05 DC424000   POP DWORD PTR DS:[4042DC]
0040124F                               |. 68 03000000     PUSH 3
00401254                               |. 68 03000000     PUSH 3
00401259                               |. E8 BE100000     CALL toto1.0040231C
0040125E                               |. A1 DC424000     MOV EAX,DWORD PTR DS:[4042DC]
00401263                               |. 50              PUSH EAX
00401264                               |. 50              PUSH EAX
00401265                               |. BA 1E404000     MOV EDX,toto1.0040401E                                          ;  ASCII " Primi Calcolati : "
0040126A                               |. E8 91110000     CALL toto1.00402400
0040126F                               |. A1 DC424000     MOV EAX,DWORD PTR DS:[4042DC]
00401274                               |. 50              PUSH EAX
00401275                               |. 50              PUSH EAX
00401276                               |. A1 B8424000     MOV EAX,DWORD PTR DS:[4042B8]
0040127B                               |. 99              CDQ
0040127C                               |. 52              PUSH EDX
0040127D                               |. 50              PUSH EAX
0040127E                               |. E8 8D0F0000     CALL toto1.00402210
00401283                               |. 58              POP EAX
00401284                               |. FF05 DC424000   INC DWORD PTR DS:[4042DC]
0040128A                               |. 8B15 64404000   MOV EDX,DWORD PTR DS:[404064]
00401290                               |. 011424          ADD DWORD PTR SS:[ESP],EDX
00401293                               |. FF15 68404000   CALL DWORD PTR DS:[404068]                                      ;  toto1.0040234B
00401299                               |. 8F05 DC424000   POP DWORD PTR DS:[4042DC]
0040129F                               |. 68 70170000     PUSH 1770                                                       ; /Timeout = 6000. ms
004012A4                               |. E8 F40F0000     CALL                                       ; Sleep
004012A9                               |. 68 00000000     PUSH 0
004012AE                               |. E8 10000000     CALL toto1.004012C3
004012B3                               |. FF35 A4424000   PUSH DWORD PTR DS:[4042A4]                                      ; |/hHeap = NULL
004012B9                               |. E8 CA0D0000     CALL                                 ; |HeapDestroy
004012BE                               . E8 CB0D0000     CALL                                 ; ExitProcess

....... eh monello :asd:: purtroppo non ho il tempo adeguato alla situazione :muro:

 

 

 

Toto2 non funge sulla macchina con cui sto lavorando.

Appena torno a casa vedrò di dare una rapida occhiata anche a quello ;)

Link to comment
Share on other sites

modulo toto1

 

 

ti risparmio tempo :)

 

uno è scritto in Visual C++ ,

 

l'altro è scritto in PureBasic ,

 

quello scritto in BlitzMax lo hai gia visto ,

 

se vuoi ti mando anche la stessa routine in :

 

Ansi C , Delphi , C Sharp , Fortran , Flat Assembler e Visual Studio,

 

in Java no, perchè mi è antipatico. :asd:

 

 

ps

ho compilato la stessa routine nei linguaggi su esposti,

se vuoi ti faccio una classifica :)

 

1) Visual C++

2) .............

3) .............

4) BlitzMax

5) .............

6) .............

7) .............

8) Fortran

Edited by Xstreme
Link to comment
Share on other sites

[........]

se vuoi ti mando anche la stessa routine in :

 

Ansi C , Delphi , C Sharp , Fortran , Flat Assembler e Visual Studio,

in Java no, perchè mi è antipatico. :asd:

ps

ho compilato la stessa routine nei linguaggi su esposti,

se vuoi ti faccio una classifica :)

 

 

classifica per velocità di esecuzione?

 

 

Flat Assembler

Fortran (90 o 95?)

Ansi C

Visual Studio

C#

Delphi

Link to comment
Share on other sites

classifica per velocità di esecuzione?

 

 

Flat Assembler

Fortran (90 o 95?)

Ansi C

Visual Studio

C#

Delphi

 

 

Java : portabilità, discretamente veloce ma poco "commerciale" :briai:

 

 

C++ : portabilità prossima allo 0, veloce :leggi:

 

PureBasic : Tantovale programmare in C++ :gluglu:

 

Visual Basic : la patria dei BUG :asd:

 

 

Flat Assembler : Bello e impossibile :muro:

 

 

C : librerie scadenti :perfido:

 

 

C# : indissolubile dal Framework .NET :uglystupid2:

 

 

BlitzMax : Gui editor Inesistente ma compilatore quasi a livello Assembler :AAAAH:

 

 

Delphi : carino ma vedi il C :fiufiu:

 

 

PowerBasic : più Basic Che Power :D

 

 

Visual .NET: indissolubile dal Framework .NET :uglystupid2::uglystupid2:

 

 

Fortran : ottimo sui banchi di scuola, ma li rimane ? :cheazz:

 

Ansi C : Dinamico, Stabile, ma più macchinoso del C++ :aahhhh:

Edited by Xstreme
Link to comment
Share on other sites

modulo toto1

uno è scritto in Visual C++ ,

l'altro è scritto in PureBasic ,

 

 

beh, che toto1.exe fosse scritto in dialetto C non c'erano dubbi: molte chiamate e riferimenti a funzioni C nel modulo toto1 (ho lasciato il malloppo in ufficio).

Ma per scoprire che fosse Visual C++, sarebbe stato molto molto più lungo da averne certezza.

 

 

toto2.exe (che a qui a casa su Windows 7 64bit funziona, al contrario del pc in ufficio con XP SP3) non lìho ancora trattato.

 

 

 

Comunque ho notato che 'sto Power Basic (che sconoscevo) nei calcoli matematici è circa 2-3 volte più veloce del Visual C++ :D

 

 

 

 

A parte tutto, devo farti davvero i miei complimenti per il grandissimo impegno e la volontà che stai profondendo in questo progetto :clapclap:

Link to comment
Share on other sites

 

 

beh, che toto1.exe fosse scritto in dialetto C non c'erano dubbi: molte chiamate e riferimenti a funzioni C nel modulo toto1 (ho lasciato il malloppo in ufficio).

Ma per scoprire che fosse Visual C++, sarebbe stato molto molto più lungo da averne certezza.

 

 

toto2.exe (che a qui a casa su Windows 7 64bit funziona, al contrario del pc in ufficio con XP SP3) non lìho ancora trattato.

 

 

 

Comunque ho notato che 'sto Power Basic (che sconoscevo) nei calcoli matematici è circa 2-3 volte più veloce del Visual C++ :D

 

 

 

 

A parte tutto, devo farti davvero i miei complimenti per il grandissimo impegno e la volontà che stai profondendo in questo progetto :clapclap:

 

mi hai chiesto del ........

 

7919 2/ constant maxp
: primes ( -- n )
 here maxp 1 FILL
 1 ( count, including 2 )
 maxp 0 DO
   I here + C@ IF
     I 2* 3 + ( dup .) DUP  I + ( prime current )
     begin  DUP maxp U

o del .....

 

 

top = 50

       logical*2 flags(top)
       integer*2 i,j,k,count,iter,prime
       n = long(362)                   
       do 92 iter = 1,10
          count=0
          i=0
          do 10 i = 1,top
10            flags(i) = .true.
          do 91 i = 1,top
             if (.not. flags(i)) go to 91
             prime = i + i + 3
             count = count + 1
             k = i + prime
             if (k .gt. top) go to 91
             do 60 j = k, top, prime
60               flags(j) = .false.
91          continue
92      continue
       write (9,*) count," primes in ",(long(362)-n)/60.0," seconds "
       pause
       end

 

molto interessante per le matematiche è il compilatore Haskell

 

 

primes = sieve [ 2.. ]
 where
 sieve (p:x) = p : sieve [ n | n  0 ]

Edited by Xstreme
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...