Het TOP500 project1 maakt een rangschikking op van de 500 krachtigste niet-gedistribueerde computersystemen ter wereld, en brengt ook zoveel mogelijk details van hun architectuur in kaart. Het project werd gestart in 1993 en publiceert twee keer per jaar een bijgewerkte lijst van supercomputers. De eerste publicatie valt altijd samen met de Internationale Supercomputing-conferentie2 in juni. De tweede wordt gepresenteerd op de ACM/IEEE Supercomputing-conferentie3 in november. Het project wil een betrouwbare basis bieden voor het opvolgen en detecteren van trends op het vlak van high-performance computing en baseert haar ranglijsten op HPL4, een implementatie van de high-performance LINPACK5 benchmark geschreven in de programmeertaal Fortran6 voor computers met gedistribueerd geheugen.
De lijst wordt momenteel gedomineerd door China dat met 229 supercomputers in de lijst staat, op verre afstand gevolgd door de Verenigde Staten dat de tweede plek bezet met 121 supercomputers. Sinds juni 2018 is de Summit7 van Oak Ridge National Laboratory8 (Verenigde Staten) 's werelds krachtigste supercomputer met 143.5 petaFLOPS op de LINPACK-benchmarks.
Het tekstbestand TOP500.txt9 bevat de 54e editie van de TOP500 zoals die gepubliceerd werd in november 2019. De eerste regel van het bestand bevat een hoofding. Elke volgende regel bevat informatie over één supercomputer, bestaande uit de volgende negen velden die van elkaar worden gescheiden door een puntkomma (;): i) fabrikant (Manufacturer), ii) naam (Name), iii) land (Country), iv) aantal rekenkernen (Total Cores), v) maximaal aantal floating point bewerkingen per seconde, uitgedrukt in teraFLOPS per seconde (Rmax (TFlop/s)), vi) vermogen, uitgedrukt in kilowatt (Power (kW)), vii) besturingssysteem (Operating System), viii) soort processor (Processor Generation) en ix) processorsnelheid, uitgedrukt in megahertz (Processor Speed (MHz)). De velden bevatten zelf nooit puntkomma's (;).
Gevraagd wordt om — gebruikmakend van de teksteditors vi
of vim — een reeks commando's op te stellen die
achtereenvolgens de volgende opdrachten uitvoeren. Probeer voor elke
opdracht zo weinig mogelijk commando's te gebruiken en zorg er voor dat
elk van deze commando's bestaat uit zo weinig mogelijk tekens. De
commando's mogen geen programmeerbare filters (bv. awk)
gebruiken. Alle opdrachten moeten na elkaar uitgevoerd worden. De
opdrachten mogen de eerste regel (hoofding) niet wijzigen, tenzij dit
expliciet anders vermeld staat. Ter controle kan je gebruikmaken van de
meegeleverde bestanden TOP500.i.txt (ZIP10),
die telkens de inhoud van het bestand bevatten nadat de $$i$$-de opdracht
werd uitgevoerd.
Verwijder tekst die tussen ronde haakjes staat (inclusief de ronde haakjes zelf). Verwijder alle spaties aan het begin en het einde van een veld, en verwijder ook alle spaties voor en achter een slash (/). Vervang twee of meer opeenvolgende spaties door één enkele spatie. Zo moet
Manufacturer;Name;Country;Total Cores;Rmax (TFlop/s);Power (kW);Operating System;Processor Generation;Processor Speed (MHz) IBM;Summit;United States;2414592;148600;10096;RHEL 7.4;IBM POWER9;3070 IBM / NVIDIA / Mellanox;Sierra;United States;1572480;94640;7438,28;Red Hat Enterprise Linux;IBM POWER9;3100 NRCPC;Sunway TaihuLight;China;10649600;93014,59388;15371;Sunway RaiseOS 2.0.5;Sunway;1450 NUDT;Tianhe-2A;China;4981760;61444,5;18482;Kylin Linux;Intel Xeon E5 (IvyBridge);2200 Dell EMC;Frontera;United States;448448;23516,4;;CentOS Linux 7;Xeon Platinum 82xx (Cascade Lake);2700 Cray/HPE;Piz Daint;Switzerland;387872;21230;2384,24;Cray Linux Environment ;Intel Xeon E5 (Haswell);2600 Cray/HPE;Trinity;United States;979072;20158,7;7578,1;Cray Linux Environment ;Intel Xeon Phi;1400 … Huawei;;China;41440;1142,232;577,69;Linux;Intel Xeon E5 (Broadwell);2400 Inspur;;China;27520;1142;;CentOS;Xeon Platinum;2100 Inspur;;China;27520;1142;;CentOS;Xeon Platinum;2100 Inspur;;China;27520;1142;;CentOS;Xeon Platinum;2100
bijvoorbeeld omgezet worden naar (TOP500.1.txt11)
Manufacturer;Name;Country;Total Cores;Rmax (TFlop/s);Power (kW);Operating System;Processor Generation;Processor Speed (MHz) IBM;Summit;United States;2414592;148600;10096;RHEL 7.4;IBM POWER9;3070 IBM/NVIDIA/Mellanox;Sierra;United States;1572480;94640;7438,28;Red Hat Enterprise Linux;IBM POWER9;3100 NRCPC;Sunway TaihuLight;China;10649600;93014,59388;15371;Sunway RaiseOS 2.0.5;Sunway;1450 NUDT;Tianhe-2A;China;4981760;61444,5;18482;Kylin Linux;Intel Xeon E5;2200 Dell EMC;Frontera;United States;448448;23516,4;;CentOS Linux 7;Xeon Platinum 82xx;2700 Cray/HPE;Piz Daint;Switzerland;387872;21230;2384,24;Cray Linux Environment;Intel Xeon E5;2600 Cray/HPE;Trinity;United States;979072;20158,7;7578,1;Cray Linux Environment;Intel Xeon Phi;1400 … Huawei;;China;41440;1142,232;577,69;Linux;Intel Xeon E5;2400 Inspur;;China;27520;1142;;CentOS;Xeon Platinum;2100 Inspur;;China;27520;1142;;CentOS;Xeon Platinum;2100 Inspur;;China;27520;1142;;CentOS;Xeon Platinum;2100
Voeg vooraan een extra veld Rank toe met het volgnummer van de supercomputers in de TOP500 lijst (waarbij ook de hoofding moet bijgewerkt worden). Daarbij worden de computers opeenvolgend genummerd vanaf 1. Er zijn geen ex-aequo's. We krijgen dan (TOP500.2.txt12)
Rank;Manufacturer;Name;Country;Total Cores;Rmax (TFlop/s);Power (kW);Operating System;Processor Generation;Processor Speed (MHz) 1;IBM;Summit;United States;2414592;148600;10096;RHEL 7.4;IBM POWER9;3070 2;IBM/NVIDIA/Mellanox;Sierra;United States;1572480;94640;7438,28;Red Hat Enterprise Linux;IBM POWER9;3100 3;NRCPC;Sunway TaihuLight;China;10649600;93014,59388;15371;Sunway RaiseOS 2.0.5;Sunway;1450 4;NUDT;Tianhe-2A;China;4981760;61444,5;18482;Kylin Linux;Intel Xeon E5;2200 5;Dell EMC;Frontera;United States;448448;23516,4;;CentOS Linux 7;Xeon Platinum 82xx;2700 6;Cray/HPE;Piz Daint;Switzerland;387872;21230;2384,24;Cray Linux Environment;Intel Xeon E5;2600 7;Cray/HPE;Trinity;United States;979072;20158,7;7578,1;Cray Linux Environment;Intel Xeon Phi;1400 … 497;Huawei;;China;41440;1142,232;577,69;Linux;Intel Xeon E5;2400 498;Inspur;;China;27520;1142;;CentOS;Xeon Platinum;2100 499;Inspur;;China;27520;1142;;CentOS;Xeon Platinum;2100 500;Inspur;;China;27520;1142;;CentOS;Xeon Platinum;2100
Zet een koppelteken (-) in het veld met de naam (Name) voor alle computers die geen naam hebben (d.i. waarvoor het veld met de naam leeg is). Alle computers in de TOP500 gebruiken één of andere Linux-distributie als besturingssysteem. Plaats bij alle computers Linux in het veld met het besturingssysteem (Operating System). We krijgen dan (TOP500.3.txt13)
Rank;Manufacturer;Name;Country;Total Cores;Rmax (TFlop/s);Power (kW);Operating System;Processor Generation;Processor Speed (MHz) 1;IBM;Summit;United States;2414592;148600;10096;Linux;IBM POWER9;3070 2;IBM/NVIDIA/Mellanox;Sierra;United States;1572480;94640;7438,28;Linux;IBM POWER9;3100 3;NRCPC;Sunway TaihuLight;China;10649600;93014,59388;15371;Linux;Sunway;1450 4;NUDT;Tianhe-2A;China;4981760;61444,5;18482;Linux;Intel Xeon E5;2200 5;Dell EMC;Frontera;United States;448448;23516,4;;Linux;Xeon Platinum 82xx;2700 6;Cray/HPE;Piz Daint;Switzerland;387872;21230;2384,24;Linux;Intel Xeon E5;2600 7;Cray/HPE;Trinity;United States;979072;20158,7;7578,1;Linux;Intel Xeon Phi;1400 … 497;Huawei;-;China;41440;1142,232;577,69;Linux;Intel Xeon E5;2400 498;Inspur;-;China;27520;1142;;Linux;Xeon Platinum;2100 499;Inspur;-;China;27520;1142;;Linux;Xeon Platinum;2100 500;Inspur;-;China;27520;1142;;Linux;Xeon Platinum;2100
Laat alle cijfers na de komma weg (inclusief de komma zelf) in alle velden waarvan de inhoud bestaat uit een kommagetal (d.i. waarvan de inhoud het formaat dd,dd heeft, waarbij het aantal cijfers na de komma variabel is). We krijgen dan (TOP500.4.txt14)
Rank;Manufacturer;Name;Country;Total Cores;Rmax (TFlop/s);Power (kW);Operating System;Processor Generation;Processor Speed (MHz) 1;IBM;Summit;United States;2414592;148600;10096;Linux;IBM POWER9;3070 2;IBM/NVIDIA/Mellanox;Sierra;United States;1572480;94640;7438;Linux;IBM POWER9;3100 3;NRCPC;Sunway TaihuLight;China;10649600;93014;15371;Linux;Sunway;1450 4;NUDT;Tianhe-2A;China;4981760;61444;18482;Linux;Intel Xeon E5;2200 5;Dell EMC;Frontera;United States;448448;23516;;Linux;Xeon Platinum 82xx;2700 6;Cray/HPE;Piz Daint;Switzerland;387872;21230;2384;Linux;Intel Xeon E5;2600 7;Cray/HPE;Trinity;United States;979072;20158;7578;Linux;Intel Xeon Phi;1400 … 497;Huawei;-;China;41440;1142;577;Linux;Intel Xeon E5;2400 498;Inspur;-;China;27520;1142;;Linux;Xeon Platinum;2100 499;Inspur;-;China;27520;1142;;Linux;Xeon Platinum;2100 500;Inspur;-;China;27520;1142;;Linux;Xeon Platinum;2100
Voeg de laatste twee velden (Processor Generation en Processor Speed (MHz)) samen tot één enkel veld Processor. De nieuw inhoud van het veld wordt de inhoud van het eerste veld, gevolgd door een spatie en tussen ronde haakjes de inhoud van het tweede veld en de tekst GHz. Daarbij moet de processorsnelheid omgezet worden van megahertz naar gigahertz (1GHz = 1000MHz), waarbij er mag van uitgegaan worden dat alle waarden tussen 1000 en 4000 megahertz liggen. De waarde in gigahertz wordt genoteerd in het formaat d.ddd, waarbij nullen op het einde van de decimale cijfers weggelaten worden maar er altijd minstens één decimaal cijfer moet overblijven (ook al is dat een nul). We krijgen dan (TOP500.5.txt15)
Rank;Manufacturer;Name;Country;Total Cores;Rmax (TFlop/s);Power (kW);Operating System;Processor 1;IBM;Summit;United States;2414592;148600;10096;Linux;IBM POWER9 (3.07GHz) 2;IBM/NVIDIA/Mellanox;Sierra;United States;1572480;94640;7438;Linux;IBM POWER9 (3.1GHz) 3;NRCPC;Sunway TaihuLight;China;10649600;93014;15371;Linux;Sunway (1.45GHz) 4;NUDT;Tianhe-2A;China;4981760;61444;18482;Linux;Intel Xeon E5 (2.2GHz) 5;Dell EMC;Frontera;United States;448448;23516;;Linux;Xeon Platinum 82xx (2.7GHz) 6;Cray/HPE;Piz Daint;Switzerland;387872;21230;2384;Linux;Intel Xeon E5 (2.6GHz) 7;Cray/HPE;Trinity;United States;979072;20158;7578;Linux;Intel Xeon Phi (1.4GHz) … 43;HPE;Eagle;United States;75600;4850;;Linux;Xeon Gold (3.0GHz) … 497;Huawei;-;China;41440;1142;577;Linux;Intel Xeon E5 (2.4GHz) 498;Inspur;-;China;27520;1142;;Linux;Xeon Platinum (2.1GHz) 499;Inspur;-;China;27520;1142;;Linux;Xeon Platinum (2.1GHz) 500;Inspur;-;China;27520;1142;;Linux;Xeon Platinum (2.1GHz)