Newsgroup: it.comp.programmare.win32
Titolo: Applicativi multiprocessore su Win2000

Ho un applicativo che fornisce le medesime prestazioni sia su Win 2000
monoprocessore (....in certi casi è più performante questa macchina) sia su
Win 2000 Server che gira su una macchina triprocessore.
Viene elaborata grafica 2D definita utilizzando le GDI, quindi NON si passa
dalla scheda video, se non per prendere i colori della palette....almeno
così a detta del programmatore.
Il risultato strano è che i benchmark della macchina risultano quasi
identici; logicamente uno dovrebbe attendere
La mia domanda è questa....e riguarda in generale le applicazioni per più
processori:
occorre che l'applicazione sfrutti il multiprocessore (...ad esempio
nell'elaborare un'immagine si occupi il programma di suddividere il tutto
perché venga sfruttato da più CPU) oppure è il sistema operativo che se ne
occupa?
Dove posso trovare della documentazione "all'uopo"?
Grazie e buon Natale in anticipo a tutti!!
Marco

 occupa?
Non ho mai avuto a che fare con macchine multiprocessore,
quindi e' probabile che ti stia dicendo una sciocchezza,
ma e' probabile che ci debba essere collaborazione da 
parte dell'applicazione.  Mi spiego meglio: non vedo come
un s.o. possa spezzare un'applicazione a thread singolo,
perche' venga eseguita in tre pezzi contemporaneamente.
Credo proprio debba essere l'applicazione ad autoscomporsi 
in tre, usando, per esempio, tre thread diversi.
A quel punto, una volta che l'applicazione ha creato
le condizioni di parallelismo, il sistema le puo' gestire
come meglio crede e la soluzione piu' naturale e' che ogni 
CPU gestisca un thread distinto.
-- 
Posted from  [80.105.34.80] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 CPU gestisca un thread distinto.
Vediamo un po' che cosa succede, grazie per la risposta, ciao!
Marco

 CPU gestisca un thread distinto.
Questo dipende dagli algoritmi di scheduling e dai vari oggetti processo che
il SO deve gestire in quel momento ... a priori non si può sapere se uno
stesso thread verrà splittato tra le n CPU o se verrà assegnata una CPU ad
un singolo thread (piuttosto anomalo secondo quanto studiato sullo
scheduling)
Ciao! :-)
--
- Carlo -
c.b...@libero.it

 identici;
A parte questo, cio` che ti hanno detto e` corretto: devi suddividere le
operazioni di calcolo su piu` thread per sfruttare un sistema
multiprocessore. Se tutto il tempo e` occupato da chiamate a GDI (anziche`
anche da calcoli "tuoi"), onestamente non so se otterrai dei grossi
benefici; non so come siano gestite le chiamate di sistema in un sistema
SMP. Comunque tentar non nuoce.
--
Lorenzo

contrario.
A dire il vero, la documentazione che ho io ("Programmare
applicazioni per Windows" V ed. di Jeffrey Richter) riporta
testualmente a pag. 64:
"Microsoft Windows 2000 puo' utilizzare computer con piu'
CPU.  Ad esempio, il computer utilizzato per scrivere questo
libro possiede due processori.  Widnows 2000 puo' presentare
thread differenti eseguiti su ciascuna CPU cosi' che piu'
thread vengano realmente eseguiti contemporaneamente.  Su
questo tipo di sistema, il kernel di Windows 2000 si occupa
di tutta la gestione e la temporizzazione dei thread. Non
dovra' essere eseguita alcuna particolare operazione nel
codice per ottenere i vantaggi offerti da un computer
multiprocessore".
Letta cosi', sembrerebbe che qualsiasi applicazione venga
eseguita in modalita' multiprocessore, compresa quella che
citi, ma secondo me l'applicazione deve gia' essere
predisposta per lavorare con piu' thread.