Deutsch English Français Italiano |
<v9nd8q$3ii7r$1@paganini.bofh.team> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!3.eu.feeder.erje.net!2.eu.feeder.erje.net!feeder.erje.net!newsfeed.bofh.team!paganini.bofh.team!not-for-mail From: Francois LE COAT <lecoat@atari.org> Newsgroups: fr.comp.sys.atari Subject: Re: Threads vs Process Date: Fri, 16 Aug 2024 13:30:34 +0200 Organization: To protect and to server Message-ID: <v9nd8q$3ii7r$1@paganini.bofh.team> References: <v71gat$aj8p$1@dont-email.me> <v9fojn$2n22o$1@paganini.bofh.team> <v9fqr5$12bq$1@news.usenet.ovh> <v9fv26$2nd94$1@paganini.bofh.team> <QHmHcgZ1wpB0WQGUWir7UJkc0BU@jntp> <v9inhr$30tgg$1@paganini.bofh.team> <LPj-LG68xkkv2S1Cv5zPLRuBONE@jntp> <3kFmA5w1Ga-hCPXht5gTT6S-Amw@jntp> <6sERMUni4sfwXdzWb8aTSFjGgPs@jntp> <v9kvud$39jll$1@paganini.bofh.team> <dZ4ulMH--zZhztjBb2gnZJCF8oc@jntp> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: quoted-printable Injection-Date: Fri, 16 Aug 2024 11:30:34 -0000 (UTC) Injection-Info: paganini.bofh.team; logging-data="3754235"; posting-host="a22rm1X6kIIqr1T+AUzo+w.user.paganini.bofh.team"; mail-complaints-to="usenet@bofh.team"; posting-account="9dIQLXBM7WM9KzA+yjdR4A"; User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Firefox/91.0 X-Notice: Filtered by postfilter v. 0.9.3 Bytes: 5045 Lines: 103 Salut, OL =E9crit=A0: >>>>>>> Et moi je te r=E9pond que dans le monde moderne sur une machine d= e=20 >>>>>>> bureau actuel le parall=E8lisme pour faire du calcul (on parlait = >>>>>>> bien de cela il me semble) se fait par thread pas par process,=20 >>>>>>> faudrait te mettre =E0 jours. >>>>>> >>>>>> Bien pour faire du traitement d'images, et de la vision artificiel= le, >>>>>> qui sont des calculs assez complexes, principalement sur des entie= rs, >>>>>> j'utilise les ressources parall=E8les des machines multi-coeurs, e= n >>>>>> lan=E7ant des processus concurrents. Il suffit souvent de d=E9coup= er les >>>>>> images, et de lancer des calculs identiques, sur des morceaux=20 >>>>>> d'images, >>>>>> et de regrouper les calculs sur les diff=E9rents morceaux ind=E9pe= ndants. >>>>> >>>>> Effectivement tu peux faire comme cela, est-ce pour autant le plus = >>>>> efficace ? >>>>> Non et de tr=E8s loin.=20 >>>> >>>> Tout d=E9pend le type de calcul, cette m=E9thode rustique peut dans = >>>> certains cas convenir. Mais c'est bien ce qu'elle est : rustique. >>> >>> Oui rustique >> >> Mais =E7a marche partout, et c'est totalement portable d'un Unix =E0 u= n >> autre, puisque j'utilise le m=EAme code sur freeMiNT, Solaris, macOS e= t >> GNU/Linux. Il n'y a pas de biblioth=E8que d=E9di=E9e =E0 utiliser, et = c'est >> le syst=E8me qui s'occupe de r=E9partir la charge de calcul, sur le ou= les >> processeurs pr=E9sents sur la machine. C'est un fondement de Unix avec= >> le multit=E2che pr=E9hemptif, qui permet de g=E9rer un nombre arbitrai= re de >> processeurs. On atteint jamais strictement la charge maximale de ou de= s >> processeurs, mais la commande syst=E8me `time` permet de v=E9rifier qu= e l'on >> approche les 100% de charge avec un CPU, les 200% avec deux etc. Je >> ne suis pas s=FBr que l'on aie une m=E9thode aussi portable et univers= elle >> en utilisant des threads. C'est tr=E8s simple =E0 mettre en oeuvre, >> ind=E9pendamment du nombre de processeurs. Pourquoi se compliquer la v= ie, >> =E0 =E9crire un code explicitement parall=E8le ? C'est compl=E8tement = intuitif ! >=20 > Dans ton fork tu fais quoi au juste dans ce cas ? Un exec quelque chose= =20 > o=F9 tu fais tourner le doublon du p=E8re? >=20 > Bien sur cela fonctionne mais est ce pour autant tr=E8s efficace ?=A0 E= nfin=20 > pas bien grave, l'optimisation est un concept tr=E8s abstrait il me sem= ble=20 > pour toi. J'ai d=E9j=E0 publi=E9 ici un exemple d'utilisation de fork(), que tu n'a= s pas compris. On ne va pas recommencer =E0 en discuter. Tu ne connais pas cett= e fonctionnalit=E9 parall=E8le d'Unix. C'est pourtant compl=E8tement fondam= ental Je vais te donner un exemple d'utilisation avec un script shell ... " #!/bin/csh -f while(!(-e endtprop)) (./simutpro $1\.ppm ima1h.ppm v tpro >& out_v) >& processv & (./simutpro $1\.ppm ima1h.ppm h tpro >& out_h) >& processh & wait cat processh processv >>process =2E/center $1 ima1h tpro >>process end " Je lance deux instances de `simutpro` avec des images diff=E9rentes, en redirigeant les sorties, en "background" ce qui est fait par le "&" final. J'attends que les deux programmes se finissent par `wait`. Je regroupe les r=E9sultats sur les deux images avec le programme `center= ` Puis j'it=E8re tant que le fichier "endtpro" n'est pas existant. Tu dis que les processus ne sont pas efficace, parce que =E7a te passe nettement au dessus de la t=EAte ... C'est pourtant le B.A.BA de Unix. =C7a marche avec freeMiNT, et sans thread ! --=20 Fran=E7ois LE COAT Auteur de Eur=EAka 2.12 (Grapheur 2D, Modeleur 3D) https://eureka.atari.org/