Partage
  • Partager sur Facebook
  • Partager sur Twitter

Erreur de segmentation - Threads

    25 novembre 2017 à 0:03:28

    SofEvans2 a écrit:

    Je n'ai pas connaissance de ce qu'est réellement un "processeur monocore hyperthreadé", mais ca ressemble a des coeur logique non ? (1 processeur monocore qui simule plusieurs coeur).

    Oui, un processeur avec un seul coeur mais qui supporte l'hypertheading a plusieurs (deux en fait) coeurs logiques. C'est apparu du temps du Pentium 4. Le coeur unique duplique réellement les ressources qui conservent l'état, mais pas les pipelines (qui font le traitement).

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      25 novembre 2017 à 0:13:48

      AlexandreLemeret a écrit:

      C'est sur les deux courbes et à des endroits différents à chaque exécution donc ça doit venir de mon PC. J'ai regardé le code, ça me paraît clair, peut être que j'aurai une question auquel cas je viendrais la poster ici.

      Je devais faire une exécution avec du séquentiel puis du parallèle et enfin avec des sémaphores donc je vais m'intéresser aux sémaphores et regarder comment coder ça

      Merci encore à vous de m'avoir aider



      Sémaphore ?
      Si tu utilises les fonctions telle que dans le code actuelle, il n'y a aucune raison d'utiliser des sémaphores.
      Et même en découpant le tableau, si on le fait bien, aucune raison non plus.
      L'énoncé de ton TP est disponible ? Ca pique ma curiosité.

      Marc Mongenet a écrit:

      SofEvans2 a écrit:

      Je n'ai pas connaissance de ce qu'est réellement un "processeur monocore hyperthreadé", mais ca ressemble a des coeur logique non ? (1 processeur monocore qui simule plusieurs coeur).

      Oui, un processeur avec un seul coeur mais qui supporte l'hypertheading a plusieurs (deux en fait) coeurs logiques. C'est apparu du temps du Pentium 4. Le coeur unique duplique réellement les ressources qui conservent l'état, mais pas les pipelines (qui font le traitement).

      Du coup ... si les pipelines ne sont pas dupliqué, la vitesse de traitement est réellement amélioré ?
      J'ai jamais pu benchmarké ce type de "détail", ca a toujours été des "on dit" (on dit que seul le cœur physique améliore vraiment les perf, pas les cœurs logique).



      • Partager sur Facebook
      • Partager sur Twitter
        25 novembre 2017 à 11:47:30

        SofEvans2 a écrit:

        Du coup ... si les pipelines ne sont pas dupliqué, la vitesse de traitement est réellement amélioré ?

        En général un peu, d'après Intel. Il faut savoir qu'un seul thread n'arrive pratiquement jamais à occuper chaque étape de chaque pipeline, donc ça laisse de la place. Voir l'image en haut de https://en.wikipedia.org/wiki/Hyper-threading.

        Remarque que si l'on dupliquait aussi les pipelines, ça ferait un nouveau coeur complet.

        -
        Edité par Marc Mongenet 25 novembre 2017 à 14:07:05

        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          25 novembre 2017 à 12:55:23

          Ah oui ! Je n'y avais pas pensé.
          Donc ca colle avec ce que je sais : les cœurs logiques sont moins bon que les cœurs physiques pour du "vrai" multithreading.

          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            25 novembre 2017 à 20:21:28

            SofEvans2 a écrit:

            AlexandreLemeret a écrit:

            C'est sur les deux courbes et à des endroits différents à chaque exécution donc ça doit venir de mon PC. J'ai regardé le code, ça me paraît clair, peut être que j'aurai une question auquel cas je viendrais la poster ici.

            Je devais faire une exécution avec du séquentiel puis du parallèle et enfin avec des sémaphores donc je vais m'intéresser aux sémaphores et regarder comment coder ça

            Merci encore à vous de m'avoir aider



            Sémaphore ?
            Si tu utilises les fonctions telle que dans le code actuelle, il n'y a aucune raison d'utiliser des sémaphores.
            Et même en découpant le tableau, si on le fait bien, aucune raison non plus.
            L'énoncé de ton TP est disponible ? Ca pique ma curiosité.

            Marc Mongenet a écrit:

            SofEvans2 a écrit:

            Je n'ai pas connaissance de ce qu'est réellement un "processeur monocore hyperthreadé", mais ca ressemble a des coeur logique non ? (1 processeur monocore qui simule plusieurs coeur).

            Oui, un processeur avec un seul coeur mais qui supporte l'hypertheading a plusieurs (deux en fait) coeurs logiques. C'est apparu du temps du Pentium 4. Le coeur unique duplique réellement les ressources qui conservent l'état, mais pas les pipelines (qui font le traitement).

            Du coup ... si les pipelines ne sont pas dupliqué, la vitesse de traitement est réellement amélioré ?
            J'ai jamais pu benchmarké ce type de "détail", ca a toujours été des "on dit" (on dit que seul le cœur physique améliore vraiment les perf, pas les cœurs logique).



            Oui, dès que j'ai la possibilité de le prendre en photo et de le poster je le ferais :)

            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              27 novembre 2017 à 17:12:07

              Voilà le sujet du TP et la partie sur les sémaphores qui est la partie B :

              https://puu.sh/yuB8z/298a9a90c1.jpg

              https://puu.sh/yuB8C/9f749ab873.jpg

              https://puu.sh/yuB8D/d2d8a55939.jpg

              Par contre, je n'ai aucune idée de comment faire ni même de comment commencer

              • Partager sur Facebook
              • Partager sur Twitter
                27 novembre 2017 à 17:20:05

                Marc Mongenet a écrit:

                SofEvans2 a écrit:

                Du coup ... si les pipelines ne sont pas dupliqué, la vitesse de traitement est réellement amélioré ?

                En général un peu, d'après Intel. Il faut savoir qu'un seul thread n'arrive pratiquement jamais à occuper chaque étape de chaque pipeline, donc ça laisse de la place. Voir l'image en haut de https://en.wikipedia.org/wiki/Hyper-threading.

                SofEvans2 a écrit:

                Donc ca colle avec ce que je sais : les cœurs logiques sont moins bon que les cœurs physiques pour du "vrai" multithreading.

                Pour des tâches qui ont un taux d'IOs recouvrable de manière efficace avec du calcul, on peut vraiment s'approcher du gain théorique, mais il faut NUMA pour faire ça correctement.

                • Partager sur Facebook
                • Partager sur Twitter

                Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C

                  27 novembre 2017 à 18:52:39

                  Bonjour,

                  J'ai fait quelques tests sur 2 pc différents l'un avec un core intel i3 3220 (2 cores avec HyperThreading soit 4 cores logiques )et l'autre avec un core i5 2500 (4 vrais cores sans HT) sous Ubuntu avec le logiciel POVRay et la scene 'benchmark.pov' (benchmark.ini pour les options), voici les résultats (vous noterez que POVRay met le processeur 'à genoux' puisque dans le moniteur système, le taux d'occupation monte à 100 %, en gros c'est du calcul de nombre à virgule intense (je ne lance rien en fond à ce moment là):

                  Core i5 2500 ; Ubuntu 16 ; 2 threads forcés : 6 min 38 sec.

                  Core i5 2500 ; Ubuntu 16 ; 4 threads : 3 min 28 sec

                  Core i3 3220 ; Ubuntu 16 ; 2 threads forcés : 7 min 21 sec.

                  Core i3 3220 ; Ubuntu 16 4 threads : 5 min 36 sec. ;)

                  -
                  Edité par Warren79 27 novembre 2017 à 19:15:39

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Mon site web de jeux SDL2 entre autres : https://www.ant01.fr

                    27 novembre 2017 à 19:15:46

                    Warren79 a écrit:

                    (vous noterez que POVRay met le processeur 'à genoux' puisque dans le moniteur système, le taux d'occupation monte à 100 %, en gros c'est du calcul de nombre à virgule intense (je ne lance rien en fond à ce moment là)

                    Sauf que non, ça ne met pas ton processeur à genoux, parce que comme tu le dis toi même tu utilises massivement les unités flottantes, donc ça veut dire que potentiellement tes unités entières ne font rien, tes unités d'opérations sur les bits ne font rien, tes unités vectorielles ne font pas forcément quelque chose. Donc le parallélisme mono-core n'est probablement pas très utilisé. Tu peux déjà avoir plus d'informations en utilisant un profiler qui va pouvoir regarder notamment l'utilisation des unités de calculs en fonction de options que tu lui donnes.

                    Et ça, c'est sans parler du fait que l'on analyse pas non plus l'utilisation de la bande passante vers la mémoire qui est bien souvent bien plus cruciale pour les bonnes performances d'un algo.

                    • Partager sur Facebook
                    • Partager sur Twitter

                    Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C

                      27 novembre 2017 à 19:43:38

                      Ksass 'Peuk a écrit [...]

                      D'accord. Dans ce cas, pourquoi le moniteur système , affiche-t-il 100 % pour certains coeurs?

                      -
                      Edité par Warren79 27 novembre 2017 à 19:44:01

                      • Partager sur Facebook
                      • Partager sur Twitter

                      Mon site web de jeux SDL2 entre autres : https://www.ant01.fr

                        27 novembre 2017 à 19:54:47

                        En (très) gros, parce que je ne me souviens pas des détails précis (ça fait trop longtemps que j'ai bossé dessus), il t'indique le pourcentage de temps processeur occupé par le processus. Il ne prend pas en compte les unités. de calcul. Si tu veux t'en convaincre, écris une bête boucle infinie qui ne fait rien : elle montera bien à 100% d'utilisation du CPU et pourtant elle calcule quedal.

                        • Partager sur Facebook
                        • Partager sur Twitter

                        Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C

                          27 novembre 2017 à 20:04:11

                          Ksass 'Peuk a écrit [...]

                          Ah oui, je vois. Le temps processeur est en lien avec l'option 'priorité' (très basse / basse / normale / haute / très haute) dans les options des moniteurs et ce qu'on appelle le 'task switching' le système d'exploitation donne du temps processeur pour les applications qui tournent en fond. Ah oui, ça me rappelle des souvenirs. :)

                          PS: dans mon message avec les tests chronométrés de POVRay je voulais mettre en lumière la différence entre des coeurs Logiques (avec doublement des registres) et des vraies unités de calculs (mais je constate qu'il y a bien d'autres facteurs).

                          -
                          Edité par Warren79 27 novembre 2017 à 20:06:39

                          • Partager sur Facebook
                          • Partager sur Twitter

                          Mon site web de jeux SDL2 entre autres : https://www.ant01.fr

                          Erreur de segmentation - Threads

                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                          • Editeur
                          • Markdown