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/