Newsgroup: it.comp.ia
Titolo: Cilk is a language for multithreaded parallel programming based on ANSI C !!!!!!!!!!!!!!!!!!

http://supertech.lcs.mit.edu/cilk/index.html
e' un linguaggio C ansi per il multithread e per la programmazione
parallela!!!
e' ottimo per realizzare NN o IA di vario genere, o no?
che ne dite?
fatemi sapere quello che ne pensate....
ciao
davide U

, 
udm...@tin.it
 says...

Faccio una precisazione nel caso ce ne fosse bisogno: il multithreading 
semplifica il codice ed e' una grande invenzione soprattutto per moduli 
diversi, ma NON velocizza niente, anzi, rallenta per via del context-
switching.
-- 
C++U
  Gio "FrOYd" Caturano / Zetha gameZ
 
http://www.dronez.com

 switching.
Questa precisazione e' incorretta.  In parte, l'inesattezza e' dovuta
al fatto che il termine ``multithreading'' denota molte cose diverse.
1) L'uso piu' comune di ``multithreading'' e' per denotare POSIX
   Threads o concetti simili (come i thread di Java, etc.).  In questo
   caso, piu' thread possono essere eseguiti in parallelo se
   la macchina ha piu' di un processore.  Questo e' il caso normale
   su Linux, Solaris, etc.
2) Cilk ha la sua propria nozione di thread e multithreading.  In Cilk,
   la creazione di un nuovo thread e' l'unico meccanismo per
   ottenere parallelismo (e speedup).  In Cilk, la creazione di
   un thread e il context switching richiedono pochi cicli (4-10),
   rendendo possibile la creazione di milioni di thread.  Cilk
   si occupa di distribuire questi thread ai vari processori di
   una macchina parallela.  P.es., la versione attuale di Cilk
   gira tranquillamente su 256 processori con speedup eccellenti.
3) Ci sono anche processori multithreaded, dove il context switching
   viene compiuto dall'hardware praticamente ad ogni ciclo.  Il
   motivo principale di questo design e' che il processore puo'
   continuare a lavorare mentre un thread e' bloccato per accedere
   alla memoria.
Non sono d'accordno nemmeno sul fatto che multithreading semplifichi
il codice, ma questa e' un'altra storia.  Chi e' interessato
all'argomento puo' trovare una opinione autorevole qui:
 
http://www.scriptics.com/people/john.ousterhout/threads.ps
Saluti,
Matteo Frigo

 al fatto che il termine ``multithreading'' denota molte cose diverse.
Piu' che incorretta, mi pare incompleta. Chiedo venia e mi cospargo il 
capo di cenere.
Aggiungo "quando il numero di processori e' inferiore al numero di 
thread".
In effetti, questo e' falso in quasi tutti i casi in cui la macchina sia 
stata configurata appositamente per il lavoro che deve svolgere, e vero 
nella maggioranza degli altri casi, salvo coincidenze. Almeno, nella mia 
esperienza di lavoro e' sempre stato cosi'.
Sui PC monoprocessore con SO Microsoft, poi, la mia affermazione e' 
sempre vera. Quando sono multiprocessore, se il sistema e' NT o 2000 si 
possono avere dei vantaggi abbastanza concreti, se si tratta di 9x, i 
vantaggi sono assenti o scarsi.
Cio' non toglie che il multithreading sia una grande invenzione.
Il multithreading, di fatto, semplifica la progettazione codice che 
sarebbe necessario per fare la stessa cosa senza multithreading (e senza 
parallelismo, ovviamente). Che poi in alcuni linguaggi/SO la procedura 
sia macchinosa, e' un'altra storia. Che lavorare in modo concorrente sia 
concettualmente complicato, e' ancora un'altra storia.
Spero di essermi spiegato meglio e mi scuso ancora per l'errore: 
cerchero' di stare piu' attento.


 non esiste un'hardware simile da implemetare su un normale PC ?
Non so a che punto siano, ma qualche anno fa c'erano delle soluzioni
interessanti che usavano i transputer della Inmos (si dovrebbe trovare
qualcosa con i motori di ricerca) e prevedevano anche delle schede a
transputer da inserire in un PC e relativo compilatore di linguaggio occam.
I transputer sono pensabili come nodi di calcolo (completi di processore a
diverse decine di mips e qualche mega di ram) interconnessi in un modo
qualsiasi (rete, maglia, anello ecc...) tramite 4 link a diverse decine di
megabit al sec. Il compilatore smista le diverse sezioni di un algoritmo sui
diversi nodi in modo da sfruttarne al massimo il parallelismo intrinseco (al
limite l'inizializzazione di un vettore di 100 elementi puo' avvenire in un
colpo solo se il sistema dispone di 100 transputer).
....non e' pero' una cosa molto economica... :(
ciao
Claudio


se trovo qualcosa di interessante ti faccio sapere
ciao e grazie di nuovo
davide U

 non esiste un'hardware simile da implemetare su un normale PC ?
Mi sembra una contraddizione in termini!
Se vuoi spendere ll meno posibile magari un pentiom qualchenumero da, diciamo L.
300000, con 256 cpu arrivi a ~77000000 (dicansi SETTANTASETTEMILIONI).
Se sei disposto a rinunciare a 256 e ti accontenti di 128, la differenza in
denaro me la invii?
Magasri ci mettiamo d'accordo e vengo a ritirarla io!
Scherzi a parte, potresti controllare la MicroWay che produce piataforme basate
su alpha a prezzi molto competitivi, per quello che puo' essere 'competitivo' un
alpha.
Certo, costa un po' piu' del pc di Vobis e/o ComputerDiscount.
Carlo


molto interessante!!!
grazie
ciao
davide U
http://digilander.iol.it/newtech/ailab.htm