Le pub des programmeurs
- 1 927 réponses
- 117 participants
- 131 681 vues
- 130 followers

Anonyme



Pov Gabou

Citation :
Comme pour matplotlib
Oui, sauf que scipy n'a aucune dependance supplementaire par rapport a numpy. Pour compiler, ca reste le probleme fondamental, et si numpy est present, le probleme est regle.
Citation :
mais j'utilise peu l'interactivité de la l'interpréteur, les 3/4 du temps, c'est directement des gros modules que j'exécute ou que je code, et là, IPython n'est pas trop adapté.
Oui mais si tu veux corriger un bug dans un script, c'est nettement plus pratique que l'interpreteur python de base. Typiquement, matplotlib met un certain temps a se charger quand meme, et ca me fait chier d'attendre 10 s a chaque fois pour corriger une pauvre erreur de syntaxe; la, la commende %run d'ipython permet de recharger a la volee, de voir tes variables, etc... Bref, ca utilise les qualites d'introspection de python, et c'est un peu l'interet de la chose.

Dr Pouet

Citation : La plupart des programmeurs UNIX n'aiment pas beaucoup les threads.
Je pense même que beaucoup de programmeurs expérimentés s'en méfient fortement ! Il y avait un célèbre article de John Ousterhout (créateur de tcl/tk) sur ce sujet. En fait la plupart du temps pour que la conception soit bonne il faut un méthode + un maximum de minutie (et aucun développeur inexpérimenté dans l'équipe). autant dire que c'est assez rare.
Citation : Un systeme avec beaucoup de dependances, la encore, c'est un systeme qu'execrent la culture Unix en general. Apres, je veux bien croire qu'il y ait des programmes ou tu n'aies pas le choix
Effectivement le problème c'est quand tu n'as pas le choix, par exemple un système comme celui de la SNCF ou tu as des serveurs centraux, des clients lourds au quatres coins du pays, un lien avec les services minitel + internet, des liens avec des services externes (sous-traitance, partenaires commerciaux...). Quand tu changes une fonctionnalité importante, ça entraîne des modifs dans tous les coins, et rien que le déploiement de la nouvelle version est un problème complexe en soi.
Citation : Mais quand tu vois le noyau linux, Gnome qui en moins de 10 ans a une interface et une coherence que mac n'a plus, ou debian qui propose quand meme plus de 10000 programmes/librairies, compilables sur une dizaine d'architectures, et installable presque 100 %, y a quand meme de quoi etre impressionne, non ?
Bien sûr ! En fait, je n'ai peut-être pas été clair, mais je ne critique pas du tout l'open-source. Je critique uniquement les "évangélistes" qui de temps à autres inventent une méthode (qui peut avoir des qualités indéniables) et semblent prétendre qu'elle s'applique avec succès à tous les besoins. C'est cette argumentation "il existe une méthode qui est la meilleure quele que soit le type de projet" que je critique. Et l'exemple de la navette, comme celui de la SNCF, sont des cas où une démarche fortement itérative est inadaptée.
Citation : Ca represente des millions et des millions de lignes de code, toutes dependantes, et ca marche nickel. Mais la encore, Debian a des policy tres strictes, je sais pas si on peut vraiment encore parler de bazaar.
Nan mais dans l'article de Eric Raymond, le bazar désigne la méthode de développement, et pas du tout le résultat obtenu. Et puis c'est pas péjoratif, c'est juste un peu provocateur !

Dr Pouet

Citation : Je suis tjs aussi paumé dans vos discussions mais si vous pouviez me donner des articles de réf sur le net pour la prog parrallele, multithread, ainsi que pour la prog embarqué, ca serait gentil
Houla, c'est vaste tout ça ! En plus l'embarqué, il y en a 36.000 sortes !
Un point de départ : https://fr.wikipedia.org/wiki/Programmation_informatique
Si l'anglais ne te rebute pas, la version anglaise de la wikipedia est souvent plus riche ; et souvent les deux sont complémentaires.
Sur la programmation parallèle : https://fr.wikipedia.org/wiki/Programmation_concurrente , tu peux aussi faire tes propres essais en créant plusieurs threads en java (ou n'importe quel langage) !
Tu peux aussi te promener ici : http://c2.com/cgi/wiki?ProgrammingParadigm

Pov Gabou

Citation :
Je pense même que beaucoup de programmeurs expérimentés s'en méfient fortement ! Il y avait un célèbre article de John Ousterhout (créateur de tcl/tk) sur ce sujet. En fait la plupart du temps pour que la conception soit bonne il faut un méthode + un maximum de minutie (et aucun développeur inexpérimenté dans l'équipe). autant dire que c'est assez rare
Les thread vont un peu a l'encontre de la culture unix en general, car entre autre les UNIX ont des processus legers (vs NT ou VMS, par exemple: la creation de processus est au moins un ordre de grandeur plus longue que sous linux sur la meme machine; pour linux au moins, cette duree a diminue dans le temps), etc...
Je pense que pour les thread et le concurrent en general, on est tout simplement en manque d'outils: on en est encore a gerer ca a la main, un peu comme le C le faisait pour la memoire vive. C'est que recemment que l'on commence a voire des outils apparaitre dans l'industrie (erlang, etc...); il y a aussi google qui finalement est techniquement fondamentalement base sur la programmation concurrent (mapreduce). Ca prend du temps a faire correctement, tout simplement.
Citation :
Nan mais dans l'article de Eric Raymond, le bazar désigne la méthode de développement, et pas du tout le résultat obtenu. Et puis c'est pas péjoratif, c'est juste un peu provocateur !
Non mais je sais bien, je l'ai lu le bouquin, hein


Pov Gabou



miles1981


Mais je viens de voir qu'il y a une version pour FC6 de scipy, et je ne comprend pas trop l'histoire d'ATLAS. J'ai installé atlas avec sse2 puis numpy et il m'a pris la bonne version de la bibliothèque, avec yum

Audio Toolkit: http://www.audio-tk.com/

Pov Gabou

Comme ce sont des librairies dynamiques (je peux te dire que j'en ai chie pour faire ces put* de librairies dynamiques a partir des sources LAPACK, les makefile sont tout pourris, et gcc 4 pour fortran est plutot recalcitrant par rapport), et si c'est bien foutu, normalement, le loader va prendre les version atlas avant les autres.
En fait, sous la plupart des Unix, le loader a meme une capacite dites hwcap, eg il detecte au runtime si ton CPU supporte certains trucs styles sse, sse2, etc..., et charge automatique. Par exemple, sous debian, si tu regardes ce que le loader regarde par defaut pour libblas.so, tu as:
ldconfig -p | grep blas
libgslcblas.so.0 (libc6) => /usr/lib/libgslcblas.so.0
libgslcblas.so (libc6) => /usr/lib/libgslcblas.so
libf77blas.so.3 (libc6, hwcap: 0x0000000004000000) => /usr/lib/sse2/libf77blas.so.3
libf77blas.so.3 (libc6) => /usr/lib/libf77blas.so.3
libf77blas.so (libc6, hwcap: 0x0000000004000000) => /usr/lib/sse2/libf77blas.so
libf77blas.so (libc6) => /usr/lib/libf77blas.so
libcblas.so.3 (libc6, hwcap: 0x0000000004000000) => /usr/lib/sse2/libcblas.so.3
libcblas.so.3 (libc6) => /usr/lib/libcblas.so.3
libcblas.so (libc6, hwcap: 0x0000000004000000) => /usr/lib/sse2/libcblas.so
libcblas.so (libc6) => /usr/lib/libcblas.so
libblas.so.3 (libc6, hwcap: 0x0000000004000000) => /usr/lib/atlas/sse2/libblas.so.3
libblas.so.3 (libc6) => /usr/lib/atlas/libblas.so.3
libblas.so.3 (libc6) => /usr/lib/libblas.so.3
libblas.so (libc6, hwcap: 0x0000000004000000) => /usr/lib/atlas/sse2/libblas.so
libblas.so (libc6) => /usr/lib/atlas/libblas.so
Si tu as le hwcap correspondant (ici le flag correspond a sse2), il va aller prendre libblas.so.4 dans /usr/lib/sse2 au lieu de /usr/lib.

miles1981


Quand tu te poses la question de pourquoi il prend atlas, c'est par rapport à la version sse2 ? J'imagine que c'est parce que dans les rpm, il n'y aaucun moyen de mettre une affinité selon le processeur ?
Audio Toolkit: http://www.audio-tk.com/

cptn.io

Je viens à vous pke c l'endroit le mieux indiqué pour parler de cela :
Je me demande si ca serait possible d'utiliser les stream processor des nouvelles cartes graphiques pour utiliser ca comme des dsp pour faire tourner les vst dessus ... Ca permettrait de pas avoir à dépenser 10000 euros en dsp protools ;)
Est-ce que ca serait possible de faire un host vst qui fasse la "translation" pour que ce soit les CG qui les prenne en charge ???
cptn.io

Pov Gabou

Citation :
Quand tu te poses la question de pourquoi il prend atlas, c'est par rapport à la version sse2
Non. Quand j'ai fait mon truc sur le system de build farms, j'ai package blas et lapack, puis fait dependre numpy et scipy de libblas.so and liblapack.so. Comme plusieurs paquets fournissent ces librairies (entre autre atlas), les outils de gestion de dependance ont leurs algo pour les resoudre, et visiblement, ils sont tous differents. Peut etre que j'ai pas fait mon truc correctement, aussi, je sais pas. Rpm est vraiment chiant a ce niveau, t'as aucun outil pour forcer quoi que ce soit. Sous debian, tu as une policy de packaging tres stricte (style pas de binaire sans man, etc...), avec de nombreux outils pour verifier que ton paquet suit la policy. Sous rpm, rien du tout; comme en plus chaque distribution rpm est differente (genre opensuse, le compilo fortran, c'est gcc-fortran, mais FC, c'est gcc-gfortran....), c'est la merde.
En fait, ce qui fait la qualite de debian, c'est entre autre cette histoire de policy. Ca donne vraiment des paquets de bien meilleure qualite.

Pov Gabou

Citation :
e me demande si ca serait possible d'utiliser les stream processor des nouvelles cartes graphiques pour utiliser ca comme des dsp pour faire tourner les vst dessus ... Ca permettrait de pas avoir à dépenser 10000 euros en dsp protools
D'apres ce que j'ai compris, il y a plusieurs problemes avec le GPGU pour la musique. Le premier probleme, c'est que le bus memoire est pas optmise du tout dans le sens carte -> CPU, et c'est pourtant un parametre crucial, surtout pour le temps reel. Il y a aussi des problemes de precision, je crois.
Sinon, les dsp protools, niveau puissance, faut bien voir que c'est ridicule. N'importe quel CPU recent eclate plus que largement les systems pro tools les plus chers.

nonconforme

Les commandes bas-niveau des GPU (calcul vectoriel, matriciel par exemple) n'ont rien à voir avec les besoins de l'audio.
J'ai voulu me lancer là-dedans à une époque et tous ceux qui ont testé la solution de décharger une partie du traitement sur les GPU m'ont découragé de le faire, vu le peu de performances gagné (par rapport à un upgrade de CPU PC par exemple). Je n'ai plus en tête les raisons du pourquoi du comment, mais en faisant une petite recherche sur le net...
Si tu veux quand même t'amuser tu peux chercher sur le net "GPU shadder".
Affiliation : Dirigeant Fondateur d'Orosys - Two notes Audio Engineering

Pov Gabou

Citation :
Tu sais ce que c'est les DSP protools HD ? Parce qu'il y en a 9 par carte, et là moi, comme ça, je peux pas dire si un PC suivra ou non.
J'ai pas suivi les dernieres cartes, c'est vrai; mais si j'en crois P. Davis, qui sait quand meme un minimum de quoi il parle a priori, c'est pas super terrible niveau puissance. En tout cas, pour le meme prix, tu peux avoir plus puissant, ca c'est sur. On sait tres bien quelle est la premiere raison pour les DSP de toute facon.
Pour le GPGPU, j'ai eu la meme vague impression que toi quand je m'y etais interesse quand ca commencait a etre a la mode (2005-2006 ?). C'est tres puissant dans certains cas de calcul scientifique, quand meme:
http://www.thinkingparallel.com/2007/03/25/is-it-time-to-throw-away-your-supercomputers-or-how-foldinghome-is-dominated-by-the-new-kids-in-town/
J'avais un peu discute du truc avec un collegue qui etait dans les jeux video avant, et d'apres lui, le probleme majeur pour le temps reel, c'est le bus memoire qui est tres lent de la carte vers le CPU. Pour les graphiques, tu t'en fous, puisque tout va sur l'ecran et ne repasse jamais par le CPU, mais pour l'audio...

bigbill



Pov Gabou

Citation :
Tu sais ce que c'est les DSP protools HD ?
J'ai cherche sur le net, pas moyen d'avoir confirmation. Les premiers HD etaient des 56k, je sais pas si c'est toujours le cas. Les plus puissants, d'apres freescale.com, font dans les 250 MMACs. Donc avec 9 DSP, on atteint les 2000 MMAC, ce qui est pas mal, mais a priori n'enfonce pas largement les CPU les plus recents.
Apres, bien sur, c'est plus facile de controler les perfs sur DSP que sur soft "natif", mais bon...

miles1981

Ensuite, la précision a été améliorée sur certains CG, mais ça ne vaut pas encore la précision des CPUs. De plus, certains unités de calculs sont "encore" en 24 bits, d'autres en 32bits, pas la même précision, d'autant qu'on passe progressivement vers du 64 en audio - cf VST3 -
Audio Toolkit: http://www.audio-tk.com/

Pov Gabou

Le fait que l'on puisse faire du calcul numerique type BLAS/LAPACK/FFT sur GPU me laisserait quand meme supposer que le probleme n'est pas filer beaucoup de donnees au GPU, non ?

Pov Gabou

http://forums.nvidia.com/lofiversion/index.php?t29951.html
http://developer.download.nvidia.com/compute/cuda/0_8/NVIDIA_CUFFT_Library_0.8.pdf
Mais comme j'y connais rien en carte graphique, je vois pas tres bien les trucs qui coincent.

cptn.io

Effectivement y a eu pas mal de changement depuis qqs temps, Nividia ayant sorti le CUDA qui permet de coder directement en C.
Par rapport à la précision, les chips g80 qui sont les premiers chez Nvidia à avoir la structure unifiée propre à faire ce qu'on veut faire ont la limitation de ne pas avoir de type long si j'ai bien compris, mais les prochaines générations auront cette possibilité.
ATI propose un peu la meme chose avec le CTM mais c'est de la programmation de bien plus bas niveau et ils ont des cartes graphiques modifiées exprès pour ca : https://en.wikipedia.org/wiki/Close_to_Metal .
Les chiffres qu'on te donne sont véridiques, j'ai meme vu des tests approuvés je ne sais plus où qui montraient qu'on peut monter jusqu'au téraflop avec des cartes graphiques en SLI .
Mon problème est plutot que on ne peut pas réécrire tous les vst pour les adapter au GPU.
Il faudrait donc un host vst qui fasse le lien sans induire de pertes de perf trop importantes.
Qu'en pensez vous ? C'est faisable ? Ou le fait de faire de la traduction va n'apporter aucun gain de perfs ?
cptn.io

Pov Gabou

Citation :
Mon problème est plutot que on ne peut pas réécrire tous les vst pour les adapter au GPU.
Il faudrait donc un host vst qui fasse le lien sans induire de pertes de perf trop importantes.
On pourrait imaginer un truc genre machine virtuelle JIT, cad a compilation a la volee du code pour GPU. C'est d'ailleurs tres proche de ce que fait Mac OS X en utilisant llvm (un compilo JIT pour optimiser les shaders openGL)
http://lists.cs.uiuc.edu/pipermail/llvmdev/2006-August/006492.html
Mais bon, c'est sacrement balaise. Pour qqn d'interesse, ce serait extremement interessant d'essayer ce genre de techniques pour des trucs genre synthes modulaires (j'ai entendu dire que reaktor utilisait aussi certaines techniques JIT, mais evidemment, jamais vu de details).

nonconforme

Un truc, mais j'ai pas tout lu donc j'ai pu le louper : si le GPU ne prend pas en charge en natif des données AU MOINS 32 bits flottants, faut oublier. En typiquement en vidéo on travaille avec des entiers au plus 16 bits.
Affiliation : Dirigeant Fondateur d'Orosys - Two notes Audio Engineering

Pov Gabou

Citation :
Y'a quand même un truc qui coince : pourquoi faire faire un truc à la CG qui n'est pas prévu d'avance, se prendre le chou à l'extrême, quand un malheureux upgrade de CPU fait la même chose pour moins cher.
Ben les ordres de grandeur sont carrement pas les memes

http://www.thinkingparallel.com/2007/02/17/nvidia-releases-cuda-and-reinvents-stream-processing/
Je reciste ce lien (deja donne pour la programmation parallele), parce que c'est assez technique globalement (le site, pas le lien).
Le gros plus de CUDA, c'est que c'est du C, et que tu n'as pas besoin de t'y connaitre en programmation de carte: c'est fondamentalement different de ce que j'avais vu il y a meme pas un an. Typiquement, nvidia propose une FFT avec une API semblable a fftw. L'autre interet, c'est qu'on arrive quand meme a une sacre barriere sur les CPU avec les multi core, alors que les GPU ont une architecture qui aide beaucoup (pleins de threads en parallele de maniere un peu transparante).
Si j'etais pas pauvre, j'acheterais un nouvel ordi avec une carte graphique qui le supporte, ce que j'en ai vu aujourd'hui en parcourant le net me donne bien envie, beaucoup plus que ce que j'avais vu les autres fois...

nonconforme

Par rapport à un core 2 duo qui annonce 50GFLOPS maxi, ça commence à devenir intéressant.
Mais pas si la carte graphique coûte le prix de 4 core 2 duo... ;)
Affiliation : Dirigeant Fondateur d'Orosys - Two notes Audio Engineering

miles1981

En tout cas, à moins d'une machine virtuelle qui aura de toute manière besoin de savoir d'une manière ou d'une autre ce qu'elle peut paralléliser - et tout en audio ne peut pas être parallélisé -, utiliser le GPU pour tous les VSTs est impossible

Audio Toolkit: http://www.audio-tk.com/

Pov Gabou


Un truc qui promet beaucoup, c'est qu'alors que pour les CPU, il va falloir programmer en parallele, les GPU ont un modele plus simple pour programmer du numerique (les GPU utilisant les multi core depuis bien plus longtemps que les processeurs). Et la puissance des GPU evolue beaucoup plus vite que les CPU, aussi.
- < Liste des sujets
- Charte