Com puc aconseguir que un programa utilitzi múltiples nuclis?

Pel que sé, l'arquitectura multicorada d'un processador no afecta el programa. L' execució d' instrucció actual es gestiona en una capa inferior.

La meva pregunta és,

Tenint en compte que tens un entorn multicorat, puc utilitzar qualsevol pràctica de programació per utilitzar els recursos disponibles de manera més efectiva? Com hauria de canviar el meu codi per obtenir més rendiment en entorns multicore?

4 respostes 4

Correcte. El vostre programa no executarà cap més ràpid (excepte el fet que el nucli s' estigui manejant menys processos, atès que alguns dels processos s' estan executant a l' altra base) a menys que s' executin la puntuació. Si s'utilitza d'acordància, però, més nuclis millora el paral·lelisme actual (amb menys nuclis, la conclusió és interdir, mentre que amb més nuclis, podeu obtenir paral·lelisme entre fils).

Fer programes concurrents eficientment no és una tasca senzilla. Si s'ha fet mal, fer que el vostre programa concurrent pugui fer que sigui més lent! Per exemple, si passeu molts fils de temps en generar fils (la construcció de llegir és molt lenta), i treballeu amb una mida molt petita de bloc (de manera que la part superior de la construcció de fil domina el treball actual), o si normalment sincronitzar les dades (que no tan sols les forces per executar sèriement, sinó que també hi ha molt alt sobre ell), o si s' escriu sovint a les dades en la mateixa línia de memòria cau entre múltiples fils (que pot portar a tota la línia cau sent validada en un dels nuclis), aleshores podeu fer malbé seriosament el rendiment amb la programació recurrent.

També és important adonar-se que si teniu N nuclis, que no volen dir que tindreu una velocitat de N. Aquest és el límit teòric de la velocitat. De fet, potser amb dos nuclis és el doble de ràpid, però amb quatre nuclis que podria ser tres vegades més ràpid, i després amb vuit nuclis es tracta de tres i mig vegades més ràpid, etc. El vostre programa és realment capaç d'aprofitar-se d'aquests nuclis s'anomena l'esclobilitat paral· lela. Sovint la comunicació i la sincronització permeten una velocitat lineal, tot i que, en l'ideal, si podeu evitar la comunicació i la sincronització tant com sigui possible, es pot apropar a lineal.

No seria possible donar una resposta completa sobre com escriure programes paral· leles eficients en el flux d' apilament. Aquest és realment l'assumpte d'un com a mínim (probablement diversos cursos de ciències d'ordinadors). Suggereixo que vostè signi per un curs o compri un llibre. Et recomanaria un llibre si sabés d'una bona, però el curs dels algoritmes de paralle no tenia un llibre de text per al curs. També podríeu estar interessats en escriure un grapat de programes usant una implementació sèrie, una implementació paral· lela amb multifils (polítics, fils de fil, & etc;), i una implementació paral· lela amb el missatge que passa (com amb l'Haop, Apache Spark, flux de dades en Cloud, asíncron RPP, etc.), i després mesurar el seu rendiment, variable el nombre de nuclis en el cas de les implementacions paral· leles. Aquesta era la major part del curs que treballen per als meus algoritmes paral·lels i poden ser molt inspiradors. Alguns càlculs podeu provar d' incloure el càlcul P. usant el mètode Monte Carlo (això és trivialment paral· lelizable, suposant que podeu crear un generador de números aleatoris on els números aleatoris generats en diferents fils són independents), realitzant la matriu de multiplicar, informàtica la fila echelon, sumant el quadrat del nombre 1... N per un nombre molt gran de N, i estic segur que podeu pensar en altres.

No sé si és el millor lloc possible començar, però m'he subscrit a la font d'articles de Xarxa del programari IntelComment Fa un temps i han trobat moltes coses interessants allà, presentades de manera bastant senzilla. Podeu trobar alguns articles molt bàsics sobre conceptes fonamentals de la informàtica paral· lela, com això . Aquí Teniu una immersió ràpida cap a openMP que és un enfocament possible per a començar a paral· lelar les parts més lentes de la vostra aplicació, sense canviar la resta. (Si aquestes parts presents paral· lelisme, és clar.) Comprova també Guia d' Intel·ligència per a desenvolupar aplicacions multifiles . O simplement aneu a navegar. la secció d' articles , els articles no són també molts, així que podeu esbrinar ràpidament què us convé. També tenen fòrum i setmanalment webcastCity name (optional, probably does not need a translation) Parlant paral· lela.

Sí, simplement afegiu més nucli a un sistema sense alterar el programari no us donarà resultats (amb excepció del sistema operatiu pot planificar múltiples processos concurrents en diferents nuclis).

Per a que el vostre sistema operatiu usi els vostres múltiples nuclis, heu de fer una de dues coses: incrementar el comptador de fils per procés, o incrementar el nombre de processos executant- se alhora (o ambdues coses!)).

Entendre la base de manera efectiva, però, és una bèstia d'un color diferent. Si passes massa temps sincronitzant l'accés de dades compartides entre fils/ processos, el nivell d'acordància tindrà un cop colpejat com a fils d'espera l'un sobre l'altre. Això també assumeix que teniu un problema/computació que pot ser paral· lelament paral· lelment, atès que la versió paral· lela d' un algoritme és molt més complexa que la versió seqüencial.

Això va dir, especialment per a càlculs de CPU amb unitats de treball independents l'un de l'altre, segurament veureu una velocitat lineal mentre llences més fils al problema. A mesura que afegiu segments de sèrie i blocs de sincronització, aquesta velocitat tendeix a disminuir.

Els càlculs de gran intensitat solen pagar el pitjor d' un entorn multifil, atès que l' accés a l' emmagatzematge físic (especialment si està en el mateix controlador, o el mateix suport) també és sèrie, en aquest cas el fil serà més útil en el sentit que allibera els teus altres fils per a continuar amb la interacció de l' usuari o les operacions basades en CPU.

Artículos Relacionados:

- Processador -

Esta web usa cookies, puedes ver la política de cookies, aquí -
Política de cookies +