[SPLIT] [BDD] Hyuux!

NEO III

OCPC Membre Premium
GOLD Team Member - VIP
heu, 3 explications possibles:
1: soit le bench souffre d'un bug sur plateforme AMD

:nono-4636:

3: soit l'hyperthreading d'intel plombe complètement les performances des plateformes intel.

:nono-4636:

2: soit notre ami néo c'est dit qu'intel ils avaient super pi, AMD aura donc Hyuux

Hum... pas tout à fait. En fait pour moi c'est une histoire de cache CPU, et en particulier du cache d'instruction (Level 1 si j ne me plante pas). Hyuux! utilise le paradoxe de la dichotomie de Zénon, qui n'est qu'une simple suite géométrique. Au niveau programmation, une suite géométrique n'est qu'une boucle courte d'instructions. Ici, c'est cette boucle qui est utilisée :
Code:
[C++]

long double pival(0);
for(int n = 0; n < 1e7; n++){
     pival += (1e50 / (1 * pow(2,n+1)));
}

Ce genre de boucle tient intégralement dans le cache CPU. C'est à dire que la valeur initiale de mon pival (0) va être tirée de la RAM puis stockée dans le cache CPU, comme toute donnée. Mais comme la boucle utilisée tient intégralement dans le cache CPU, l'ordinateur ne va pas à chaque tour écrire la nouvelle valeur dans la RAM puis la relire :nono-4636: Il va l'écrire et la relire dans son cache. Ce n'est qu'à la fin de la boucle que le résultat final sera remis dans la RAM.

Dans un programme monothread comme SPI, cela n'aurait aucune espèce d'importance puisqu'il faut attendre la fin d'une boucle pour en entamer une autre. La différence entre Hyuux! et SPI est principalement due au fait que Hyuux! est multithread. A chaque passe (test), 20 threads sont créés et chacun calcule la boucle ci-dessus. Au début un thread est attribué à chaque cœur, puis s'il reste encore des threads (ce qui est le cas, nous n'avons pas 20 cœurs sur nos CPU), ils sont soit assignés à des cœurs si la taille du cache d'instruction le permet, soit mis en attente que ce cache se libère pour s'y mettre.
Et c'est là qu'est la différence entre ton processeur et celui des autres hexacores Intel que j'ai vu jusqu'à présent : tu as deux fois plus de cache d'instruction qu'eux. Le cœur peut donc traiter deux fois plus de threads en même temps, ce qui se traduit par un temps d'exécution du bench a peu près deux fois moins long.
 
Dernière édition:
digitalboy01 , n'oublie pas de passer par benchtab si tu veux que ton score soit validé .

Oui, je voulais juste attendre les explications de Neo (que je remercie au passage, tu m'as redonné les bases que j'avais perdue en 6 mois sans programmé quoi que ce soit). Je vais aller poster tout ça sur le benchtab.

[HS]
Au fait Neo, pourquoi le c++ plutot que le java, sachant que le java est plus lourd, mais qu'il permet de faire très facilement un design propre au programme (cadre, couleur, interaction, paramètrage du bench etc.), et ce, beaucoup plus facilement que sur c++?
[fin du HS]
 
[HS]
Au fait Neo, pourquoi le c++ plutot que le java, sachant que le java est plus lourd, mais qu'il permet de faire très facilement un design propre au programme (cadre, couleur, interaction, paramètrage du bench etc.), et ce, beaucoup plus facilement que sur c++?
[fin du HS]

Pour plusieurs raisons. D'une je n'ai jamais touché à du code Java, alors que j'ai des connaissances en C++ :icon17-36f7: De deux parce que Java est un langage semi-interprété. Il est compilé, mais ce résultat est interprété par une machine virtuelle (Java Runtime Environnement). Du coup pour un Benchmark, passer par une VM est totalement suicidaire puisque les résultats seraient dépendants de la version de la VM utilisée (et encore, il n'y a pas que JRE pour interpréter du Java !).

Et puis, la console ça a son charme, non ? :sourire116-287e: Sinon je suis en train de regarder un peu les différents GUI dispo, mais pour l'instant aucun ne me plait vraiment pour le type de logiciel qu'est Hyuux!. Du coup je pense que je vais rester en console. C'est bien, c'est beau (j'aime la console ! :love-98c:), c'est Bosh ça marche.
 
Pour plusieurs raisons. D'une je n'ai jamais touché à du code Java, alors que j'ai des connaissances en C++ :icon17-36f7: De deux parce que Java est un langage semi-interprété. Il est compilé, mais ce résultat est interprété par une machine virtuelle (Java Runtime Environnement). Du coup pour un Benchmark, passer par une VM est totalement suicidaire puisque les résultats seraient dépendants de la version de la VM utilisée (et encore, il n'y a pas que JRE pour interpréter du Java !).

Et puis, la console ça a son charme, non ? :sourire116-287e: Sinon je suis en train de regarder un peu les différents GUI dispo, mais pour l'instant aucun ne me plait vraiment pour le type de logiciel qu'est Hyuux!. Du coup je pense que je vais rester en console. C'est bien, c'est beau (j'aime la console ! :love-98c:), c'est Bosh ça marche.

Effectivement, après le soucis est toujours contournable, le design avec du java (c'est vraiment facile, ça ressemble à du c sans les contraintes des pointeurs par contre avec des tableaux un peu spéciaux) et t'invoques le soft c++ pour faire tourner tout ça en arrière plan. Après t'as juste une classe qui récupère les données du bench et qui les pose dans ton soft en java. :cool-186b:

J'ai plus touché au console depuis que j'ai plus d'ubuntu sur mon pc, faudrait d'ailleurs que je m'y remette, le temps gagné sur cet os par rapport à windows ou faut tout faire à la souris :ko-1c3a:

Bon je stop le hs avant de me faire tirer les oreilles, encore bravo pour ce bench, vraiment bien foutu!
 
Split effectué :icon_wink-221e:

@digitalboy01: Merci :hat-1194:

Pour ce qui est d'invoquer un moteur de calcul à partir d'un soft en Java, c'est un gros gaspillage de ressources couru d'avance. Ça compliquerait la chose et qui plus est ça fausserait les résultats obtenus vu que l'interface travaillerait à attendre la fin du moteur de calcul. Une consommation de ressources inutile et évitable.
Quite à faire une GUI, autant en utiliser une native C++, la gestion des ressources et du comportement logiciel y sera beaucoup plus simple.

Et le Java je trouve ça lourd, ça ne vaut pas une bonne appli en C++ :icon17-36f7:

EDIT : J'ai trouvé un bon tuto sur la GUI WINAPI, je pense que je vais essayer 2-3 trucs avec (ça me permet de garder un soft léger puisque j'utilise déjà la lib de WINAPI pour d'autres fonctions) :sourire-4e62:
 
Dernière édition:
Oui mais de mes souvenirs de c et c++ c'est horriblement compliqué de faire ce genre de chose. Dans tout les cas bonne chance (je commence à comprendre pourquoi tu aimes tant cette console :ko-1c3a: ).

Tu as déjà essayé Netbeans et ce genre de gui? Je l'utilisais lui et eclipse pour faire du java, mais si mes souvenirs sont bons on peut aussi y faire du c et du c++. Ils étaient d'ailleurs vraiment bien fichu (avec une petite préfèrence pour eclipse ceci dit).
 
Tu as déjà essayé Netbeans et ce genre de gui? Je l'utilisais lui et eclipse pour faire du java, mais si mes souvenirs sont bons on peut aussi y faire du c et du c++. Ils étaient d'ailleurs vraiment bien fichu (avec une petite préfèrence pour eclipse ceci dit).

Tu veux plutôt parler d'IDE je pense :icon_wink-221e:

Niveau IDE, je n'ai jamais essayé Netbeans. J'en utilise deux en particulier quand je programme : pour les sites web, le PHP et tout ce qui va avec, j'utilise Eclipse, et pour le C++ j'utilise Code::Blocks.

Pourquoi pas Eclipse pour le C++ ? Parce que j'ai appris sur Code::Blocks avant d'utiliser Eclipse pour le reste, du coup j'aime pas mal cet IDE pour le C++ :sourire-4e62: J'avais essayé le C++ via Eclipse, mais j'avais mes petites habitudes sur C::B, du coup j'y suis resté :sourire116-287e:
 
:doh-454d::ko-1c3a: Faut vraiment que j'arrête d'écrire à des heures pas possible, j'arrête pas de dire des conneries :god-17c6:

Ah oui codeblock, c'est celui sur ubuntu à la base c'est juste?

Pff, vivement que les vacances soit finie, ça me va vraiment pas du tout.
 
C::B est cross-platforme, mais n'est pas installé par défaut sur Ubuntu. Aucun IDE ne l'est.
D'ailleurs, quand je faisais du C++ sous Linux, je codais tout avec l'éditeur de texte Gedit et je compilais à la main, en lignes de commandes :icon_wink-221e: A l'époque, C::B était encore pas mal buggé et avait de vielles fuites de mémoire :wobble-18a4:
 
Ok, Outch, j'ai appris comment le faire, et c'est plutôt lourd comme procédé. Suis de la génération juste après, où tout le travail est/a été prémaché. :cool-186b:
 
Je suis plus "old school", j'aime mettre les mains dans le cambouis :icon17-36f7:

EDIT : La GUI WINAPI me plait pas mal pour l'instant, je pense que je vais l'utiliser si j'arrive à faire ce que je veux avec :sourire-4e62:
 
Dernière édition:
Retour
Haut