votre avatar Abonné

BlackLightning

est avec nous depuis le 9 mai 2021 ❤️

788 commentaires

Le 07/11/2024 à 18h 35

oui effectivement je dis que il y en toujours eu et il dis que il y en aura de plus en plus mais je ne suis quand même pas d'accord avec ça. Il fait un lien de causalité entre la complexité des systèmes et le nombre de faille matérielles connue qu'il y aura dans le futur. Je suis d'accord que plus un système est complexe plus il y a de chance d'avoir une faille, mais cela peut être compensé par le fait qu'on peut mettre plus de moyen pour les trouver et les corriger avant release. Donc pour moi le lien de causalité n'est pas avec la complexité d'un système mais avec l'étendu des tests fait (test coverage en anglais)

Je n'ai pas de chiffre mais je n'ai pas l'impression qu'il y en ait plus qu'avant au contraire je dirais que il y en a autant et qu'elles sont moins évidente, les failles deviennent ultra complexe à trouver alors qu'avant sur des systèmes moins complexe il y avait des failles pas si dure à trouver. En plus vu que plus de monde s'intéressent à ce genre de faille et leur conséquence on en entends plus parler aussi.

Les GPU sont un bon exemple ils sont aussi complexe que les CPU et ont des failles et pourtant on en entends pas ou presque pas parlé. Next par exemple n'en as pas parlé ou le moteur de recherche de next ne les trouvent pas et pourtant il y en a aussi.
https://www.01net.com/actualites/les-cartes-graphiques-dapple-amd-et-qualcomm-sont-victimes-dune-faille-de-securite.html
https://www.hardwarecooking.fr/nvidia-corrige-8-importantes-failles-de-securite-sur-ses-gpu/

Je ne sais pas pour la corrélation. Je pense que le problème est multi-factoriel et non-linéaire. Au mieux une corrélation mais la causalité je ne sais pas.

Par contre, je pense qu'il y aussi deux biais : L'un d'observation lié aux fait que plus de gens s'intéresse maintenant qu'avant. Et l'autre que l'accès à ce genre d'informations est plus largement diffusable et diffusé qu'hier. C'est pour ces raisons que je ne m'avance pas pour la causalité.

Pour les GPU je pense qu'il y a autres choses en jeu. Je vois au moins deux facteurs: la vitesse d'évolution des GPU rendant rapidement une faille obsolète à l'usage, et la nature des données à récupérer. Un GPU ça sert concrètement à du calcul ou du jeux vidéos. Un CPU ça fait beaucoup de choses et surtout ils ont accès plus facilement à des données sensibles (clé de chiffrements, token d'ID...) ce qui fait que ce sont des cibles plus intéressantes.

Par exemple, un GPU chez un provider a très peu de chance de voir passer des clés cryptographiques. Il servira à du calcul numérique (CFD, deep learning...). En revanche un CPU va travailler avec les token d'ID, les clés SSH... rendent plus interessante cette cible. Et surtout le provider va conserver plus longtemps un processeur qu'un GPU. Par exemple chez OVH, on peut encore louer du Skylake.

Le 07/11/2024 à 14h 04

Tout va dépendre des utilisateurs finaux et du pouvoir de nuisance associé à la faille pour eux.

Si ton utilisateur final est Mme Michu, on peut en effet se poser la question.
Si ton utilisateur final est un cloud provider (e.g., OVH), la correction est mettre en regard de son impact sur les performances et le service proposé.

Néanmoins, même si tu désactives les failles car tu considères que c'est ok. Tu peux avoir des softs qui inclus ces contre-mesures dans leur code. Et là, tu ne peux rien faire si le code n'est pas open-source.

Le 07/11/2024 à 13h 59

non rien à voir avec la complexité d'un matériel. Il y a toujours eu des bugs/failles hardware et il y a de plus en plus de gens qui s'intéressent de près à ces failles car cela contourne toutes les protections logicielles. Et statistiquement plus tu mets de personnes qui cherche quelque chose plus tu as de chance d'en trouver.

L'affirmation de @Gilbert_Gosseyn ne contredit pas la tienne. Plus un système devient complexe, plus la probabilité d'une faille/bug est prononcé. Il serait possible de supprimer Spectre et ses variantes des procs en supprimant le prédicat de branchement (en autres). Mais l'impact sur les performances seront cataclysmiques. Et c'est bien parce que le prédicat de branchement est complexe, qui est plus susceptible de contenir des failles.

Le 06/11/2024 à 22h 59

Le financement vient du pourcentage du PIB que mette chaque état dans leur propre défense, les membres de l'OTAN s'était mis d'accord pour atteindre 2% on y arrive à peine mais il faut atteindre 2,5% voir 3% la Pologne est à plus de 4,5% et sont en train de prendre le lead de l'Europe à la place du couple Franco-Allemand. Vous croyez que les F22 ou F35 ils donnés gratuitement ?

Justement, j'aimerais bien que les F22 et F35 ne soient pas achetés. Mettre du PIB dans la défense, c'est bien et c'est souhaitable vu le contexte actuel et futur. Par contre, ça serait bien que cette argent de l'UE n'aille pas dans les poches de l'oncle Sam inutilement, et servent à faire tourner aussi nos industries d'armements. C'est juste mon point.
On peut néanmoins toujours s'entendre sur des normes (e.g., calibre des armes à feu).

Le 06/11/2024 à 19h 26

Ce qui me fait le plus peur c'est plutôt le fait que Trump affirme haut et fort laisser tomber l'Europe concernant la défense, donc d'ouvrir la porte à des scénarios plus que probable qu'après l'Ukraine, ce soit les pays balte, la moldavie etc.
Je ne pense pas qu'un seul pays Européen soit en mesure de mener une guerre actuellement, tout le monde se "repose" sur le parapluie Américain, donc Trump a raison, mais maintenant il faudrait que l'Europe se réveille rapidement...et pas pour acheter Américain (bonne chance pour construire une défense fiable sans financement).

On peut construire fiable et l'argent n'est pas le problème si on emprunte collectivement (cf. rapport Draghi).

Par contre, je ne sais pas si les allemands ou les polonais seront de cet avis pour construire une vrai défense européenne sans matériel et logiciel US... Et je suis aussi pessimiste sur la capacité des pays européens à s'accorder de manière intelligente sur qui fait quoi.

Par contre, je ne pense pas que Trump laisserait tombé l'UE. Notre marché est très important pour les US et une guerre ne serait pas bon pour leur business sur le sol européen. Et l'économie c'est important pour Trump.

Le 06/11/2024 à 20h 09

les US ne sont pas nos alliés
?

My bad, je voulais dire amis.

Le 06/11/2024 à 19h 19

Et pendant ce temps, nos politiques font des restrictions budgétaires pour satisfaire une note comme lorsqu'ils étaient à leur "grande école", note qui est attribuée par les agences américaines dont la mentalité sur le rôle de l'état (sécurité sociale, santé, éducation) est antagoniste du notre.
Le souci des notes attribuées par ces agences, c'est qu'elles servent aussi d'indicateurs pour les créanciers puisqu'elles correspondent à un indice de solvabilité. Si elle baisse, les taux d'intérêts de la dette d'augmentent parce que l'Etat emprunteur est considéré comme à risque. Voire, il n'arrive plus à emprunter et se voit déclaré en faillite.

Dans le cas où un Etat manque de cash, l'impact n'est pas neutre vu qu'il ne peut plus assurer ses fonctions régaliennes et perd l'accès aux marchés financiers permettant d'emprunter.

Je n'ai rien contre l'existence de ce genre d'agences. Mais... Elles ne sont pas européennes ! Et par conséquent une arme de soft-power. N'oublions pas que les US ne sont pas nos alliés et que ce genre d'agence est un moyen de pression sur la France (mais aussi l'Europe).
A ma connaissance leur méthode de calculs ne semblent pas librement accessible. Donc, j'ai envie de dire comment je peux savoir si c'est rigoureusement fait ou bien en faisant un lancé de dés.

Ensuite, je critique la valeur de ces fameux 3% alors que des pays comme les US ou la Japon sont à 6% et s'en moque un peu. Ce que je ne pige pas, c'est pourquoi on embête la France sur ce point (qui est un peu un OVNI en terme de dépense à cause de son armée et son occupation géographique en autres). Surtout que c'est 3% sont sortis de nul part (et je ne considère pas l'économie comme une Science). Et nous savons parfaitement que la France a les moyens de rembourser, au besoin.

Pendant ce temps-là, les US investissent, le Japon investit et la France (et l'UE de manière générale) sont à la traine. Et dans un plan à 3 avec l'US, l'Europe et l'Asie, les US sont trop pudique pour inclure l'Europe dans leur galipettes.

Mais là, c'est un HS par rappport au sujet, je pense.

Le 06/11/2024 à 17h 00

En phase, quand on voit EELV et Sandrine Rousseau prof d'économie ... Mais ça va même plus loin que l'économie. Mettons au ban de la société ces sectes qui nous font régresser.

Même sans parler de Rousseau. Cette fumisterie des 3% quand on voit comment les américains produisent de la dette pour leur industries avec une dette > 6% du PIB, idem pour le Japon. La Chine qui investit dans son économie... Et pendant ce temps, nos politiques font des restrictions budgétaires pour satisfaire une note comme lorsqu'ils étaient à leur "grande école", note qui est attribuée par les agences américaines dont la mentalité sur le rôle de l'état (sécurité sociale, santé, éducation) est antagoniste du notre.

Le 06/11/2024 à 13h 54

Allez l'Europe ! Maintenant faut se sortir les doigts du * et commencer à penser au 21ème et arrêter de réfléchir avec des idéologies économistes digne d'un gourou de secte !

Le 06/11/2024 à 13h 51

Je vais conclure là-dessus:
- tout à fait d'accord, RISC ou cisc, ce n'est qu'une façade. Et même RISC-V n'est qu'un ensemble d'ISA, l'implémentation 'hardwired' d'un RISC-V est possible, mais ne permet pas les performances d'un CPU qui redécoupe/réorganise
- en termes de langages, je connais fortran et ses extensions (MPI/OpenMP) que j'ai utilisé il y a plus de 20 ans sur du code matriciel et 64 CPU. Je n'ai pas compris que fortran ne soit pas utilisé avec le GPGPU et le SIMD.
- pour les dev, c'est très variables. Mais j'estime que dans les outils bureautiques/internet, les CPU sont sollicités essentiellement pour de la comparaison de chaîne (indexation des colonnes, des attributs par nom, interprétation de scripts, de XML, de HTML...) +le chiffrement (donc multiplication et division entières). Tout soft de compta utilise une représentation parfaite des nombres (donc pas de virgule flottante) et ces opérations n'ont pas de bench généralement (bon, un peu avec les benchs bdd). Donc se poser la question de comment ma structure va tomber avec les pages mémoire ou si mes nombres sont alignés et si ma boucle passe en cache... C'est loin de 90% des dev.
- est-ce que les Apple M ne ressembleraient pas un peu aux transmeta?

Je rebondis juste sur la partie Fortran car pour le reste je suis ok, et pour le coup on a une expérience assez proche dessus (peut-être pas en durée d'années, par contre).

Fortran fait du SIMD mais il délègue ceci aux compilateurs. Tu le peux faire un peu plus "nativement" via l'iso_c_binding sur les intrinsiques. Note que le C++ propose d'introduire le SIMD dans la norme C++26. A ma connaissance actuelle, seul Rust propose de faire du SIMD d'une façon naturelle.
Dans tout les cas, il faut checker l'assembleur et parfois jouer avec les options du compilateurs et le code pour arriver à ses désirs.

Pour le GPGPU, tu peux regarder du coté d'OpenMP pour les calculs hétérogènes ou OpenACC. Certains compilateurs comme pg ce sont aussi associées avec Nvidia pour intégrer du CUDA en Fortran sous forme d'extension.

Le 05/11/2024 à 22h 29

Actuellement les cpu sont une jungle. Les ISA sont pleines d'extensions, certaines remplaçant les autres, d'autres à mi-chemin d'être un NPU.
Mais les langages 'classiques' sont incapables de gérer correctement ces instructions. C'était d'ailleurs le constat dans les années 80 qui a amené le RISC et les 1er ARM: l'adoption de compilos haut niveau faisait disparaître l'usage des instructions cisc (par exemple, un x86 a des instructions de calcul en mode quasi texte ou de recherche qui ne correspondent à rien dans les langages).

Bref, je te donne raison sur l'intérêt de bien connaître son archi.

En même temps ces annonces ARM me rappellebt les années 90 quand IBM/Apple faisaient du Power PC (et les difficultés d'IBM à sortir le meilleur des power pc - ainsi que la difficulté de prédire comment allait se comporter le cpu ce qui gênait les dev en assembleur).

Bref, même si Apple a un excellent CPU, je n'enterrerait pas le x86 avant un moment. (Tout en remerciant AMD de montrer à Intel comment implémenter AVX512)

Oui les ISA sont devenus assez bordéliques, et je pense qu'une partie provient de la complexité croissante des processeurs qui deviennent de plus en plus "diversifié". Une autre partie provient des ballons d'essais, d'évolution (unités vectoriels passant de 128 -> 256 bits), de choix marketing...

Néanmoins tout les processeurs sont des risc à l'heure actuelle si on regarde dans les détails. Les x86 sont certes des CISC, mais dès le tout début du front-end du CPU, tu as une conversion des instructions en micro-opérations, qui ressemble furieusement à ce que tu as en risc. Est-ce une bonne chose ? Honnêtement je ne sais pas à l'heure actuelle. Les deux approches ont des avantages et inconvénients.

Mais néanmoins je pense que ce n'est pas nécessairement un problème de langage. Il existe un langage pour ça, et c'est l'assembleur. Les langages de haut-niveau s'appuie dessu via un interpréteur (compilateur, JIT...).
Je pense que le soucis concerne la capacité du compilateur a comprendre un code ou une fonction dans sa globalité et comment l'optimiser avec les bonnes instructions. Il y a, selon moi, une responsabilité majeure des développeurs qui, pour la très grande majorité, ignore comment fonctionne un ordinateur, et par conséquent n'ont pas connaissance de ce genre de détails et son impact.
Mais finalement, bien que non-idéal, on s'y retrouve sous la le bon outils pour la bonne tâche.
VLC est en majorité codé en C++, et tu trouves de l'assembleur pour les fonctions les plus critiques (e.g., en/decoders).

Je n'ai malheureusement jamais joué avec l'architecture PowerPC :( Mais je ne perds pas espoir avec la possiblité d'en louer ou d'en acheter un). En revanche, de ce que j'ai vu de son fonctionnement, elle a des trucs sympathiques.

Je te rejoins à 100%, l'x86 n'est pas mort ni à court ou moyen terme. Et oui, merci à AMD pour le double pumping qui ouvre la voie à de possibles folies (AVX-2048 ? :fume:). Apple ouvre une voix pour le particulier, mais c'est aussi la face visible d'un iceberg (Graviton, Ampère, Axion...).

Le 05/11/2024 à 18h 43

Petit complément pour illustrer un peu la situation actuelle, où le CISC (et cela touche aussi ARM avec les différentes extensions d'ISA) reste difficile à mettre en place dans les compilo: x.com Twitter

(en espérant que ce x94 en perf n'équivaut pas à générer un film en noir et blanc :) )

Sympa, Peux-tu m'expliquer le lien entre CISC, la difficulté du compilo et les x97 de perf ? Je n'arrive pas à saisir ton point.

Le 04/11/2024 à 14h 52

"c'est les détails plus profonds comme l'IPC, la longueur du décodeur d'instruction, le TLB, l'organisation des unités flottantes, la longeur du data path"

Autant ce sont des informations précieuses quand on fait des compilateurs CPU, autant sur des machines ultra hétérogènes et des traitements répartis comme maintenant, ça a peu d'intérêt je trouve, sans compter que l'IPC ARM et l'IPC x64 sont non comparables, surtout si on parle d'IPC de type AVX ou autre.

Ce qui m'intéresserait, c'est de voir comment les Apple Mx réorganisent les instructions. Je penche depuis le début pour une réorganisation qui tant vers une exécution proche du VLIW, ce qui expliquerait en grande partie les perfs en émulation.

Mais c'est du pinaillage: si je développais des compilateurs ça m'intéresserait, mais pour de l'utilisation, ce qui m'intéresse c'est plus le confort (qui n'est pas totalement /uniquement lié aux perfs théorique d'un CPU)

"Autant ce sont des informations précieuses quand on fait des compilateurs CPU, autant sur des machines ultra hétérogènes et des traitements répartis comme maintenant, ça a peu d'intérêt je trouve, sans compter que l'IPC ARM et l'IPC x64 sont non comparables, surtout si on parle d'IPC de type AVX ou autre."

Tu es dans le vrai pour le compilateur. En revanche je ne suis pas en total accord pour la suite. Certaines de ces informations sont pertinentes pour des cas d'usages. Le TLB a une énorme importance pour les accès mémoires, sa profondeur et la taille des pages peut avoir une influence non-négligeable sur certains scénarios mais connaître aussi le nombre d'unités FPU sont des détails importants. Pas uniquement pour les compilateurs ou des applications spécifiques, mais aussi pour voir l'évolution d'une architecture et éviter le discours marketing.

Même si ton architecture est très hétérogènes au sein de ta puce (CPU, NPU, GPU...) il n'empêche que c'est intéressant en soi d'avoir les informations propres à chaque partie et à leur interconnexion, indépendamment du fait que tu réalises plus de calculs d'un type que d'un autres.

Bonne question pour VLIW, je ne sais pas pour le CPU. Par contre pour le GPU et le DSP c'est plus que probable car c'est plutôt répandu.

*
"Mais c'est du pinaillage: si je développais des compilateurs ça m'intéresserait, mais pour de l'utilisation, ce qui m'intéresse c'est plus le confort (qui n'est pas totalement /uniquement lié aux perfs théorique d'un CPU)"*

Et moi ce qui m'intéresse, au delà du confort, c'est d'avoir un processeur adapté à mon usage. Si je dois acheter (ou louer) ce type de machine, j'aime savoir ce qu'il y a dedans à minima pour faire un choix éclairé.

Après je tiens à préciser: Mme Michu & co n'ont clairement rien à faire de ceci. La notion même de fréquence ou de coeur de calculs sont très loin dans leur critère d'achat. Elles préfèrent des arguments plus "marketing" que techniques. Et sur ce point, elles achèteront Apple pour ce qu'Apple représente et non ce qu'Apple a mis comme génie dans la puce.

Le 01/11/2024 à 11h 15

C'était assez superficiel quand même pour le M1.

Et les concours de com de Intel et AMD ne servent qu'à une partie des clients, une autre partie d'en moque. Cela contribue même à l'impression d'ultracomplexité de l'informatique. Plus on a d'infos, plus on a de comparaisons à faire, plus il y a de doutes...

Un peu comme vendre une voiture de série en indiquant jusqu'au 0 à 100 par défaut...

ça dépend de tes usages. De mémoire, les benchmarks génériques n'étaient pas forcément les plus impressionnants. Par contre, dès que tu passes en calculs flottants, le M1 était quand même impressionnant à son époque. Mais c'est quand même un usage assez spécifique je te l'accorde.

Je me sers pas de la com' de ces boîtes. Mais ce qui m’intéresse c'est les détails plus profonds comme l'IPC, la longueur du décodeur d'instruction, le TLB, l'organisation des unités flottantes, la longeur du data path.... Et c'est pour ça que je préfère les slides car ces informations sont parfois accessibles. Et je chérie ces informations car avec tu peux comprendre ce qui se passe dans le CPU mieux que les slides des marketeux sur les perfs du CPU lors de benchmark (dont on ne connait jamais les conditions de tests [OS, température ambiante...])

En ce qui concerne l'ultracomplexicité de l'informatique... Et bien oui l'informatique est une science et c'est très complexe. Rien de nouveaux sous le Soleil. Par contre, la quantité d'informations n'est pas un problème tant que ce n'est pas du bullshit de marketeux (parce que ça c'est vraiment cancérigène).
Après, c'est à chacun de savoir ce qu'il intéresse dans les infos et ce qu'il considère comme utile à garder ou à ignorer pour son analyse. Ce n'est, cependant, pas propre à l'informatique ou même spécifique à ces histoires d'architectures CPU.

Le 31/10/2024 à 15h 43

"C'est un back-end Apple top moumoute encore mieux que le précédent :fumer: "

Tu voulais quel genre de com de leur part ?
Apple communique rarement sur la partie matériel, c'est "accessoire", le plus important c'est l'expérience utilisateur.

De mémoire Apple avait communiqué sur son archi pour les M1. Et comme ils développent leur propre puce, ils pourraient avoir des slides similaires à Intel et AMD histoire de jouer "qui à la plus grosse" (ils aiment ça les Ricains) ou bien de dire "Venez chez nous, l'x86 c'est pour les vieux".

Le 30/10/2024 à 21h 10

Est-ce qu'Apple a communiqué sur les détails du back-end de leur CPU ?

Le 28/10/2024 à 21h 38

Je peux t’assurer qu’on sait faire du cloud efficace.
C’est juste pas mis en avant parce que Cloud Avenue, le navire amiral (et FCA/FE/FCP en leur temps) sont des usines à gaz, avec trop d’intervenants et de commerciaux, chefs de projets et toute l’armée mexicaine. (Et probablement quelques décisions discutables dues à des tentatives de faire simple)
Ça n’est pas tellement compatible avec une tentative de cost-killer tel que les GAFAM les ont construits…

Il y a des clients privés, qui ont leur cloud privé, qui sont très contents de ce qu’on leur a construit.

Autant pour moi. J'en étais resté à ces histoires d'usine à gaz avec d'autres ESN qui n'avaient pas vraiment eu du succès.

Mais néanmoins, si je comprends mieux la position d'Orange je vois pas le lien avec le HPC. L'infra est une chose, mais les outils derrières (toolchains, compilateurs), le portage des libs et l'optimisation des codes, etc.... C'est pour la partie HPE ?
Parce qu'HPE, Eviden et co j'en ai entendu parlé sans soucis, mais je n'ai jamais vu ni eu un interlocuteur d'Orange dans ce domaine.

Le 26/10/2024 à 16h 15

Les box c'est Sagemcom, hein (et pour moi, le matos est pas si mauvais c'est la couche soft qui est catastrophique dans ces box, tant en terme de stabilité que de fonctionnalités. Or pour ces dernières c'est bien orange qui est à la manœuvre).

Pour le réseau, je suppose que ça dépends assez fortement des critères personnels sur ce qui est bon ou pas.

HP je suis pas fan non plus mais plus sur l'aspect commercial (coder les SFP et les disques pour qu'on puisse ne mettre que ceux acheté 10x le prix chez HP par exemple) que sur le matériel , sur lequel j'ai eu, statistiquement, plus de panne que sur du Dell par exemple (je parle de serveurs) - et là encore impossible de savoir "ce qui se passe" , le support réponds "achetez un nvx serveur car le votre est plus sous garantie".

Yep, pour les box je parlais spécifiquement du soft. J'étais au courant pour Sagemcom grâce à la vidéo de DeusExSilicium.

Malheureusement pour Orange, ils n'ont jamais réussi à construire une infrastructure cloud efficace en leur temps. D'où le fait, que mis à part le réseau je ne vois pas l'intêret d'Orange sur le plan technique.
En revanche, si on dézomme un peu on peut en voir un. Les états-unis utilise les entreprises françaises comme vecteur pour infiltrer nos derniers marchés (Comme Thalès avec son cloud US mais normalement SecNum...). Et toute le monde est gagnant à court terme. Les US ont leur marché chez nous et nous affaiblissent (note que les politiques français aident aussi de leur coté) et les boîtes françaises ont des rentrées d'argent sous forme d'un "loyer". Mais sur le moyen ou long terme, si on ne se dépêche pas de stopper ceci on est bon pour être dépendant des US comme un drogué de son dealer...

Le support de ces boites que tu cites je ne les aime pas. Faut batailler des heures pour avoir quelqu'un de compétent techniquement qui ne lie pas sa fiche. Par contre, une fois que tu arrives à cette personne, les problèmes sont vite résolus. Pour le support commercial... Je n'ai jamais eu assez de points en diplomatie pour pouvoir parlementer avec eux, merci aux collègues qui pouvait me remplacer :)

Le 25/10/2024 à 22h 40

Franchement, Orange sur ce secteur... A part pour l'aspect réseau de la machine, j'ai du mal à voir en quoi Orange est un choix pertinent d'un point de vue technique. Certes leur réseau est très bon, mais leur box sont nulles.
HPE (et oui je pense pas que ce soit HP), est un choix raisonnable mais Atos est français. Oui, ils ne produisent pas leur propre matériel, mais c'est pas de leur faute. La France n'a pas les politiques adaptés à ses cerveaux, et puis il faudrait pas vexer les américains & Ursula.

Par contre, le "comme je le dis souvent, beaucoup d’ordinateurs du ministère des Armées ont Microsoft, c’est comme ça, il n’y a pas de solution française. C’est plutôt la mise en œuvre de ce soft, la manière dont les ingénieurs le mettent en œuvre, avec nos protocoles de sécurité, qui nous permet justement de ne pas avoir d’ingérence"

Et comme je le dis souvent les politiques sont les derniers de classes en informatique ! (Au tiens, encore un gars sortant de fac de droits... De là en tirer une causalité....)L. a solution française monsieur le ministre des armées, c'est un buget et des ingénieurs pour maintenir une distro Linux adapté ! Vu la gabagies de la Macronie, ça doit bien pouvoir se trouver, non ?!
Et là monsieur le ministre, c'est français, souverain et sécurisé !!

PS : ça vous parle le IME, la NSA, le Dual EC RGB et le principe de Kerchkoff et Palentir ?

Le 24/10/2024 à 21h 12

Si ça ne te dérange pas d’installer une application Electron de plusieurs centaines de Mégas, tu as Upscayl (Open Source) :
https://github.com/upscayl/upscayl

Disclaimer : je ne l’ai testé que sous Windows.

Sinon, en ligne de commande, il y a Real-ESRGAN (qui est utilisé par Upscayl, d’ailleurs) :
https://github.com/xinntao/Real-ESRGAN

Super ! Merci beaucoup !

Le 23/10/2024 à 21h 51

Existe-t-il des softs similaire pour de l'upscaling sous Linux ou MacOS ?

Le 21/10/2024 à 21h 53

Pas sûr. Il abandonnera l'Ukraine. Il ne lèvera pas le petit doigt pour défendre Taïwan. La guerre ne sera pas mondiale : les USA n'y seront pas mêlés.

Pour l'ukraine, je suis d'accord.

Par contre pour Taïwan, je ne sais pas. Si la Chine met la main sur TMSC, Nvidia, Intel, AMD et j'en passe risque de ne pas apprécier (taxes, espionnages industrielle....) Bah sur que ce soit si interessant pour lui de ne rien faire.

En revanche Trump sera bénéfique pour l'UE, peut-être pendant son mandat cependant.
Mais il va forcer les instances européennes remplies de pro-US a revoir leur position et encourager notre indépendance sur certains point.

Le 07/09/2024 à 22h 26

Non, Rust n'est pas mur. Son ABI n'est pas encore très stable dans le temps.
Dans le contexte de Rust for Linux, l'ABI n'est pas un problème. en effet le code Rust devant interagir avec du C, il utilisera l'ABI C qui est stable.

C'est vrai et c'est actuellement ce qui est fait. Mais c'est uniquement valable si Rust ne reste qu'un wrapper du kernel, et ne mets pas à profit certains de ses avantages pour des fonctions bas-niveau du kernel plus sensible (e.g., FS, scheduler, IPC...). à l'heure actuelle sous Linux.
Mais dans ce cas, pourquoi s'embêter à maintenir deux langage ensemble si l'un des n'est qu'un wrapper ? J'en vois pas l’intérêt, et qui plus Rust est a une courbe d'apprentissage assez raide par rapport à du C.

Par contre, et c'est un scénario qui va arriver dans le futur si Rust reste, quid des fonctions codés en Rust vont devoir se brancher avec du C durant la migration de pans du kernel de C-> Rust ?

Le 06/09/2024 à 22h 41

"je pense que tout langage qui en rajoutera sa couche avec en prime une perte de performance, même faible"

Justement, Rust est un peu le premier langage a avoir réussi à améliorer des choses niveau perf, et niveau fonctionnalités. D'où son acceptation dans les kernels (Linux, Windows, BSD un jour?)
Certaines constructions sont très intéressantes, sa façon de les compiler plutôt clean.

Franchement, c'est un vrai langage neuf - malgré effectivement une syntaxe dure à appréhender au 1er abord (et au 2nd, et au 3ème...)

"surtout pour le pb très largement réglé de la mémoire"
Bof bof. C'est réglé par de bonnes pratiques difficiles à maintenir/vérifier, soit par des mitigations compilo potentiellement coûteuses.

Mais attention: si Rust règle les problèmes mémoire, il ne règle pas les problèmes de sécu ou de perf liés à l'architecture même du programme ou des protocoles.

*Justement, Rust est un peu le premier langage a avoir réussi à améliorer des choses niveau perf, et niveau fonctionnalités. D'où son acceptation dans les kernels (Linux, Windows, BSD un jour?)
Certaines constructions sont très intéressantes, sa façon de les compiler plutôt clean.*


Améliorer les choses niveau perf ? Tu peux m'expliquer stp. Parce que niveau perf code, sa syntaxe est un frein à l'optimisation et son temps de compilation (même pas parallélisable) est infecte.

Quelles sont, selon toi, les ajouts utiles de Rust pour dev kernel ? Pour du dev de soft, voir de drivers pas de soucis mais pour des fonctions kernels pures et dures ?

Le 06/09/2024 à 22h 36

"C'est pas une nouvelle solution a la mode qui sera abandonné dans 3 ans."

Rust a 10 ans passés. Il est maintenant mûr, il a montré de très grandes qualités native sur la sécu, le multitâche, les perfs et la conso de ressources.

Mais je comprends parfaitement l'agacement de la réécriture face à la maintenance. Le risque à réécrire est grand. Et les développeurs noyau ont un sacré égo - donc rust pour la ligne de commande ça ne les dérange pas, mais rust dans les pilotes ça les gêne.

De même, le C, c'est très (très très) proche de l'assembleur - on a l'impression de piloter hyper finement, de maîtriser, là ou rust n'est pas aussi transparent.
Par contre rust implémente certains concepts comme le parallélisme et le SIMD via des librairies de base et la syntaxe normale, pour le C c'est franchement de l'extension et ça sent bon la verrue depuis toujours par exemple.

Rust a 10 ans passés. Il est maintenant mûr, il a montré de très grandes qualités native sur la sécu, le multitâche, les perfs et la conso de ressources.


Non, Rust n'est pas mur. Son ABI n'est pas encore très stable dans le temps et il évolue encore trop vite pour parler de maturité. Pour faire des codes qui vont être oublié dans le user-space, pourquoi pas. Mais pour un kernel (je parle pas des drivers), Rust va demander une plus grande maintenance de par ses futures évolutions.

Sur la sécu mémoires uniquement, Rust est en effet assez novateur.

Pour la partie perf, en monocoeur Rust est moins bon que le C compilé avec GCC en raison de LLVM, idem pour la partie conso des ressources. Mais ça reste à la marge en général. Par contre niveau du temps de compilation assez délirants pour être devant être mur.
Pour le multitâche, Rust est pas mal pour de la mémoire distribuée, il ne fait guère mieux que le C. Mais en mémoire partagées, sa manie de tout copier ou de mettre des verrous partout le rendent moins rapide que le C.


Par contre rust implémente certains concepts comme le parallélisme et le SIMD via des librairies de base et la syntaxe normale, pour le C c'est franchement de l'extension et ça sent bon la verrue depuis toujours par exemple.

Vrai question. Tu trouves le parallélisme sous Rust plus facile ? Déjà que la syntaxe de Rust est son plus gros défaut (à ce niveau même l'API de Windows est plus lisible) mais pour piger le calcul parallèle en Rust c'est juste infect. Trop verbeux, trop syntaxe inutilement cryptique. Pour le SIMD en Rust, c'est la même chose en plus de nécessiter de l'unsafe et devoir écrire de l'assembleur haut-niveau.
Alors, le parallélisme en C, ça peut vite devenir dégeu. Je suis d'accord. Mais le SIMD en C, non c'est clairement plus lisible qu'en Rust.
Et pour les deux, les libraires sont natives (i.e., fournit avec le compilateur).

Le 06/09/2024 à 22h 27

Redox.

Le 29/08/2024 à 23h 01

En supposant que ton chiffrement est incassable en un temps acceptable, tu as toujours la possibilité de faire des attaques par canaux auxiliaires.

Imagine ton satellite espion s'approchant de sa cible pour écouter les émissions électromagnétiques de celle-ci. Si sa cible active ses instruments (e.g., caméras) il y a de fortes chances pour que le satellite espion puisse le détecter et savoir où tu observes. Il ne sait pas forcément ce que tu cherches ni comment tu observes (visible, IR...) mais il sait que tu observes cette région.

Idem, il peut aussi savoir où tu transmets les données par la suite, même si elles sont chiffrées. Si ton antenne de reception terrestre (et aussi d'envoie de commande) se situe en France, tu peux penser que la France est derrière ce satellite et s'interesse à tel et tel zone/objectifs.

Le 29/08/2024 à 22h 56

Je me demande s'il n'existe pas aussi des "lasers radio" qui pourraient cramer les antennes à distance.

Officiellement je ne sais pas, sauf avec une IEM.

Par contre, il existe bien des émetteurs micro-ondes suffisamment puissant pour étudier les hautes couches de l'atmosphère et pour laquelle, lors d'une session de "tir", une zone d'exclusion aérienne est nécessaire avant opération.

Le 29/08/2024 à 19h 40

Si tu veux pas détruire le satellite pour éviter des débris, le plus simple est d'utiliser un laser au sol pour aveugler/détruire les senseurs optiques du satellite.

Et au sol, la puissance ce n'est pas un problème.

Le 29/08/2024 à 19h 37

Oui, sur des routines ciblées, je le conçois. Mais juste sur le coeur du sydtème, ça m'étonne.

Justement le coeur du système c'est là que tout se passe. C'est d'autant plus visibles que ces modifications doivent touché des élements très utilisées (e.g., task scheduler, mémoire...).

Un exemple parmi d'autres (mais pour c'est pour l'idée).
Imagine une fonction qui vérifie qu'une page mémoire existe. Tu veux évidemment gérer le cas où la page mémoire n'existe pas. On peut s'attendre à un truc du genre:

//Du code ici
if (mypage==NULL)
return -1;

//Du code là


Le truc, c'est comment le compilateur va le gérer. Par exemple, GCC tant à considérer que la 1er condition est celle qui est, par défaut, la plus probable. Ainsi, GCC va supposer que c'est très souvent le cas (en pratique ce n'est pas le cas, c'est une situation exceptionnelle donc improbable) et va mettre le code en conséquence. Sauf que voilà, le prédicat de branchement va suivre le truc et vite comprendre qu'il s'est trompé entraînant (au niveau du kernel) un stall complet le temps de flusher le pipeline, de restaurer les registres et de repartir sur des bases saines.

Si maintenant, tu réécris ce code pour faire comprendre au compilo c'est un cas improbable le prédicat de branchement va parier sur le fait que la condition est toujours fausse et que donc il peut passer cette étape enchaîné la suite. Ce qui dans la majorité des cas est vrai et donc gain en vitesse car ton prédicat de branchement est ok.

Avec des processeurs dont la largeur du décodeur augmente (8-way pour le Zen 5 et il peut fonctionner en 2x4-way en SMT), des registres d'entrées plus nombreux et un plus grands nombres de registres, il est clair qu'un échec de prédiction est clairement plus significatif en coût.

Zen 5 changeant la donne sur la partie prédicat de branchement, il est probable que ce genre de non-optimisations est devenue plus voyant, forçant MS à agir.

Le 29/08/2024 à 17h 29

Non, pas vraiment. La prédiction de branche, elle sert à exécuter des instructions en avance au cas où.

Exemple: a = a + 1; si a = b alors c = c + 1
Le processeur peut commencer c=c+1 avant même d'atteindre la comparaison s'il considère que ça l'arrange.

Ca s'applique bien sur le prefetch, mais pas forcément sur toute la longueur (schématiquement quand le "si" est l'avant-avant dernière instruction, on s'en préoccupe). Et je ne sais pas si il s'applique sur des instructions x86 ou sur les micro opérations générées.

Par contre j'ai du mal à admettre qu'un mise à jour permette de débloquer autant de perf sur de l'optimisation pour le CPU sur un OS.
Que TOUT recompiler en mode Zen5 augmente les perfs, je n'en doute pas. Que certains point précis touchés par cette màj débloque 10%, je n'en reviens pas (bon, à voir la taille de la màj).

Par ailleurs, quel impact pour les autres archis?

Dans le cas du Zen5, les unités du prédicat de branchements agissent à la fois au niveau du micro-opérations, mais également se sert des unités de prédictions pour agir avant la phase de décodage des instructions en prédisant les branchements à l'avance avant le décodage des instructions à proprement parlé. Mais je ne crois pas qu'AMD est encore sorti (hors NDA) beaucoup d'infos à ce sujet.


Comme toi, je suis curieuse de connaître plus de détails sur ce point de comment MS a géré ça.
Par contre 10% ne me choque pas dans la mesure où j'ai du vu ce genre de gain si tu aides le compilateur a gérer plus finement une prédiction, soit en l'écrivant de sorte à favoriser le cas le plus probable soit en faisant en sorte (à la main, en aidant le compilo) à utiliser du conditional-move.

Le 10/08/2024 à 17h 06

L'ONU n'est pas une démocratie, c'est une organisation qui a pour but d'organiser le dialogue et la coopération entre les nations. Le fait que des pays se regroupent pour travailler sur un texte et votent ce texte au niveau du groupe de travail pour ensuite le présentent à l'assemblée ne semble pas en sois un problème démocratique.

Même après une adoption en session plénière de cette convention, les pays membres ne sont pas obligés de la signer et peuvent bloquer au moment de la ratification.

Ce qui est plutôt interpellant, c'est que l'influence des pays occidentaux soit occupée à fondre comme neige au soleil et que ce genre de texte ne soit pas corrigé pour être compatible avec leurs prétendues valeurs démocratiques.

Nous sommes peut-être occupés à voir la disparition de l'influence occidentale à l'ONU, avec des pays comme la Chine, l'Inde et la Russie gagnant de plus en plus en influence.

Ta dernier phrase résume parfaitement la situation. Ce coup d'éclat (même si finalement le texte n'est jamais appliqué) montre que les BRICS (enfin une partie) ont une influence grandissante, de par l'invasion Russe en Ukraine mais, et surtout en raison de la guerre (extermination ?) qu'i Israël conduit sans devoir répondre de ses actes par l'Occident (e.g., sanctions économiques)

C'est une preuve de plus du déclin amorcé du bloc Occidental et que le "deux poids, deux mesures" commence à faire chier les autres pays du monde.


Par contre je ne parlerai pas de disparition de l'Occident, en tout cas pas encore. Si sur la scène diplomatique, celui-ci recule, économiquement parlant le marché US & Européen est absolument nécessaire à ses pays pour leur économie. La Chine, l'Inde et la Russie (en tout l'après Poutine) ont besoin de nous comme nous avons besoin d'eux pour faire fonctionner nos économies. Et militairement parlant ces trois pays n'ont conventionnellement pas les moyens de représenter une menace militaire ni pour les USA ni pour l'Europe réunis.
Par contre, certains d'entre eux ont parfaitement compris nos faiblesses démocratiques et juridique pour nous faire tranquillement basculer, à l'aide des réseaux sociaux et des mass merdias, dans des régimes de plus en plus autoritaires et ou favorables à leurs intérêt.

Le 09/08/2024 à 13h 09

Surpris que ça n'arrive que maintenant. J'ai toujours pensé que la NSA avait un coup d'avance sur l'IA au vu des investissements massifs dans ses départements de mathématiques (universitaire ou non).

Je pense également que le mot Artificial Intelligence prends, enfin, tout son sens. Pour ma part, j'ai toujours pensé que la traduction littérale d'Intelligence (en) -> Intelligence (fr) n'était qu'une conséquence des marketeux alors que Renseignement m'aurait paru bien plus approprié. (A opposé au renseignement "organique" (i.e., humain)).


Mais ce qui m'inquiète le plus c'est pas la NSA (après tout elle fait son boulot). Mais le fait que beaucoup trop de boites utilisent Microsoft (pensons à Outlook, au Cloud, à son OS) !
Avec ce genre d'annonces, on imagine très bien l'espionnage économique qu'on va se manger dans les dents. La NSA pour la valorisation et Microsoft comme un gestionnaire d'un gigantesque DataLake et d'outils d'IA pour l'analyse.

Le 07/08/2024 à 23h 21

D'après cet article, le temps d'exécution des tests peut être augmenté de 1,8 à 77 fois. Après je l'ai lu en diagonal, et n'irai pas plus loin. Mais dans le pire cas, si votre test de base dure 3 heures, et que vous dites, pour être sûr, à chaque nouvelle version du logiciel, on va augmenter le temps du test par "fois 77", vous pouvez mais bon, c'est comme tout, ça se discute et c'est une question de choix. Dans un autre langage, encore une fois, ce serait beaucoup plus simple.

Inutile d'aller aussi loin. Ici, c'est presque une implémentation d'un boundary checker à la Rust. Travaille de recherche intéressant, mais je n'ai pas la compétence pour juger (et visiblement le papier n'a pas eu de peer-review).

Je pensais en pratique à un truc plus simple dans le genre :

int readMemory(const char* arr, const int idx, const int len)
{
if(idx<len)
return arr[idx];
else
return -1;
}

Le 07/08/2024 à 23h 13

Mais même si vous utilisez un boundary checker pendant les tests, vous ne pouvez pas l'utiliser en production. Et si le problème arrive quand même en production, il pourrait y avoir pire que le "système plante", le système pourrait continuer son exécution dans un état incohérent (d'autant que c'était dans l'espace noyau si j'ai bien compris), avec des conséquences incalculables.

Quant au canari, ça peut fonctionner pour la case N+1, mais est-ce que ça fonctionnera pour la case N+10 ?

Après, ce n'est pas une question de compétence pour moi, mais c'est juste une question de choisir un langage un poil moins casse gueule. Sur des projets de cette importance, comme sur des projets modestes, ça s'envisage ! De cette manière vous pourrez mettre vos compétences, votre concentration, et donc votre argent ailleurs. Mais si vous préférez le C, vous faites comme vous le sentez ! Tout comme moi !

Le boundary checker (en C++, donc langage moderne ou en Rust donc soit encore plus moderne et stricte) fonctionne en levant des exceptions (je me souviens plus de la manière exact de Rust ceci dit). Mais bref, c'est au dev de gérer ce cas là y compris en prod. Peut-être d'informé d'une erreur sans mettre l'OS en carafe. Ou bien de recharger l'ancien fichier et de fonctionner en mode dégradé et d'informer l'admin. Les solutions existent, et dans des domaines critiques où les langages modernes ne peuvent pas encore percée c'est ce qui est fait, en autres.

Un canari sur un N+10, bonne question car la représentation mémoire va jouer. Mais si à N+10, ça ne se fait pas choper lors des tests, c'est qu'il y a un gros soucis.


Sauf que Rust ou autres langages safe n'étaient peut-être pas présent à l'époque. Pourquoi ne pas avoir passé dans un langage plus safe (C++ ou Rust) ? Je vois au moins trois raisons : Premièrement le coût (et là c'est un soucis de compétences dans la capacité à évaluer le risques. Boeing-like).
Secondo, les outils pour la toolchain n'existe peut-être pas pour du C++ ou Rust. Pour rappel, c'est du kernel ! ça ne ce code pas "comme ça".
Troisio, une question de stabilité d'API/ABI.

Mon point est de dire que le C n'est pas un choix idiot et que ce n'est pas la faute du langage. Oui le C est casse-gueule (c'est comme donné un glock à gamin de 4 ans chargées et sécurité désengagé), mais si il y a des parfois du bon sens quand on code avec ce genre de langages (i.e., déchargé le pistolet et mettre la sécurité) et des choses aussi critique d'un module noyau (i.e., le gamin).

Le 07/08/2024 à 22h 49

Et puis vu la lourdeur de ces outils en C qui dégradent significativement les performances, et sachant qu'il peut y avoir des tests qui prennent des heures, c'est vraiment pas l'idéal.

La dégradation des performances ? Excuse-moi, mais je ne saisis pas ton propos. En quoi, ça détériore les performances de manière significative ?

Oui des tests de plusieurs heures. On parle d'un driver tournant dans le kernel. Je vois pas le soucis vu la sensibilité du bestiau.

Le 07/08/2024 à 22h 46

Oui enfin, c'est plus complexe à mettre en place, d'autant plus si le projet est fastidieux. C'est quand même plus simple si le langage gère nativement ces problèmes en 2024, surtout sur des machines modernes qui n'ont pas peur de stocker un int+un test à chaque accès.

Fastidieux ? On parle quand même d'une grosse boîte (au sens bénéfice) et qui travaille sur un élement sensible.
C'est pas une start-up qui produit des filtres pour Insta ou autres en user-space sandboxé, docker et co.

Donc elle a largement les moyens d'avoir des gens compétents et au fait de ce genre de choses. Mettre un canarie en place, c'est le compilo qui le fait (sauf peut-être pour MVSC...). Un boundary checker proprement implanté, oui c'est un poil plus hard mais c'est faisable surtout qu'ici la valeur semblait connu à l'avance. Encore une fois, elle en a les moyens financiers de se donner les moyens techniques.

Quant au choix du C, c'est peut-être à la toolchain de MS pour compiler ou bien à des questions de stabilité d'API.

Le 07/08/2024 à 22h 28

"Dans un autre langage plus moderne que le C, le programme aurait planté dans 100% des cas dès la lecture de la case N+1 du tableau de N cases, "

Avec une équipe de dev compétente en C et un management adapté, le code aurait 100% planté lors des tests avec, par exemple un canari ou un run-time boundary checker, et ceux sans compter sur la chance ou non d'invalité un pointeur ou une page mémoire.

Le 31/07/2024 à 19h 01

En gros, même les hyperviseurs se basent sur des ressources physiques. Et tu ne peux pas émuler plus de vcpu que ce que le système physique dispose.
Enfin, même si c'était possible, ça voudrait dire qu'une ressource virtuelle qui n'a plus de tâche de calcul laisse sa place à une autre et donc ce n'est pas simultané. Donc ça se verra dans les résultats.

Enfin, rajouter une couche d'hypervision pour gérer du calcul, je ne sais pas si c'est pertinent, car ça doit rajouter une couche intermédiaire de traitement.
Autant avoir un système dédié qui alloue les ressources matérielles du cluster HPC directement. Mais je ne sais pas comment c'est fait en vrai.

Maintenant, (et même si je trouve que c'est un crime), on va une arrivée des méthodes des data centers vers le HPC avec notamment l'utilisation de docker ou autres méthodes d'isolement pour lancer les calculs.
En pratique, ça simplifie l'administration, l'usage des ressources (mouais, pas convaincu) et la sécurité (possiblement utile, mais je n'ai jamais envoyé un exécutable directement au calculateur).

Quand à l'impact sur les performances, je n'ai pas de chiffres :(

Le 31/07/2024 à 18h 58

D'abord @BlackLightning etb @alex.d. , merci pour vos réponses, je me sens moins bête grâce à vous ! :yes:

Secundo, pour ce qui est de tricher sur le nombre réel de processeurs physiques, je me suis basé sur le fait qu'il existe depuis un moment des technos sophistiquées de VM à base d'Hyperviseur.

Si j'ai bien tout compris (corrigez-moi si trompette !), lorsque tu démarres ton bousin, l'hyperviseur prends le relais à un très bas niveau, et peut simuler X nombres de machines incluant X nombre de processeurs avec X Go de RAM, etc...

C'est cela que j'appelle "simulation" (manifestement un terme impropre, désolé...). Puis-je régler un hyperviseur de façon à ce qu'il "prétende" avoir 4999 machines dispo, alors qu'il n'y a en fait que 3990 machines physiques dans ma salle, le reste étant situé ailleurs ?

(Là, si j'ai bien tout compris, on peut détecter la tricherie en examinant le timing des opérations, du fait qu'une connexion même optique entre deux SC distants sera toujours plus lente que la même connexion optique entre deux racks physiquement présents... Si je ne m'abuse ?)

....Ou le contraire : Puis-je prétendre, en réglant finement l'hyperviseur, avoir "seulement" 3990 machines, alors que j'en ai en réel 4990 ?

Là je me base sur mon expérience du Hackintosh : aux tous débuts de cette aventure, on pouvait se servir de PearPC pour "simuler" un processeur PowerPC et faire croire à OSX Tiger qu'il était lancé sur un vrai Mac...

S'il est possible de "simuler" un PowerPC (ses instructions, son jeu de données...), ne serait-il pas possible de "simuler" un bon vieux Intel ou AMD x86 ?

Exemple : "réunir" quatre processeurs x86, et grâce mon couple "hyperviseur + émulateur" , prétendre qu'il n'y a qu'un seul processeur physique...

EDIT : En partant de l'hypothèse que mon émulateur est "parfait" et réagit exactement comme le ferait un proc x86 physique Cela me parait aller de soi, mais cela va mieux en le disant... Enfin je crois...

Et lorsque je parle de "simulation", ou encore de "tricherie", je ne pointe pas du doigt les constructeurs / architectes / concepteurs, pas du tout même, mais plutôt les utilisateurs "étatiques" qui pourraient avoir un intérêt - politique ou stratégique - de mentir (en positif ou en négatif) sur leurs capacités de calcul réelles.

Je sais, tout cela n'est qu'hypothétiques hypothèses, rêves éveillés de béotien qui se complet dans son costume d'ignorance en queue-de-pie.... :fume: :musique: :transpi:

:merci:

Même si tu mets un hyperviseur pour faire créer des processeurs virtuels, ces processeurs vont in-fine envoyé leurs instructions sur le processeur réel. Et celui-ci ayant une limite de ressources, ça ne servira à rien. Pis, ça ralentira tout le boussin.
Ces unités sont en nombres assez limités, tu peux les voir dans les slides sur l'article de Next à propos de Zen5. Cherche des mots-clés comme FMA, FADD, FDIV. Et comme tu vas le constater, elles ne sont pas en nombres importants, et ça virtuellement tu ne peux en émuler plus sauf à sacrifier de la performance, ce qui n'est pas le but.

Là, si j'ai bien tout compris, on peut détecter la tricherie en examinant le timing des opérations, du fait qu'une connexion même optique entre deux SC distants sera toujours plus lente que la même connexion optique entre deux racks physiquement présents... Si je ne m'abuse ?)

Oui sur ce point, tu as entièrement raison pour deux points. Déjà la latence pour connecter tes deux SC n'est pas anodin. Et ensuite, il faut transférer un sacré volume de données et que ce volume soient réceptionnés sur les différentes machines de ton SC, et enfin que les calculs tournent et que le résultat revienne (même si pour le coup, ça peut rien en volume de données).

Également, les technologiques que l'on utilise pour connecter un SC dépend aussi de la distance. Pour les connections racks à racks ont utilise des connexions extrêmement rapides (faible latence et gros volumes de données), mais ces connectiques sont coûteuse et peuvent avoir des inconvénients. (e.g., InfiniBand et son dégagement de chaleur).
En revanche, tu n'utilises pas les même type de liaison entre différents "block" de rack ou même différentes machines. (Toutes les machines d'un SC ne sont pas dédiés à du calculs, certaines servent aussi au stockage).
Tu peux trouver un exemple ici de topologie réseau.

Pour l'émulation c'est une autre histoire, mais idem à la fin ton processeur réel à un nombre de ressources (unités de calculs) limitées.

Le 30/07/2024 à 10h 13

Si Linpack est vraiment aléatoire, comment est vérifié le résultat de cet ensemble de calcul ?

Un exemple : la plupart de ces super-calculateurs ne sont pas en accès direct, mais uniquement interrogés à distance.

Qu'est-ce qui m'empêche de réaliser un groupement de super calculateurs situés à des endroits différents, et de te faire croire que les résultats viennent tous du même endroit ?

Je peux très bien te faire croire que mon SC a passé l'épreuve Linpack avec seulement 5000 processeurs, alors qu'en fait j'en ai employé 10 000. Avec les technos actuelles je peux très bien simuler le nombre de procs.

Peux-tu me prouver que tu es capable de détecter toute forme de tricherie, sachant que tu n'as pas un accès physique au bâtiment contenant mes serveurs ? Et même ainsi, qu'est-ce qui m'empêche d'interconnecter discrètement mon SC à d'autres SC, et de te faire croire que je dispose de bien plus de puissance et de capacité que celle physiquement présente dans un lieu donné ?

Je vais te répondre à tes deux messages.

D'abord, le Boson de Higgs, c'est de la physique des particules et pas de la physique quantique (même si la séparation n'est pas aussi franche).

Et non je ne vois pas la différence entre GRID et le Top500. Les deux protocoles sont connues, le matériel également. Éventuellement, le CERN est plus pédagogue en simplifiant le discours pour les non-experts et en concentrant l'information en un même point.
Comme l'a dit @alex.d. le Top500 ce n'est pas destiné au grand public. Cependant, il ne tient qu'à toi de faire l'effort d'aller chercher les infos et de les comprendre. Et je t'assure c'est moins violent que les démonstrations théoriques du Boson de Higgs.

Je reconnais que le Top500 a un petit coté kikimètre, oui ça s'est vrai. Suffit de voir comment les américains ont mal digéré la pilule japonaise Fugaku :D
Mais le Top 500 permet également de faire des statistiques et est une source interessante pour les personnes (chercheurs comme amateurs) qui veulent retracer l'évolution de l'informatique et de l'évolution de la puissance de calcul.



Pour la partie LinPack. LinPack est un bench reposant sur la résolution d'un système matricielle dense carrée de la forme Ax=b. Il est utilisé car ce type de calculs est représentatifs des calculs effectués dans une simulation numérique. Mais ce n'est pas parfait. Il en existe d'autre tests.
L’intérêt du LinPack est de vérifier expérimentalement l'écart entre puissance de calculs théoriques du supercalculateur et la réalité. Ce genre de test ne sert pas uniquement au Top500 mais il permet aussi de vérifier que le supercalculateur fonctionne bien.


Par aléatoire, @alex.d. entend que la matrice A et le vecteur b ne sont pas connus à l'avance.



Pour ce que tu dis qui ressemble à du délire de complotiste. Mais je vais prendre le temps de te répondre. La résolution d'un système matricielle via LinPack fait appel à un algorithme parfaitement connu et publié dans le monde entier. En outre, en connaissance la taille de la matrice A, on peut calculer précisément le nombres d'opérations flottantes nécessaire pour le résoudre (polynome de degré 3). Si quelqu'un s'amuse à tricher on verra vite un écart entre ce qui est prédit et ce qui est attendu.

Non tu peux pas simuler tes coeurs avec les technos actuelles sur du calculs de ce type. LinPack pour atteindre les performances maximales demandent d'être correctement optimisé pour la micro-architecture des processeurs cibles, et nottament en saturant constamment le pipeline du front-end du CPU et du back-end du CPU et de ses unités flottantes. Ce genre de calculs, si c'était si trivial pour les fabricants de CPU, ça ferait longtemps qu'on aurait des processeurs dédiées à cette tâche dans le monde des supercalculateurs et des enthousiates.

LinPack ne permet pas de détecter toute les formes de tricheries. Mais d'autres benchmark existent et son utilisé pour tester les performances de la machine, mais ausis pour diagnostiquer des anomalies. Et l'interconnexion se mesure également. Alors, tu peux bien brancher ton supercalculateur à un autre supercalculateur secret, mais lors de la publication des résultats avec que tu as construit ça se verra que ça ne colle pas. Et l'excuse du "oui mais une techno secrète..." ça ne tient pas la réalité du marché industrielle et technologique à l'échelle de Frontier.

Dernier point pour la tricherie, ces bestioles ne sont pas construites par des états mais par des boites privées (e.g., HPE, Eviden, Fujitsu...). Si ces boites s'amusent à mentir, elles se feront vite découvrir et elles perdront de juteux marchés. Et ça, ce n'est pas dans leur intérêt. Surtout qu'on achète pas un supercalculateur tout les jours.




Juste pour te donner un ordre de grandeur. Une connexion "classique" (et encore je pense qu'il se fait mieux maintenant, mais la flemme de chercher) pour interconnecter un supercalculateur c'est du 100 Gb/s . En négligeant le payload de la communication, 100 Gb -> 12.5 Go. Quelle est la dimension (le n de tout à l'heure) d'une matrice carrée dense stocké sur du FP64 pour représenter 12.5 Go de données ? ça te fait une matrice d'environ 39528x39528. ça peut te paraître énorme mais pour des modèles de météos, de simulations de galaxies ou autres, je t'assure que c'est petit.

Le 29/07/2024 à 19h 33

Tu te trompes dans ton raisonnement.

Ces machines hors-sol utilisent des processeurs communs (e.g., Adastra est basé sur de l'EPYC, Pangea sur du Xeon E5) et les paramètres que tu évoques (e.g., efficacité conso, puissances...) sont des critères importants aussi dans les supercalculateurs.
Vu le coût de conception et de fabrication d'un processeur, les constructeurs essayent de toucher tout les terrains à la fois avec une même micro-architecture. Et comme l'x86-64 est maintenant extrêmement répandu...

La consommation d'un centre de calculs, c'est pas uniquement le supercalculateur en lui-même c'est aussi les clims pour maintenir cette bestiole à bonnes températures de fonctionnement. Et ce coût n'est pas négligeable.


Ces machines ne sont pas hors-sol. Leur puissance n'est rarement pas pour un seul usage et par une seule entité réduite. Ces machines sont conçus pour disposer d'une puissance de calculs phénoménales pour différents usages et pour être utilisés par plein de monde et de différents domaines.


Les politiques ne s’intéresse pas à ce genre de sujets, sauf pour se faire mousser par les mass merdia ! As-tu vu un politique au chevet de la recherche scientifique ? Moi non. As-tu vu un politique comprendre les enjeux du numérique ? Non plus. As-tu vu un politique comprendre le fonctionnement de base d'un ordinateur ou d'Internet ? Non plus. Ils ne pigent rien à ses sujets et donc ils s'en foutent. Surtout qu'électoralement, c'est pas ce qui va faire qu'un scientifique ira mettre son bulletin dans l'urne pour lui.
Ce qu'on leur demande, c'est juste de signer le bon pour achat.

Tata Lucette ne sait même pas ce qu'est un super-calculateur et à quoi ça peut lui servir. Pourtant Tata Lucette est bien contente lorsqu' elle entendant à BFM TV qu'une équipe de recherche à trouver un nouveau médicament pour soigner telle maladie. Tata Lucette est bien content que les supercalculateurs servent à lui mettre de l'essence dans son réservoir (l'exploration pétrolière demande de grandes quantités de calculs pour le traitement des signaux). Tata Lucette est bien contente de ne pas se faire passer dessus par une armée étrangère parce que les supercalculateurs servent à la dissuasion nucléaire et à la modernisation de l'armée française (e.g., simulation de la signature radar d'un avion).
Bref Tata Lucette fera mieux d'aller éteindre sa TV et d'aller lire Next Inpact. Même si elle ne verra jamais un supercalculateur de sa vie, au moins elle sera à quoi ça sert dans son quotidien.

PS : Pour Tata Lucette :elle peut visiter gratuitement le supercalculateur Japonais Fugaku depuis chez elle, sans prendre l'avion.

Le 21/07/2024 à 10h 48

Pourquoi Rust aurait échoué ?
On parle programmation système et pas script ou dev web où on en est limite à concurrencer l'industrie du textile tellement les langues / bibliothèque/ canevas / whatever... arrivent aussi vite qu'ils repartent.

Le fait que Rust ai pu rentrer dans le nayau linux, même timidement est déjà énorme. Si cela permet déjà de limiter fortement la problématique de la gestion de la mémoire, ce cera très bien.
Et Rust reste très proche de la machine donc on évite les délires du c++ ou d'autres languages où le dev n'a aucune idée des conséquences de ses choix structurels.

Perso, je regarde parfois le résultat en assembleur entre deux manières de faire pour voir la plus efficace sur la cible. J'ai déjà eu des grosses surprises.

Si Rust n'arrive à intégrer le noyau, alors il aurait perdu l'une de ses plus grandes cibles "promotionnels". Rust a débarqué en voulant prendre la place du C alors qu'il n'est pas un concurrent du C, fondamentalement. Rust est plus un concurrent d'Ada.
Oui qu'il est débarqué dans le noyau Linux même timidement, c'est bien. Mais faire un wrapper en Rust de fonctions critiques n'apporte rien de vraiment intéressant. Et pour le moment, on ne l'a pas vu véritablement attaqué des choses fondamentalement sensibles dans le kernel avec tout la problématique de gestions de mémoires qui va avec ou de gestions d'interruption ou autres.

Si je devais parier, je dirais que Rust ne rentrera jamais dans le coeur du noyau. Il est trop restrictif by- design pour faire des choses efficaces en terme de perf pour un kernel monolithique.
Par contre, pour les drivers il pourrait avoir un atout à jouer. Mais vu le niveau de qualité des drivers sous Linux (en comparaison de Windows), si Rust devait avoir une utilité réelle ça serait d'être imposé par M$ aux constructeurs et fournisseurs de matériel pour les machines livrées avec Windaube.
Parce que le BSOD à cause d'un driver pissé à l'arrache, j'en ai jamais vu sous Linux (sauf quand j'en suis la responsable... Mais ça c'est une autre histoire).


Je ne sais pas ce que tu nommes délires en c++, mais si un dev ne comprends pas ce qui se passe en C++ dans la machine, il ferait mieux d'aller coder en Python. Idem pour celui qui code en Rust ou en C. Quand on est proche de la machine on se doit savoir comment ça marche, à minima.

Le 20/07/2024 à 21h 35

Rust est dans le noyau et il peut-être utilisé. Certains drivers pour des FS ou bien pour le scheduler l'utilse. Mais très généralement ce n'est qu'un wrapper sur les fonctions importantes du kernel.
Tout à fait, ce qui en limite grandement les avantages.
Pour moi, Rust n'a pas le choix de devoir résoudre ce problème. S'il ne peut pas s'intégrer au noyau Linux (autrement qu'en étant un wrapper), alors perdra un certains coté promotionnel. Mais oui ce n'est pas gagné pour eux.
C'est même pas le côté promotionnel. C'est juste que Rust n'aura alors AUCUN intérêt a être utilisé au sein du noyau. Pire, on se retrouvera avec des portions écrites en Rust, d'autre en C. 2 langages au lieu d'un, sans avantage. Chouette :/
Exact ZigBee n'est pas le langage. C'est Zig que je voulais mentionner. My bad, il fait trop chaud dans ce pays, con !
Ah oui, Zig. J'étais tombé dessus il y a quelques mois. Mais je ne me suis pas penché dessus de manière approfondi (faut dire que si on devait se pencher sur tous les langages et toutes les technos qui sortent, on ne serait pas sorti de l'auberge :mdr:). J'avais regardé rapidement, j'ai vu un Rust like, la notoriété en moins (sans vouloir dénigrer le langage)

"C'est même pas le côté promotionnel. C'est juste que Rust n'aura alors AUCUN intérêt a être utilisé au sein du noyau. Pire, on se retrouvera avec des portions écrites en Rust, d'autre en C. 2 langages au lieu d'un, sans avantage. Chouette :/"

Je ne pense pas. Rust n'ayant pas "contaminé" beaucoup le noyau, je suis prête à parier que Linus et ses équipes feront le ménage. Au final ça ne restera qu'une expérimentation dans la mémoire du depot git pour les cyber-archéologues.

"J'avais regardé rapidement, j'ai vu un Rust like, la notoriété en moins (sans vouloir dénigrer le langage)"

De ce que j'ai vu Zig est plus un sérieux concurrent à C. Là où Rust a échoué, Zig pourrait être technologiquement un véritable concurrent du C, voir son futur. Affaire à suivre.

Le 20/07/2024 à 17h 49

Il y a eu des tentatives au niveau du noyau Linux pour utiliser Rust. Mais se pose des problèmes avec le modèle de gestion de la mémoire qui est radicalement différent et incompatible en l'état. Je ne sais pas si cela sera possible de résoudre ce problème ou pas.

Zigbee, je ne connais pas ce langage. Pour moi, c'est un protocole de communication. Et je ne trouve pas de référence en tant que langage. Tu es sûr ?

Rust est dans le noyau et il peut-être utilisé. Certains drivers pour des FS ou bien pour le scheduler l'utilse. Mais très généralement ce n'est qu'un wrapper sur les fonctions importantes du kernel.

Pour moi, Rust n'a pas le choix de devoir résoudre ce problème. S'il ne peut pas s'intégrer au noyau Linux (autrement qu'en étant un wrapper), alors perdra un certains coté promotionnel. Mais oui ce n'est pas gagné pour eux.

Exact ZigBee n'est pas le langage. C'est Zig que je voulais mentionner. My bad, il fait trop chaud dans ce pays, con !

Le 20/07/2024 à 17h 33

Quel langage à part C/C++ permet d'écrire un driver à la fois pour Windows, MacOS et Linux ?

Je suis tout ouïe.

Même si je n'aime pas ce langage, je pense que Rust est une réponse possible. Et peut-être prochainement ZigBee.

Le 20/07/2024 à 10h 10

On fait sur GPU mais des fois on ne peut pas :

- c'est de l'embarqué, certaines plateformes n'ont simplement pas de GPU
- dans certains cas, le volume d'un bloc de données n'est pas suffisamment gros pour exploiter correctement toutes les ressources. Néanmoins les blocs arrivent à une fréquence très rapide, ce qui fait qu'en charge de calcul c'est quand même très important. Et on ne peut pas bufferiser les données pour les envoyer par gros paquet au GPU, parce qu'après le beamforming, on a des traitement très séquentiels qui ne sont pas adapté au GPU. Et comme le traitement utilise des sorties du bloc N pour traiter le bloc N+1... En fait sur certains applications très gourmandes en puissance de calcul, paradoxalement le GPU n'est pas toujours la bonne architecture. Le FPGA ou le CPU restent plus adaptés.
- en effet, les aller-retour vers la mémoire GPU peuvent diminuer, voir annihiler les gains de temps d’exécution. Ça peut être en partie éviter en envoyant directement les données codeurs dans la mémoire GPU par GPUDirect, puisque ce sont les premières étapes du traitement qui sont efficaces sur GPU. Il y a le cas particulier des calculateurs à base d'AGX qui n'ont pas ce problème, la mémoire étant partagée.

Tiens moi aussi je connais quelques personnes qui font du beamforming sur GPU pour la radioastronomie. Comme il ne doit pas y en avoir 50 qui font ça en France, il y a une probabilité non négligeable que ton pote en face partie. :bigssourire: Je t'aurais bien envoyé un MP pour savoir si c'est le cas, mais il n'a pas ça sur nextinpact. Si tu as un moyen de communication privé, je suis preneur !

Merci pour les infos.

Je regrette aussi l'absence de la fonction MP. C'est tellement pratique pour ce genre de cas.
Un moyen de communication privé, sans le partager à tout le monde c'est un peu chaud.

Mon pote bosse à l'observation de Nançay. C'est tout ce que je peux partager publiquement.

Le 18/07/2024 à 13h 53

Dans mon cas, un point chaud, en terme de charge de calcul, que ce que je fais tourner, c'est du beamforming numérique d'antenne (multiplication de matrices) et de l'estimation de matrices de covariance (également des multiplication matrice-matrice + addition de matrice). Sur ces fonctions, j'atteins généralement 85/90% des FLOPS FP32 théoriques d'un CPU.

Très belle performance ! ça fait plaisir à lire.

Puis-je me permettre de demander, pourquoi ne pas déporter ce genre de calculs sur GPU ?
Je demande ça car j'ai un pote qui fait du beamforming numérique pour l'étude d'objets astrophysiques et il balance tout sur GPU. Est-ce que le cas que tu décris, la latence lié au PCI serait un frein ?

Le 17/07/2024 à 22h 01

Merci pour la confirmation.

C'est un très belle avancée pour nous autres faisant du calcul scientifique.

Et ça se positionne très bien face à Intel qui fait 32 flop/cycle sur les cpu grand public et 64 flop/cycle sur les Xeon scalable haut de gamme, même si pour en profiter pleinement il faut faire des calculs du genre x = x + a * b + c

Tout dépend des calculs que tu fais. Pour en profiter pleinement, faut-il aussi que les codes de calculs soient correctement écris pour pouvoir saturer les FPU et les pipelines pour les maintenir constamment en activité. En dehors du monde du HPC, je n'ai vu aucun code (même industriel) être capable d'exploiter à fond ce genre de choses.

En outre, les calculs a qui ce genre d'optimisations s'appliquent (e.g., produits scalaire, calcul matricielle) sont pas nature limités par la bande passante mémoire que par le CPU.

Par contre, le point positif que je vois en dehors de ces cas particuliers qui peuvent atteindre le max de FLOPS, c'est que le processeur logique pourra les utiliser pour d'autres calculs en //. Et ça, ça peut devenir interessant.

Le 18/07/2024 à 12h 18

Windows est un vrai OS qui tient a route ... Et bien mieux documenté pour une entreprise que Linux, et plus stable dans le temps sur bien des points.
Si tu veux un vrai conccurent à Windows dans l'entreprise, ce serait FreeBSD, ou Readhat, ou Oracle ou Debian, pas "Linux"

Je ne souhaite pas lancer un débat Linux/Windows, qu'importe les saveurs que l'on met derrière mais je veux pas non plus me laisser sans défense.

Pour moi, Windows n'a pas sa place. Il n'est pas stable (je connais pas un PC Windows qui ne doit pas rebooter au bout 3 semaines, ni qui maintient des perfs constantes dans le temps d'utilisation...). Sa seule stabilité, c'est sa rétro-compatibilité et son ABI & API. Mais c'est une force comme une faiblesse. Celà dit je concède que je me suis déjà écharpé avec Linux sur ce point.

La documentation est inférieure à celle de Linux. Exemple, tu cherches la doc pour mmap. J'ai besoin de parcourir plusieurs sous-liens pour trouver l'information de savoir si c'est du COW ou pas. Linux, un simple Ctrl-F et j'ai mon info. Et mieux, j'ai le code source pour répondre à mes interrogations.
En revanche, elle est accessible. Le ticket d'entrée pour la doc de Windows est nettement inférieure à celle de Linux.

Windows n'est pas sécure. Désolé mais le principe de kerckhoffs est pour moi strictement requis pour avoir confiance sinon c'est de la sécurité par obscurantisme. Et nous savons que c'est un échec.

Je pourrais aussi te parler des faibles performances du NTFS et du scheduler I/O du kernel. Pour un OS 2024 d'entreprise c'est assez risible. Ce qui le sauve, c'est la latance des SSD.
La question se pose également pour les autres schedulers et la capacité de Windows à gérer correctement du multiprocessing.

Je termine sur ceci. Windows sera un vrai OS quand il pourra gérer un supercalculateur du top-500. A defaut, pouvoir être aussi rapide qu'un Linux sur un benchmark du LINPACK. Même à code équivalent en asm, Windows reste significativement derrière (sur nos benchmark, ~10-15 % derrière du Linux [Fedora Workstation]).