|
|
|
![]() |
|
Strumenti |
![]() |
#61 | |||
Senior Member
Iscritto dal: Jun 2003
Città: vivo in Sicilia (tra la prov. di AG e Palermo)
Messaggi: 956
|
Quote:
L'estensione potrebbe essere del tipo "devo fare 6 somme indipendenti, più altre operazioni che non influenzano le variabili da sommare, ho a disposizione una cpu con due core e 3 alu per core, quindi raggruppo (durante la compilazione) le somme in due gruppi di istruzioni consecutive, schedulando le altre per un momento successivo, e aggiungo una verifica sulle caratteristiche del processore, così, rilevati i due core, faccio eseguire le sei somme parallelamente con un solo ciclo macchina, sempre che il sistema mi consenta di ottenere il controllo di entrambi i core e che, per motivi contingenti, ciascun core non "decida" di ordinare diversamente il proprio gruppo di istruzioni". Oppure, cosa in realtà (credo) già fattibile (almeno in parte), uso un linguaggio (con relativo compilatore) che mi consenta, tornando all'esempio dell'immagine da renderizzare, di non dover creare esplicitamente un certo numero di sottoprocessi che elaborino una parte specifica dei dati di partenza, bensì di potermi "limitare" a creare una "unità di lavoro" di base e una o più regole per suddividere il lavoro e ricomporre il risultato (un modello di coordinazione), in modo che il programma risultante riconosca le risorse disponibili e provveda a suddividere il lavoro in maniera opportuna (rispettando le regole imposte). Insomma, rendo il compilatore un po' più intelligente (o anche molto, a seconda di quello che posso fare profiquamente in quel preciso momento "storico") e creo un linguaggio ad hoc per pilotare questa maggiore intelligenza in maniera corretta e con lo sforzo minore possibile; non penso certo di lasciar fare tutto al compilatore, partendo da un sorgente "classico" con struttura sequenziale, per quanto avanzate possano essere le tecniche di IA sfruttabili sarebbe alto il rischio di incasinare tutto (la potenza è nulla senza controllo, ma se puoi controllare con abs, ebd, servosterzo, servofreno, servo_selezionatore_di_autostoppiste_bonazze_da_rimorchiare... ![]() Chiaramente tutto riferito ad un futuro (più o meno lontano) in cui ciò si possa fare senza grossi problemi, servirebbero progressi anche notevoli nelle tecniche di IA, condicio sine qua non ha senso niente di quello che ho detto. Quote:
![]() Ciao |
|||
![]() |
![]() |
![]() |
#62 | |||||||||
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Quote:
![]() Quote:
Quote:
Quote:
![]() Quote:
![]() In questi casi la penso in maniera diametralmonte opposta a ciò che pensava Einstein ("Dio non gioca a dadi"). ![]() Quote:
Quote:
Quote:
![]()
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|||||||||
![]() |
![]() |
![]() |
#63 | ||||
Senior Member
Iscritto dal: Jun 2003
Città: vivo in Sicilia (tra la prov. di AG e Palermo)
Messaggi: 956
|
Quote:
Non dico di non creare processi, ma di crearne uno di base che possa indifferentemente elaborare tutti i dati, se eseguito su un solo processore, oppure una porzione di essi, replicandosi automaticamente su tutti i processori disponibili, e combinando i risultati parziali (eventualmente rielaborandoli) secondo delle regole che tu hai comunque definito, senza però dover individuare esplicitamente il numero (più conveniente) di processi da creare e i processi che dovranno completare l'elaborazione. Il compilatore provvederà a creare una porzione di codice di controllo che riconosce il numero di processori e replica il processo di base suddividendo la mole di dati da elaborare tra tutti i processi, oltre che alla parte di codice corrispondente alla tua regola di coordinazione. Esempio banale: devo sommare due matrici. Il processo di base sommerà gli elementi corrispondenti di ciascuna matrice per tutti gli elementi che gli vengono assegnati; la parte di controllo verifica il numero di processori disponibili e determina il numero di elementi (e gli elementi stessi) da assegnare a ciascun processo, che sarà eseguito su ciascun processore; la regola di coordinazione sarà semplicemente "spostare i risultati parziali nella locazione di memoria prevista per quell'elemento nel risultato finale" (è la situazione più ottimistica: posso coordinare il calcolo perchè conosco esattamente il risultato finale, noto come coordination by result). Se il processore è unico, verrà creato un solo processo. Ovviamente più veloci sono le interconnessioni e migliore sarà il risultato (in termini di tempo). D'altra parte, ero partito dal presupposto che l'applicabilità di queste "teorie" va letta in chiave futuristica, per poterne valutare validità e conseguenze (detta così sembra un po' come volersi fasciare la testa prima di averla rotta... ![]() Quote:
Quote:
Quanto allo spreco di risorse con sistemi di calcolo non deterministici, ci sarebbe sotto molti punti di vista. In un certo senso sarebbe come risolvere un problema trattando i dati mediante una codifica non ragionevole, che richiede molto più spazio ma contiene in sè il risultato del problema. Sarebbe come sostituire tutti i numeri reali ad una equazione per risolverla, ma se si potesse fare contemporaneamente si giungerebbe molto rapidamente al risultato. Se gli studi su questi sistemi quantistici conducessero ad un modo per farlo, e si riuscisse a produrre ad un costo accettabile la circuiteria necessaria, che per quanto ho capito dovrebbe essere estremamente "sensibile" e poter assumere un numero elevato di stati, praticamente nello stesso istante, non sarebbe poi così male. Ovvio che oggi possiamo solo accontentarci di quello che abbiamo e magari fingere di non vedere i problemi realizzativi e sognare di poter avere un giorno tra le mani una bestia che esegue i tuoi ordini alla perfezione prima che tu abbia finito di impartirli ![]() Quote:
![]() Ciao ![]() |
||||
![]() |
![]() |
![]() |
#64 | ||
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
![]() Quote:
![]()
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
||
![]() |
![]() |
![]() |
#65 |
Senior Member
Iscritto dal: Jun 2003
Città: vivo in Sicilia (tra la prov. di AG e Palermo)
Messaggi: 956
|
Ok, farò una bella ricerca sui transputer e occam.
Per il resto, credo che potendo tornare indietro nel tempo e mostrare un desktop replacement a chi lavorava con l'ENIAC (che se non ricordo male, tra l'altro usava per i numeri una codifica ridondante a 10 bit per cifra, a causa dell'elevatissimo rumore elettrico, oltre ad essere enorme e lontano anni luce dai transistor) a qualcuno verrebbe un infarto... Probabilmente oggi siamo anni luce, tecnologicamente e forse anche quanto a conoscenze, dal poter realizzare un computer quantistico, se mai si potrà fare, però fantasticare ed esaltarsi sulle prospettive future, ogni tanto, dai che male non fa ![]() Ciao ![]() |
![]() |
![]() |
![]() |
#66 |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Posso assicurarti che sono un tipo a cui la fantasia galoppa molto (alcuni miei amici e mia moglie dicono anche troppo
![]() ![]() OK, documentati su transputer e occam, e vedrai che troverai l'argomento interessante. Se conosci qualcuno che conserva dei vecchi numeri di MC Microcomputer, materiale ne troverai a vagonate: pure la famosa rete ADPNetwork per Amiga realizzata, appunto, con delle schede con transputer per lo scambio dei dati... ![]()
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 19:30.