[Index Software] Coin des développeurs :]

Pour les gens qui ont simplement envie de discuter sans souhaiter faire passer d'information particulière.
Message
Auteur
Avatar du membre
Bubu
Intarissable
Messages : 7738
Enregistré le : dimanche 19 mai 2013 à 12:03
Localisation : En haut à gauche

Re: Coin des développeurs :]

#331 Message par Bubu » jeudi 27 avril 2017 à 6:46

Ta version sur 40 threads tourne t elle sur GPU ?
Si c'est le cas, ça peut s'expliquer.
Les GPU étant basés sur l'architecture SIMD, ils sont très performants quand les tâches sont cohérentes, dans le sens où les tests ont globalement le même résultat, catastrophiques sinon. Notamment.
Ensuite, il faut de la quantité, parallelisable, pour bénéficier de leur puissance. Sinon et encore, leurs performances sont catastrophiques.



Un exemple extrême :
On veut paralléliser et exécuter sur GPU un réseau neuronal d'une couche. Pour cela, on subdivise la couche en tronçons, autant qu'il y a de threads.
Si la couche est très peuplée, on va avoir un gain énorme en performance.
Sinon, cette solution sera moins performante si le nombre d'unités est faible.
Concrètement si on simulait une couche d'un seul neurone par exemple, utiliser le CPU serait plus efficace que d'utiliser l'accélération matérielle (GPU ou GPGPU). :crazy:



Pour finir :
-Favoriser la cohérence des tâches.(éviter les embranchements autant que possible)
-Paralleliser au maximum les tâches. Et favoriser les petites tâches.
-Limiter au maximum les transferts mémoire.( Entre mémoire graphique et mémoire CPU)
TSA, diagnostic établi à mes 33 ans par le CRA de ma région.
"Ce syndrome est caractérisé chez ce patient par l’absence de détérioration intellectuelle, un syndrome dysexécutif, un déficit d'attention"

Avatar du membre
Bubu
Intarissable
Messages : 7738
Enregistré le : dimanche 19 mai 2013 à 12:03
Localisation : En haut à gauche

Re: Coin des développeurs :]

#332 Message par Bubu » jeudi 27 avril 2017 à 8:38

Si tes 40 threads tournent par contre sur CPU.... :naugty:
Il faut autant de threads que de cœurs, ni plus ni moins. Le système peut te dire combien il y'en a.
Sinon, si il en a beaucoup, le CPU passera plus de temps à les synchroniser qu'à réellement les exécuter.

Il faut aussi limiter l'usage de la synchronisation (via mutexes, sémaphores, sections critiques) au strict minimum, et donc utiliser les design patterns appropriés.
TSA, diagnostic établi à mes 33 ans par le CRA de ma région.
"Ce syndrome est caractérisé chez ce patient par l’absence de détérioration intellectuelle, un syndrome dysexécutif, un déficit d'attention"

Avatar du membre
Benoit
Intarissable
Messages : 8889
Enregistré le : lundi 28 septembre 2009 à 13:55
Localisation : オルセー
Contact :

Re: Coin des développeurs :]

#333 Message par Benoit » jeudi 27 avril 2017 à 11:18

Est-ce qu'il y a une méthodologie "design pattern" en dynamique ?

En gros mon "réseau" à optimiser (Algo Gen) est très vide ("sparse" en anglais), ce qui me permet de le découper en dimensions ou plans relativement indépendants pour le traitement (ce qui n'empêche pas de devoir synchroniser pour contrôler l'évolution).

Par contre, je n'ai pas la connaissance a priori du nombre de plans/dimensions, encore moins à la fin quand le problème est grandement simplifié (après traitement des plans les plus indépendant).

Du coup, c'est à ce moment là que j'aimerai que l'OS se débrouille pour re-affecter les threads qui travaillent encore sur des cores vides.

J'espère que c'est compréhensible.
Identifié Aspie (広島, 08/10/31) Diagnostiqué (CRA MP 2009/12/18)

話したい誰かがいるってしあわせだ

Être Aspie, c'est soit une mauvaise herbe à éradiquer, soit une plante médicinale à qui il faut permettre de fleurir et essaimer.

Avatar du membre
Ixy
Prolifique
Messages : 4667
Enregistré le : jeudi 20 mars 2014 à 20:59
Localisation : 92

Re: Coin des développeurs :]

#334 Message par Ixy » jeudi 27 avril 2017 à 13:57

Bubu a écrit :Si tes 40 threads tournent par contre sur CPU.... :naugty:
Il faut autant de threads que de cœurs, ni plus ni moins. Le système peut te dire combien il y'en a.
Non souvent il peut y avoir plusieurs threads sur un coeur.
Je n'ai pas de diagnostic /!\
Ce que tu as la force d'être, tu as aussi le droit de l'être - Max Stirner

Avatar du membre
Bubu
Intarissable
Messages : 7738
Enregistré le : dimanche 19 mai 2013 à 12:03
Localisation : En haut à gauche

Re: Coin des développeurs :]

#335 Message par Bubu » jeudi 27 avril 2017 à 14:05

Ixy a écrit :
Bubu a écrit :Si tes 40 threads tournent par contre sur CPU.... :naugty:
Il faut autant de threads que de cœurs, ni plus ni moins. Le système peut te dire combien il y'en a.
Non souvent il peut y avoir plusieurs threads sur un coeur.
Oui et non .... avec les architectures multithreads oui, mais il y a quand même des conflits matériels sur les threads exécutés sur un même coeur, donc faut tester.
Je crois que les CPUs grand public sont tous maintenant multithreads , mais sur deux threads. Donc entre le nombre de cœurs et son double, mais pas plus. Il faut tester dans cet intervalle-là.

@Benoit : peut-être chercher du coté des thread pools ?
https://en.wikipedia.org/wiki/Thread_pool
TSA, diagnostic établi à mes 33 ans par le CRA de ma région.
"Ce syndrome est caractérisé chez ce patient par l’absence de détérioration intellectuelle, un syndrome dysexécutif, un déficit d'attention"

Avatar du membre
Benoit
Intarissable
Messages : 8889
Enregistré le : lundi 28 septembre 2009 à 13:55
Localisation : オルセー
Contact :

Re: Coin des développeurs :]

#336 Message par Benoit » jeudi 27 avril 2017 à 18:13

Je garde l'idée en tête, mais ça risque de me faire recoder tout le programme.
Identifié Aspie (広島, 08/10/31) Diagnostiqué (CRA MP 2009/12/18)

話したい誰かがいるってしあわせだ

Être Aspie, c'est soit une mauvaise herbe à éradiquer, soit une plante médicinale à qui il faut permettre de fleurir et essaimer.

Avatar du membre
Bubu
Intarissable
Messages : 7738
Enregistré le : dimanche 19 mai 2013 à 12:03
Localisation : En haut à gauche

Re: Coin des développeurs :]

#337 Message par Bubu » vendredi 28 avril 2017 à 18:28

Ixy a écrit :
Bubu a écrit :Si tes 40 threads tournent par contre sur CPU.... :naugty:
Il faut autant de threads que de cœurs, ni plus ni moins. Le système peut te dire combien il y'en a.
Non souvent il peut y avoir plusieurs threads sur un coeur.
Bon je vais insister là dessus : :innocent:
Les cœurs multithreads partagent le même matériel au niveau ALU, et mémoire cache notamment. D'accord, chaque thread à son propre registre d'instruction etc .... Mais imagine deux threads utilisant en même temps l'ALU ? Là il y a conflit matériel, donc aucun gain en performance, chaque thread, s’exécutant à tour de rôle. Aucun bénéfice en terme de performance.
Après oui, l'OS peut exécuter n'importe quel nombre de threads, mais les processeurs, non ! C'est à ce niveau de l'émulation ! Software ! C'est l'OS qui gère ça.

@Benoit : Les thread pools ne devraient pas poser problème : au lieu de créer un thread pour chaque tâche, tu crées les threads à l'avance, et les assignes à une certaine tâche quand tu as besoin. Cela évite l'opération très couteuse de les créer quand tu en as besoin. Tu crées ton thread pool, et tu assignes la tâche sur l'un dès que besoin. Normalement, tu n'as pas besoin de tout refaire ton code .... il suffit de créer un tableau de threads au démarrage de l'appli, et de leur assigner leur tâche quand tu en as besoin. En Java, c'est très simple en passant par l'objet Runnable. Sinon en C ou C++, tu leur balances un pointeur de fonction.

Un exemple d'implémentation en C++ (classe inline) pour Windows (de moi, donc pas forcément le meilleur) :
ThreadPool.h
(4 Kio) Téléchargé 36 fois
la dépendance #include "criticalsection.h" est inutile et peut (doit) être enlevée.
Et il manque une méthode pour attendre le résultat d'une tâche particulière .... :oops: ,
on ne peut qu'attendre la fin de toutes et obtenir un tableau des résultats ...
mais ce n'est pas trop dur de rajouter une telle méthode qui renvoie le résultat si besoin.


EDIT : si elle y est.
void * waitForTask(int taskIndex)
TSA, diagnostic établi à mes 33 ans par le CRA de ma région.
"Ce syndrome est caractérisé chez ce patient par l’absence de détérioration intellectuelle, un syndrome dysexécutif, un déficit d'attention"

Avatar du membre
Benoit
Intarissable
Messages : 8889
Enregistré le : lundi 28 septembre 2009 à 13:55
Localisation : オルセー
Contact :

Re: Coin des développeurs :]

#338 Message par Benoit » jeudi 11 mai 2017 à 17:30

Pour info, finalement je suis passé sur Cuda.
Les articles vendant du calcul sept mille fois plus rapide ont eu raison de ma patience.

Je ne désespère pas de faire l'acquisition d'un GPU avec plus de 192 coeurs (celle que j'ai pour l'instant, et ça n'a pas été drôle de l'installer sous Linux).
Identifié Aspie (広島, 08/10/31) Diagnostiqué (CRA MP 2009/12/18)

話したい誰かがいるってしあわせだ

Être Aspie, c'est soit une mauvaise herbe à éradiquer, soit une plante médicinale à qui il faut permettre de fleurir et essaimer.

Avatar du membre
Aden
Assidu
Messages : 200
Enregistré le : mercredi 24 décembre 2014 à 1:55
Contact :

Re: Coin des développeurs :]

#339 Message par Aden » jeudi 11 mai 2017 à 20:34

Question, je me demande si l'animation html5 est mieux ou a plus de possibilité que l'animation javascript ? Je connais que javascript mais je me demande si ça vaut la peine d'apprendre l'animation html5 ?
Diagnostiqué autiste asperger et dysphasique

Mon monde

Avatar du membre
Bubu
Intarissable
Messages : 7738
Enregistré le : dimanche 19 mai 2013 à 12:03
Localisation : En haut à gauche

Re: Coin des développeurs :]

#340 Message par Bubu » samedi 13 mai 2017 à 18:46

Benoit a écrit :Pour info, finalement je suis passé sur Cuda.
Les articles vendant du calcul sept mille fois plus rapide ont eu raison de ma patience.

Je ne désespère pas de faire l'acquisition d'un GPU avec plus de 192 coeurs (celle que j'ai pour l'instant, et ça n'a pas été drôle de l'installer sous Linux).
As tu envisagé OpenCl comme autre option ?
C'est pareil, sauf que c'est libre, et non restreint à la marque NVIDIA ? Compatible avec n'importe quel GPU ?
TSA, diagnostic établi à mes 33 ans par le CRA de ma région.
"Ce syndrome est caractérisé chez ce patient par l’absence de détérioration intellectuelle, un syndrome dysexécutif, un déficit d'attention"

Avatar du membre
Benoit
Intarissable
Messages : 8889
Enregistré le : lundi 28 septembre 2009 à 13:55
Localisation : オルセー
Contact :

Re: Coin des développeurs :]

#341 Message par Benoit » lundi 15 mai 2017 à 9:14

J'ai comparé le nombre de lignes de code à faire pour les deux et les tutoriels (et la doc des cartes Radeon).

Pour l'instant je reste sur Cuda, au moins le temps de pouvoir appliquer directement les fragments de code sans avoir à faire de gymnastique de conversion.
Identifié Aspie (広島, 08/10/31) Diagnostiqué (CRA MP 2009/12/18)

話したい誰かがいるってしあわせだ

Être Aspie, c'est soit une mauvaise herbe à éradiquer, soit une plante médicinale à qui il faut permettre de fleurir et essaimer.

Avatar du membre
Bubu
Intarissable
Messages : 7738
Enregistré le : dimanche 19 mai 2013 à 12:03
Localisation : En haut à gauche

Re: Coin des développeurs :]

#342 Message par Bubu » lundi 15 mai 2017 à 11:58

Benoit a écrit :J'ai comparé le nombre de lignes de code à faire pour les deux et les tutoriels (et la doc des cartes Radeon).

Pour l'instant je reste sur Cuda, au moins le temps de pouvoir appliquer directement les fragments de code sans avoir à faire de gymnastique de conversion.
OK.
C'est juste que la portabilité de ton appli sera moins bonne, car ne fonctionnant qu'avec des GPU NVidia.
Mais si ce n'est pas un problème, tant mieux. :wink:

Aujourd'hui, les performances d'OpenCl sont équivalentes à celles de CUDA sur un GPU NVidia. Un temps ce n'était pas le cas, mais maintenant si.

Bon courage ! :D
TSA, diagnostic établi à mes 33 ans par le CRA de ma région.
"Ce syndrome est caractérisé chez ce patient par l’absence de détérioration intellectuelle, un syndrome dysexécutif, un déficit d'attention"

Avatar du membre
Aden
Assidu
Messages : 200
Enregistré le : mercredi 24 décembre 2014 à 1:55
Contact :

Re: Coin des développeurs :]

#343 Message par Aden » lundi 15 mai 2017 à 19:21

Aden a écrit :Question, je me demande si l'animation html5 est mieux ou a plus de possibilité que l'animation javascript ? Je connais que javascript mais je me demande si ça vaut la peine d'apprendre l'animation html5 ?
Quelqu'un peut répondre à mes questions svp ? :)
Diagnostiqué autiste asperger et dysphasique

Mon monde

Avatar du membre
Ixy
Prolifique
Messages : 4667
Enregistré le : jeudi 20 mars 2014 à 20:59
Localisation : 92

Re: Coin des développeurs :]

#344 Message par Ixy » lundi 15 mai 2017 à 20:12

Je connais pas l'animation avec html5.

Je sais que l'on peut faire plein de trucs marrants avec javascript, en étant statisticien il y a une bilblioth_que pour s'amuser avec les chiffres, il s'agit de D3js
Je n'ai pas de diagnostic /!\
Ce que tu as la force d'être, tu as aussi le droit de l'être - Max Stirner

Avatar du membre
Bubu
Intarissable
Messages : 7738
Enregistré le : dimanche 19 mai 2013 à 12:03
Localisation : En haut à gauche

Re: Coin des développeurs :]

#345 Message par Bubu » mardi 16 mai 2017 à 11:07

Aden a écrit :
Aden a écrit :Question, je me demande si l'animation html5 est mieux ou a plus de possibilité que l'animation javascript ? Je connais que javascript mais je me demande si ça vaut la peine d'apprendre l'animation html5 ?
Quelqu'un peut répondre à mes questions svp ? :)
Je ne connais ni le JavaScript ni HTML5, désolé. :innocent:
TSA, diagnostic établi à mes 33 ans par le CRA de ma région.
"Ce syndrome est caractérisé chez ce patient par l’absence de détérioration intellectuelle, un syndrome dysexécutif, un déficit d'attention"

Répondre