Libreria di programmazione parallela? (+ alcune caratteristiche)

8

Nota : si tratta di un reposting in quanto la domanda è stata considerata non adatta al forum Stack Overflow e avrebbe dovuto essere pubblicata qui. L'argomento originale è .

Mi piacerebbe parlare di multithreading, parallelismo e librerie disponibili oggi per realizzare quel lavoro. Mi chiedo in particolare se esiste già una libreria facile da usare per ottenere questo concetto (dato sotto), o se dovrebbe essere scritta e quanto difficile sarebbe.

Gli scopi della libreria che sto cercando:

  • accessibile alla maggior parte degli sviluppatori, non solo agli ingegneri o ai laureati (questo dovrebbe significare che gli sviluppatori VOGLIONO usarlo, non averne paura)
  • disponibile per gli sviluppatori C ++
  • portable (inizia con Windows, Mac OS X e Linux, quindi estendi ai dispositivi mobili)
  • leggero
  • facile da usare (correlato all'accessibilità)

Le funzioni più importanti che sto cercando:

  • parallelismo delle attività
  • cancellazione delle attività (in modo soft and brusco)
  • dipendenze delle attività

Le librerie correlate esistenti :

  • Thread Building Blocks : molto complicato da usare, e una licenza piuttosto restrittiva (GPL / commerciale), è l'unica libreria che ho trovato e che include tutte le funzionalità che sto cercando
  • Grand Central Dispatch : attualmente non portatile, non troppo complicato, nessuna cancellazione dell'attività (una volta avviata), nessuna dipendenza delle attività, nessun supporto di dipendenza automatico (solo manuale)
  • PFunc : solo Unix, ancora un po 'complicato, nessuna dipendenza dall'attività, nessuna cancellazione dell'attività
  • Libreria parallela attività Microsoft : solo piattaforma MS e .NET, nessuna dipendenza da annullamento, restrizione e attività manuali rigide (un'attività non può essere attivata più di un'altra attività)
  • OpenCL : attualmente non disponibile su tutte le piattaforme, non molto più di una libreria di task parallela GPU (non di livello elevato come vorrei)
  • OpenMP : ampiamente supportato tranne le versioni gratuite di Visual Studio, nessuna cancellazione delle attività e dipendenze delle attività automatiche

Quindi cosa ne pensi di tutti questi? Perché pensi che ci siano così poche librerie corrispondenti a questi bisogni? O mi sono perso qualche grande biblioteca? E pensi che significherebbe troppo lavoro per raggiungerne uno? O non abbastanza interessante? Nota che i difetti che ho scritto sono quelli che ho scoperto con alcune ricerche, non sono un esperto in nessuna di queste librerie.

Lo scopo finale di questa libreria, anche se è piuttosto un sogno, sarebbe programmare in modo parallelo come facilmente con la programmazione sequenziale.

Ceylo

    
posta Ceylo 14.08.2011 - 19:38
fonte

1 risposta

6

TBB è praticamente tutto ciò che si avvicina. boost::thread è troppo basso. A proposito, stai cercando nel posto sbagliato presso la TPL - Microsoft spedisce una libreria separata chiamata PPL per il codice nativo. Naturalmente supporta solo Windows.

Tuttavia, se trovi che TBB è complicato da usare, mi chiedo se gli sviluppatori a cui stai pensando siano effettivamente in grado di creare applicazioni parallele. TBB ha una delle interfacce più amichevoli con cose semplici come parallel_for_each . Se non riesci a far fronte a un paio di lambda, trovo difficile vedere come farai fronte alla concorrenza.

    
risposta data 14.08.2011 - 19:53
fonte