Se connecter
Se connecter

ou
Créer un compte

ou
Agrandir
Les Mains dans le Cambouis
Bidouille & Développement Informatique

Le pub des programmeurs

  • 1 927 réponses
  • 117 participants
  • 123 874 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
1631
1632
Sinon, la bible :

4158Y9604PL.jpg

"Le" Stevens.
On le voit même dans Wayne's World 2, c'est dire.
1633
Citation de EraTom :
les langages au niveaux

Sous-entendrais-tu que ceux qui sont proches du hardware n'ont pas le niveau ? :oops2:

Citation de redpill :
pourquoi passer par arduino et pas par le processeur directement ?

Tu parles de la carte ou de l'environnement de programmation ?
- Pour la carte, c'est sans doute pour une question d'IO. Sur un PC moderne, point de port série ou de port parallèle avec lequel on peut bidouiller. Avec un microcontrôleur, tu fais tes routines d'interruption en fonction de ce que tu branches sur les IO sans devoir passer des couches et des couches de logiciel système.
- Pour l'environnement, bah c'est surtout le bootloader qui est pratique, le reste c'est du C avec une chaîne de cross-compil GNU et quelques librairies qui facilitent les IO. Rien n'impose de se limiter à ca.

Citation de tropdeg' :
man 2 select

Oui, quand on a un OS Posix. C'est rarement le cas sur un microcontrôleur.
1634
x
Hors sujet :
Ah oui, elle n'est pas mal celle-là...
1635
Tiens je me posais une question il n'y a pas longtemps avec un pote : Qu'est ce qui serait le plus performant entre un FPGA et un GPU ? (en prenant un truc qui soit facilement adaptable sur les deux types d'architectures comme des FFT par exemple) sur des critères genre la rapidité par opération par exemple (je ne sais pas si c'est très clair dit comme ça) il y a des gens qui ont une idée ?
1636
Le GPU sera plus rapide, l'avantage du FPGA, c'est le fait qu'il peut être reconfiguré pour un algorithme particulier. Mais en fin de compte, on utilise des FPGA pour concevoir les GPUs "lents", les débugger avant d'en faire des ASIC. Donc pour qqch qui est déployable sur les 2 plateformes, le GPU aura en général l'avantage.
Maintenant, pour des algos qui ne sont pas parallèles, le FPGA aura un avantage car on peut designer directement par exemple un Newton Raphson et non pas l'émuler comme sur un GPU.
1637
Je suppose que ça dépend d'une part des puces comparées, et d'autre part du programme qu'on fait tourner dessus.

Au taf des collègues bossent pas mal avec des GPUs : le gros avantage c'est la parallélisation (1 GPU = des centaines, voir des milliers de petits coeurs tournant en parallèle), le gros inconvénient c'est que c'est assez compliqué à programmer et à optimiser du coup : découpage des algos en petites tâches, gestion du parallélisme (synchro, priorités ...) et gestion des transferts de données entre les mémoires respectives du CPU et des GPUs ...

Donc en gros un GPU va permettre des gains de perfs uniquement si le programme se prête à cette approche particulière.

Je ne connais pas les FPGA (au delà du principe dans les grandes lignes) mais je suppose qu'on pourrait probablement en dire autant (?)

Donc à partir de là, les comparaisons générales de perfs entre des matos aussi différents n'ont pas beaucoup de sens car ça dépend de ce qu'on fait tourner dessus.

Comme je dis toujours : en informatique, tout dépend du contexte, il n'y a pas de bonnes ou de mauvaises solutions dans l'absolu, seulement des solutions plus ou moins adaptées à un problème donné.

[ Dernière édition du message le 18/03/2017 à 13:55:17 ]

1638
Citation :
Donc à partir de là, les comparaisons générales de perfs entre des matos aussi différents n'ont pas beaucoup de sens car ça dépend de ce qu'on fait tourner dessus.

Complètement. Et d'ailleurs j'aurais plutôt dit que sur des opérations simples on ira plus vite avec un FPGA, cf les test AF de l'interface Antelope Audio.

Dans le cas d'un FPGA on va "dessiner" (désormais par blocs) un circuit, tandis qu'avec un GPU on écrit du code, ce qui sera plus laborieux pour des opérations simples (et évidemment beaucoup plus "faisable" pour des opérations complexes).
1639
Ca dépend énormément des algorithmes qu'on fait avec, et les critères de choix sont complexes : type de parallélisation, localité de chaque traitement (nombre d'IO ou d'accès mémoire par calcul), dépendances de données, calculs en virgule fixe ou flottante, contraintes de consommation ... franchement on ne peut pas dire que l'un est meilleur que l'autre en général.

Un FPGA aura comme avantages le fait de concevoir un circuit réellement optimisé pour le traitement à réaliser, des IO très rapides directement sur la puce (pas besoin de faire des aller-retours sur le PCIe, d'ailleurs il n'y a pas besoin de PC à côté), beaucoup de ressources câblées (Blocs DSP, mémoires, interfaces, et même processeurs) et une consommation électrique bien plus faible qu'un GPU.

Depuis une bonne vingtaine d'années, les FPGA se programment à l'aide de languages de description de matériel, tels que VHDL. De plus en plus d'outils permettent de les programmer en C (avec des règles particulières, ca s'appelle "High Level Synthesis" et ca marche de mieux en mieux). Il est désormais erroné de cantonner les FPGA au prototypage d'ASICs : outre les productions en petites séries, ils sont maintenant de plus en plus utilisés comme co-processeurs dans les supercalculateurs.
Pour des applications particulières on peut même être amené à recréer une sorte de GPU avec un FPGA !

Et on peut aussi mettre plusieurs fonctions plus ou moins indépendantes dans un FPGA : des contrôleurs d'IO, du traitement de signal, des co-processeurs pour un processeur hôte, des fonctions de monitoring, etc.
Les dernières puces sur le marché intègrent aussi plusieurs cœurs ARM + GPU !

Une bonne introduction, suffisamment récente (en anglais) :
https://www.embeddedrelated.com/showarticle/195.php

[ Dernière édition du message le 19/03/2017 à 01:33:16 ]

1640
Citation de Jimbass :
Ca dépend énormément des algorithmes qu'on fait avec, et les critères de choix sont complexes : type de parallélisation, localité de chaque traitement (nombre d'IO ou d'accès mémoire par calcul), dépendances de données, calculs en virgule fixe ou flottante, contraintes de consommation... franchement on ne peut pas dire que l'un est meilleur que l'autre en général.

Tout à fait. En fait je pensais à des traitements très simples, mais qui correspondent par exemple à la "table de mixage virtuelle d'une interface audio". Pour donner une idée et expliquer ce que je voulais dire : sur une addition de nombres à virgule fixe avec multiplication par un gain, le FPGA a ses chances. Genre la table de mixage de la fameuse Guillemot ISIS :volatil: ; très bien fichue au demeurant.

Citation de Jimbass :
Il est désormais erroné de cantonner les FPGA au prototypage d'ASICs

Je pensais effectivement à des utilisations de FPGA dans le rôle d'un ASIC. Tu as donc raison et nous sommes effectivement d'accord. :bravo:


Question bête (mais premier degré) : quelle différence fondamentale entre un ASIC et un FPGA ?

[ Dernière édition du message le 19/03/2017 à 01:38:14 ]