Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

28 commentaire(s) de maitredede sur des sources sur tout CodeS-SourceS

Le : 11/01/2009 19:19:42
Source : TRAITER UN FOREACH EN PARALLÈLE
Merci pour ton expliquation Coq :o)

R2D2TM : Donc si j'en crois ton explication, une application mono-thread ne doit s'exécuter que sur un seul processeur. Or, comment se fait-il qu'une vrai application native mono-thread s'exécuté à 50% sur chaque processeur (selon les courbes d'occupation des processeurs du gestionnaire de tâche) ?
Je pense que c'est plutôt du au fait que l'OS envoie un "morceau" de programme un coup sur un processeur, un coup sur l'autre... Nulle part je n'ai vu de règle disant qu'un thread devait s'exécuter intégralement sur le même processeur... Rien n'empèche l'OS d'alterner l'exécution du code sur chacun des processeurs, sous réserve qu'on garde la séquentialité originale du code...
J'admets que je peux avoir tord, mais il me faudra plus qu'un "cqfd" pour me le démontrer. :o)


Le : 09/01/2009 20:06:24
Source : TRAITER UN FOREACH EN PARALLÈLE
Pour le bout de code, je m'en servirai pour ajouter une surcharge dans ma lib. Du coup, Merci :o)

Par contre, pour cette application monothread, que suis-je sensé observer ? Mis à part qu'une boucle infinie me consomme 50% de chaque core, et que j'ai le même comportement sur des applications natives...


Le : 09/01/2009 16:46:47
Source : TRAITER UN FOREACH EN PARALLÈLE
Ce code est sensé produire quoi ?
A première vue, ça permet de choisir l'affinité du thread sur un processeur. En quoi est-ce que ça affecte le fait que ça soit un thread du framework par rapport à un thread natif ?


Le : 09/01/2009 16:10:53
Source : TRAITER UN FOREACH EN PARALLÈLE
Effectivement, on peut le comprendre par une affectation d'une tâche par processeur. Mais à ma connaissance, il n'est pas possible de gérer l'affinité processeur au niveau du thread. C'est Windows qui gère cette affinité au niveau process.

En fait, il faut comprendre que les tâches sont réalisées en parallèle, réparties sur les processeurs du système, mais c'est Windows qui gère la répartition.

Pour aller plus loin dans les détails (pour ceux qui sont curieux) : un processeur n'est pas capable de faire des tâches en parallèle (ou un coeur dans le cas des multi-core). Afin de faire des systèmes d'exploitation multi-tâche, chaque tâche est découpée en petit morceaux. Et à intervals réguliers, le noyau du système d'exploitation interrompt une tâche pour donner la main à une autre.
Dans le cas appliqué à des tâches longues et sur un processeur multi-core, le système d'exploitation envoie ces "morceaux de tâche" sur les processeurs, en fonction de la charge de chacun. Il n'est donc pas possible de choisir à l'avance sur quel processeur s'exécutera un thread (une tâche). Un exemple pratique : lancer un jeu (Half-life 2) et regarder les courbes de charge processeur sur un système dual-core. Chaque processeur est chargé à 50% car l'OS réparti la charge sur tous les processeurs. Dans un programme multi-thread, le système peut exécuter chaque thread sur un processeur. Par exemple, avec le jeu SuperCommander, le jeu calcule l'affichage sur un processeur, pendant qu'il calcule l'intelligence des unités sur un autre processeur.

Enfin bref, merci bien pour l'appréciation de ma contribution.


Le : 09/01/2009 15:26:59
Source : TRAITER UN FOREACH EN PARALLÈLE
Je pense que les threads/processeurs gérés par le framework correspondent aux threads/processeurs physiques (à ceci près que l'hyperthreading intel est vu par windows comme un deuxième processeur, alors qu'il n'y en a qu'un).
Le framework repose sur le système, et donc gère les threads de manière logique au sein du framework. Donc je comme pense qu'un thread du framework est basé sur un thread windows natif, il agit à l'identique.

Donc pour faire un traitement en rarallèle sur un système à dual-core, il faut lancer 2 threads, un sur chaque proc en théorie. En pratique, c'est le noyau windows qui va répartir la charge sur ses procs (en général 50-50).

Après, tu peux choisir sur quel core ton process va s'exécuter. Et tu ne gagne rien à forcer ton process à s'exécuter sur un seul core alors que tu en a deux (ou plus).

Un cas concret d'utilisation : du raytracing. J'ai testé un raytracer C#. Deux boucles for imbriquées, temps de rendu : 60s. Ma boucle foreach parallèle, sur un processeur dual-core, avec légères modifications pour les accès concurentiels, et pouvoir traiter en parallèle : 30s. Concluant ?


Le : 31/12/2008 11:01:20
Source : TRAITER UN FOREACH EN PARALLÈLE
Bonjour,

Le code que je montre, c'est justement pour ne pas utiliser les PFX.
J'ai codé le moyen de faire un ForEach, en traitant chaque item de ta collection en parallèle.
J'ai juste comparé mon code au PFX car c'est dans l'idée la même chose, mais je ne vais pas aussi loin que la lib PFX.

Tout dépend de ce que tu veux faire... Soit tu a juste besoin d'améliorer les perfs dans ton code en traitant tes items en parallèle et mon va bien, soit tu a besoin de PLink, et là c'est PFX... Sans oublier que ma lib n'a pas besoin du framework 3.0 pour fonctionner, c'est du pur 2.0


Le : 16/07/2008 15:28:56
Source : FROSTSHELL 1 (SHELL REPLACEMENT)
Salut,
Tu pourrais mettre ta vidéo sur youtube (ou même genre) svp ?
J'essaierai quand j'aurai le temps...

Je me rappelle avoir vu passer un article d'un blog relatant de code pour Vista qui te permet de faire pivoter les fenêtres sur elles-mêmes (via l'api dwm). Ca pourrait être intéressant pour ton shell de pouvoir intégrer cette fonctionnalité...


Le : 18/03/2008 10:22:07
Source : COMPACTER DU JAVASCRIPT
Bonjour Jesus,

Et pour une version qui le fait à la fois pour les fichiers javascript du site, et pour toutes les zones "script" des pages ?
Exemple : compacter le javascript de ASP.NET, compacter le javascript "perso"...


Le : 09/01/2008 10:00:20
Source : MYSQL : FONCTION POUR GÉRER DES COMPTEURS ÉQUIVALENT AUX SÉQUENCES ORACLE
Tu es mauvaise langue quand tu dis que je ne lis pas la doc.

Bien sûr qu'elle marche la méthode que tu me cite. Elle est en exemple dans la doc. Mais elle sous-entends que la table se situe dans la même base, et donc potentiellement modifiable par tout utilisateur mal intentionné.
Dans mon cas, tu peux gérer ce problème en créant un utilisateur qui aura les droits sur la table des compteurs, mais pas les utilisateurs courants. Ensuite, tu crée la fonction avec le paramètre "SQL SECURITY DEFINER" (http://dev.mysql.com/doc/refman/5.0/en/create-procedure.html). De ce fait, les utilisateurs n'auront pas accès à la table, mais pourront appeler la fonction.


Le : 08/01/2008 11:26:15
Source : MYSQL : FONCTION POUR GÉRER DES COMPTEURS ÉQUIVALENT AUX SÉQUENCES ORACLE
Je ne pense pas :

Quand un user se connecte, "SELECT LAST_INSERT_ID()" retourne 0 (cf. doc http://dev.mysql.com/doc/refman/5.1/en/information-functions.html#function_last-insert-id).
Donc si deux users se connectent en même temps, et exécutent en même temps le code, les deux vont avoir un compteur à 0.
Du coup, il n'y a plus d'unicité de ton compteur.

Après, je peux avoir tort, mais si tu ne gère pas des verrous quelque part, tu a des risques de conflits de données. Dans ma fonction, je gère ces verrous.



1 2 3


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,234 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.