Se connecter
Se connecter

ou
Créer un compte

ou
FR
EN

Le pub des programmeurs

  • 1 927 réponses
  • 117 participants
  • 131 681 vues
  • 130 followers
Sujet de la discussion Le pub des programmeurs
Salut :coucou: y a des programeurs sur AF si oui vous bossez sous quoi ?
Afficher le sujet de la discussion
726

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.
727

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 !
728

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
729

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 :)
730
> Miles, si t'es aventureux, j'ai annonce une version alpha de rpm pour numpy and scipy sur fedora core (5 et 6) et openSUSE (10.2) sur numpy-dev :)
731
J'ai vu :)
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 :???:
732
Oui, j'ai vu ca en checkant sur Fedora Core. J'avoue que je sais pas trop pourquoi il prend atlas. Un des problemes non resolus, c'est comment faire cohabiter mes paquets et ceux des distributions. Le probleme, c'est que je sais pas comment marchent les paquets virtuels sous rpm: tu as plusieurs paquets qui fournissent la meme dependances, par exemple libblas.so (au moins le mien et atlas); comment yum choisit quel paquet installer ? J'en sais rien. La, yum a decide de resoudre la dependance lapack avec atlas. Normalement, je me suis demerde pour prendre les compilos Fortran officiels, pour que les librairies soient compatibles entre elles. Si Atlas est compile correctement, ca devrait marcher (mais la plupart des distributions l'ont fait n'importe comment a un moment ou a un autre; Atlas est pas evident a packager, meme si les nouvelles versions de test sont quand meme beaucoup plus faciles a compiler).

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.
733
Ah oui, ça fait de la complexité en plus pour toi qui t'amuses à faire les paquets :surpris: !
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 ?
734
Hello les gens,

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

735

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.
736

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.
737
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.

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

738

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...
739
Gremlins_4u ce papier peut t'intéresser. Sinon, bah désolé d'être tombé à côté :noidea:
A man, a plan, a canal : Panama
740

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...
741
De manière plus générale, ce sont les transferts vers et depuis la CG qui sont problématiques, et pour de l'audio encore plus, puisqu'à priori il y a beaucoup de transferts.
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 -
742
Vers, je comprends pas tres bien pourquoi vers le GPU pose probleme ? Disons que tu as 50 effets a traiter en meme temps sur un GPU, a disons 100 khz / 32 bits, ca fait donc 20 Mo/s... En video, on va bien au dela. Apres, y a peut etre des problemes de latence.

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 ?
743
En regardant sur le net, je vois que ca a pas mal evolue depuis la derniere fois que je m'y suis interesse (y a un an environ): on est plus oblige d'utiliser les pixel shaders, et on peut faire directement en C (ala fftw). La, sur le forum NVIDIA, ils parlent quand meme de chiffres de malades, plusieurs dizaines de Gflop/s sur des FFT de taille raisonables (autour de 10^3). C'et le forum NVIDIA, donc bon, c'est a prendre avec des pincettes, mais quand meme...

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.
744
Hello

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

745
Ce que je comprends pas, c'est comment tu fais pour faire tes millions de fft par seconde: tu dois envoyer tes donnees par paquets de vecteurs, c'est ca ? Genre tu envoies tes millions de fft de taille 1024 par paquets de 100 ou 1000. ?

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).
746
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.

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

747

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 :oo: Pour les recentes NVIDIA, on parle quand meme de cents GFLOPS/seconde, voire plus, sur des FFT:

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...
748
J'avais loupé le truc. 100 GFLOPS c'est énorme, c'est certain.

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

749
C'est le principe de plusieurs langages de shaders, d'utiliser du C, et ceci pour nVidia ou ATI. En revanche, à priori la précision des futures cartes d'ATI - celles basées sur le R600 - est meilleure que l'architecture actuelle d'nVidia - G80 -, donc on verra bien.
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 :(
750
100 Gflops, c'est sur des fft de taille raisonnable. Le core 2 duo, qui est un excellent processeur pour le flottant, il arrivera jamais a ca (et ca depasse de beaucoup les pro tools HD :) ).

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.