Bonjour. Je souhaite devenir programmeur en autoditacte. Mon but est de créer des jeux 2D. Quel(s) langage(s) me conseillez-vous ? Où acquérir les connaissances nécessaires ? L'anglais ne me dérange pas. Merci.
il y a deux topics sur ce forum en premiere page qui traite de ce sujet. vas donc les lire.
Bonsoir j'imagine qu'il y des informaticiens de métier ici.
J'aimerais poser une question aux gens qui on plusieurs année d'expèrience dans le domaine et les étuidants aussi.
A la base quand vous étiez jeune qu'es ce qui vous a poussé à en faire votre métier par quoi êtes vous passionée dans le domaine de l'informatique?
Je n'avais pas fait attention, désolé.
Ho je viens de tomber sur ca
:D
http://www.youtube.com/watch?v=BfoXNSTBlFU
De mon côté, je suis "tombé dedans" par hasard.
Je suis devenu GM sur un serveur privé de Lineage 2 pour mon intégrité (report de bug immédiat et sans abus), et j'ai ensuite sympathisé avec le Gm technique ... que j'ai finalement un peu remplacé quand il n'était pas là (bien que je n'avais absolument pas le niveau ...).
Maintenant, Bac +4 en informatique, 3 mois de stage et 2 mois de CDD (en cours).
Moi ça a commencé avec RPG Maker(logiciel de création de jeux vidéo), je voulais comprendre ce charabia qui s'appelait le Ruby donc je me suis penché dessus, après je me suis intéressé au C, au C++...,
Plop, en ce moment j'ai l'impression d'entendre beaucoup parler du web sémantique, des ontologies, etc. mais j'ai beau chercher j'ai pas trouvé de programmes utilisables style moteur de recherche ou outil de traduction qui exploiterait cette technologie, est-ce que quelqu'un aurait des liens vers des applications techniques utilisant les ontologies ?
c'est peut etre un peu technique et spécifique mais voici un outils de création/représentation d'ontologie (spécifiquement pour le corps humain) http://www.mycorporisfabrica.org/node/1
Pour des applications utilisant cette ontologie :
http://hal.inria.fr/tel-00607260/
http://www.willamette.edu/~fruehr/haskell/evolution.html
Youpi j'ai enfin terminé mon rapport de stage de 100 pages sur la rétronconception du protocole de communication boitier / objectif Canon surtout que mon tuteur école est prof de méca .
tout ça pour un protocole de communication? ça me rappelle les 13000 pages de spécifications du format XML, je me demande ce qu'ils mettent dedans.
suite de https://www.jeuxvideo.com/forums/1-47-56821-1-0-1-0-a-quoi-sert-la-programmation.htm#message_56835
Oui a peu pres tout ce que je fais a rapport aux grilles de calculs. Je travaille dans une equipe de calcul haute performance. Donc grosso modo, on nous donne des applications qui viennent de domaine fortement calculatoire, typiquement, mecanique, physique, biologique, medicale. Et notre travaille c'est d'etudier comme on peut les faire tourner plus vite. Les faire tourner plus vite est important parceque soit ca permet de faire des modeles plus precis (typiquement pour les physiciens), soit ca permet de rendre les applications utilisable dans la pratique (les medecins).
Pour rendre les applications plus rapide, tous les coups sont permis: acheter une machine plus puissante, rajouter de la ram, compiler avec un meilleur compilateur, reecrire les kernels de calculs en C, utiliser des libs mieux foutue, faire de l'optimisation de code (caching, vectorialisation).
Ca c'est la partie "homework", la plupart du temps ca suffit pas. Donc on commence a sortir les fusils: exporter du calcul sur un GPU, un CELL, ta machine multi coeur. Recement on a obtenu un access au nouveau accelerateur d'intel. C'est bien joli toutes ces architectures, mais meme quand tu les utilises parfaitement, tu n'as pas une acceleration de plus d'un facteur 100 (et encore, ca c'est quand c'est la fete du slip, en pratique un facteur 20 c'est deja enorme).
Donc quand tu prends un calcul de physicien qui tourne en 3 semaines et qu'il voudrait monter de quelques ordres de grandeurs et faire tourner ca en jours, ca va pas suffir. Donc pour faire ca, on utilise des clusters. La a peu de chose pres, tant que tu rajoutes des machines, tant ca va plus vite. Ca c'est le principe. En pratique, c'est rarement vrai, parcequ'il faut avoir beaucoup de calcul a faire et les agencer correctement pour avoir une acceleration lineaire dans le nombre de machines. Mais sur certain probleme ca marche bien.
Ca c'est la grande histoire. Qu'est ce qu'on fait dans notre equipe? Globalement on fait un peu de tout. On est pas des ingenieurs donc on ne fait pas des applications a la pelle. A la place on prends quelques applications et on essaye de trouver des moyens generiques de les faires aller plus vite. Donc ca passe par regarder le code et l'optimiser manuellement.
Ca passe aussi par ecrire du middleware de calcul parallele. Par exemple dans l'equipe on developpe un logiciel appeller DataCutter qui est basiquement un Intel TBB pour machine a memoire distribuee.
On s'interesse aussi a comment fonctionne les machines modernes pour voir si les methodes d'avant fonctionnent toujours et si elles ne fonctionnent plus comment les adapter. Par exemple, quand les GPU fermi de nvidia sont sortie, on a obtenu la possibilite de faire tourner plusieurs kernel de calcul en meme temps, de nouveau access a la memoire...
Comme tu peux le voir, augmenter les perfs, ca passe beaucoup par utiliser plus d'un processeur. Donc ca passe aussi par faire des l'algorithmique parallele et pour le calcul parallele. L'algorithmique parallele c'est comment resoudre un probleme en parallele. Souvent l'algorithme que tu utilises en sequentiel et en parallele ce n'est pas le meme. C'est aussi des questions d'equilibrage de charge, parceque la loi d'ahmdal traine toujours (La loi d'amdhal dit que si x% du calcul est sequentiel, tu n'auras pas d'acceleration de plus de 100/x.) Donc si quand tu reparties tes calculs, tu as un desequilibre de 1%, tu n'auras pas d'acceleration superieure a 1%.
Tu te retrouves aussi avec des problemes de calcul distribue. Quand ton application est distribue sur 50 (ou 500, ou 5000) machines, les donnees de l'application ne sont pas disponible partout. Du coup, il faut faire dialoguer les machines proprement pour faire les calcul le plus rapidement possible.
Ca c'est le contexte dans lequel je travail. Personnellement, ce que je fais est assez divers.
D'un cote, je fais de l'optimisation combinatoire. C'est prendre un probleme d'optimisation mathematique (genre, le probleme du voyageur de commerce, l'ordonnancement de tache, ...) et trouver des algorithmes qui le resolve au miuex possible dans le moins de temps possible. La dedans, je ne touche pas un PC la semaine, j'ecris des algo et des preuves a longueurs de journee. Quand j'ai une propriete que j'aime bien, je suis contente et je la raconte au gens.
Je fais aussi un peu de middleware sur DataCutter, ca consiste a voir quelles sont les fonctionnalite qui manque dans le middleware et qui permettrait d'augmente significativement les performances de certaines classes d'application. Ces jours ci, on (enfin, surtout un de mes etudiants) essaye d'implemente des caches distribues pour faire de l'equilibrage de charge automatique pour faire de l'algebre lineaire creuse (basiquement produit matrice matrice vecteur avec beaucoup d'element de la matrice a 0).
Je travaille aussi sur un cas pratique, un physicien qui a un code qui prend une eternite et qui faut faire aller beaucoup plus vite. On vise sur ce projet la de monter a l'ordre d'un petaflops.
Je travaille aussi sur des problements de partitionement/equilibrage de charge pour des applications de simulation physique (particle in cell typiquement). C'est pour ca que je parlais de decoupe de matrice de charge en rectangle. Sur ce projet la, je ne travaille pas sur le code lui meme. Je fais principalement des algo (sequentiel pour l'instant distribue plus tard) pour partitioner et repartionner la charge.
Finalement, je fais aussi de la coloration de graph sur machine distribue. C'est un outils de decouverte de parallelisme et ca a aussi des applications pour accelerer certain typique de calcul matriciel. Mais principalement je regarde ca parceque les algo de graphes sont des cauchemard a paralleliser efficacement. Pour ca, on ecrit et implemente des algos pour machine a memoire partage et a memoire distribuer.
Donc pour conclure, oui a peu pres tout ce que je fais, ce rapporte au calcul parallel et donc on fini assez souvent par se poser la question "et est ce qu'on sait faire ca sur 50 machines?". C'est aussi pour ca que je me pose toujours des questions de performances. Parcequ'on se tape naturellement plusieurs couches applicatives (entre la machine et l'application distribue). Donc si tu perds 1% de perfs a chaque couche et que tu cumules ca a chaque couche, tu fini par perdre une fraction significative de tes perfs. Et quand tu utilise des machines qui coutent des millions de dollars, tu essaye de faire gaffe a pas trop gacher.
Permission de t'appeler The Boss maintenant grodik si cela ne te dérange pas ?
Tiens question : dis moi tu bosses à l'étranger. Je vais moi-même officialiser un contrat en allemagne normalement pour Steinberg. La question pécunière : en allemagne les taxes sont ultra-élevées et ils te prennent 40% de ton salaire. Au niveau des impôts français quand tu travailles de façon officielle et permanente à l'étranger (ici en Europe qui plus est) normalement tu n'entends plus parler d'eux non ? Merci pour ton confirmation.
sérieux, ça fait réver, godrik.
une équipe de calcul haute performances... je ne savais pas que ça existait, je pensais qu'ils optimisaient leurs applications chacun dans leur coin.
"Recement on a obtenu un access au nouveau accelerateur d'intel. "
qu'est-ce qu'un accelérateur? c'est une machine, un logiciel?
"Je travaille aussi sur un cas pratique, un physicien qui a un code qui prend une eternite et qui faut faire aller beaucoup plus vite. On vise sur ce projet la de monter a l'ordre d'un petaflops."
par curiosité, qu'essaye t-il de faire exactement? (si la liberté que t'accordent les NDA que tu as peut-être signé s'étend jusque-là )
Et nous on se plaint que ça rame...
Chapeau bas monsieur en tout cas.
Et oui ça m'intéresserait aussi de savoir quel genre de programme/travail demande un tel temps de calcul. ^^
(boah après tout il y a bien eu un fameux ordinateur qui n'a pas cessé de réfléchir durant 7,5 millions d'années pour nous sortir le fameux 42 !).
Tbop2 Viens faire un tour en Belgique aussi si tu veux.
Intéressant.
Je connais la programmation haute-performance depuis quelques jours (jamais entendu parler avant), mais c'était resté assez flou.
Merci d'avoir levé le voile
et est-ce que quelquefois, quelqu'un vient vous voir pour tel ou tel calcul, et vous êtes obligés de l'éconduire poliment en lui expliquant que ce qu'il demande prendrait mille fois l'âge de l'univers, et que même réparti idéalement sur mille postes, ça dure quand même une fois l'âge de l'univers et qu'il ferait mieux de s'adresser à quelqu'un d'autre?
Je viens de voir que j'ai commis une douloureuse faute de frappe en t'appelant grodik (lol?) au lieu de godrik. Toutes mes plus plates excuses.
Tbop2, au niveau des impots, je les payes aux US, je ne payes pas d'impots en france. Et je ne remplis pas de feuille de declaration d'impots. Je ne sais plus exactement comment ca marche, mais je me rappelle que j'ai du faire une declaration de non imposition. Mais je ne sais pas si c'etait obligatoire ou pour arreter le prelevement automatique.
caelacanthe, un accelerateur, c'est un co processeur de calcul. c'est un terme generique qui englobe, GPU, CELL, ... En l'occurence intel va release un accelerateur a eux. Ils ont fait une annonce ici [1]
Pour ce que font les programmes en pratique. Souvent, je ne comprends pas. L'un d'entre eux simule l'impact des vents solaire sur la magnetosphere terrestre. Celle la, c'est une simulation de type particle in cell sur des equations du meme type que la diffusion de chaleur. L'autre, j'ai pas bien compris en details, mais il simule les particules sub atomique des atomes. En terme pratique, ils generent une matrice creuse enorme (ca compte en TB) et calculent plusieurs produit matrice vecteur.
Un des etudiants qui vient de finir travaillait sur des problemes plus petits. L'un des problemes etait une histoire d'imagerie medicale. L'application prends en entre un (ou des) images d'echantillon de sang. Et l'application identifie les cellules cancereuses et les compte. Son travail etait de faire fonctionner cette application dans un temps raisonnable (en minutes). Sachant que le code de base, c'etait du matlab en jour... En degainnant un cluster de CELL, il a reussit a obtenir un systeme qui marchait bien.
Il travaillait aussi sur des histoires de "Synthetic Aperture Radar". La le cas d'utilisation est un avion qui envoye des signaux radar et recoit une reponse, il tourne autour d'une cible et a partir des reponses reconstuit un modele du terrain. Le probleme est que les algo de reconstruction sont assez couteux si tu veux obtenir de la haute definition. Pour ce truc la, un cluster de GPU ca marchait pas mal.
Apres je ne fais pas tout dans ces probleme la. Souvent je ne travaille que sur les parties critiques. Souvent c'est l'equilibrage de charge qui est en cause. Parceque c'est celui qui part en cacahuete le plus facilement.
Et pour repondre a la derniere question de caelacanthe. En pratique on travaille part grant avec des gens que l'on rencontre dans des conferences. Et ces gens la sont raisonnables, ils savent ce qui est possible et ce qui ne l'est pas.
[1] http://newsroom.intel.com/community/intel_newsroom/blog/2011/06/20/intel-equipped-to-lead-industry-to-era-of-exascale-computing