Vad är skillnaden mellan CUDA-kärnor och sensorkärnor (förklarat) - Alla skillnader
Innehållsförteckning
CUDA och Tensor cores är produkter som utvecklats av ett företag som heter Nvidia. Vad är CUDA-kärnor och Tensor cores? CUDA står för Compute Unified Device Architecture. CUDA-kärnorna finns i dina GPU:er, smartphones och till och med i dina bilar, som Nvidias utvecklare säger.
CUDA-kärnor är en parallell beräkningsplattform och ett gränssnitt för tillämpningsprogrammering (API) som gör det möjligt för programvara att använda specifika typer av grafikprocessorer (GPU:er) för allmän bearbetning.
Tensor Cores, som också har utvecklats av Nvidia, används också i GPU:er. Tensor Cores möjliggör beräkning med blandad precision och anpassar beräkningar dynamiskt för att öka genomströmningen med bibehållen noggrannhet.
Enkelt uttryckt är dessa kärnor en viktig del av GPU:erna i datorn för att utföra vissa beräkningar. CUDA-kärnor används för att multiplicera två tal och addera dem till ett annat tal.
Tensor core är samma sak, men med 4×4 matriser. Dessa beräkningar gör i princip grafik snabbare för dig.
Vad är CUDA?
Compute Unified Device Architecture, förkortat CUDA, som utvecklats av Nvidia och släpptes den 23 juni 2007, är en parallell beräkningsplattform och ett gränssnitt för tillämpningsprogrammering (API).
Det gör det möjligt för programvara att använda specifika typer av grafikprocessorer (GPU) för allmän bearbetning, en metod som kallas allmän beräkning på GPU:er (GPU).
CUDA är ett programvarulager som ger direkt tillgång till GPU:ns virtuella instruktionsuppsättning och parallella beräkningselement för att utföra beräkningskärnor. CUDA utvecklades för att fungera med olika programmeringsspråk, bland annat C, C++ och Fortran.
Möjligheten att arbeta med olika programmeringsspråk gör det lättare för specialister på parallellprogrammering att utnyttja GPU-resurser om vi skiljer det från tidigare API:er som Direct3D eller OpenGL, som kräver mer avancerade kunskaper i grafisk programmering.
GPU med CUDA stöder också programmeringsramar som OpenMP, OpenACC, OpenCL och HIP som kan kompilera sådan kod till CUDA. Det första namnet som användes för CUDA var en akronym för Compute Unified Device Architecture. Nvidia har dock senare släppt den vanligaste akronymen.
Ett kraftfullt Nvidia grafikkort GTX 1080 Ti
Mer om CUDA
Som en specialiserad datorprocessor uppfyller grafikbehandlingsenheten (GPU) behoven för beräkningsintensiva 3D-grafikarbetsbelastningar i realtid.
Omkring 2012 utvecklades GPU:erna till mycket parallella flerkärniga system som möjliggör effektiv databehandling av stora block.
Vid parallell behandling av stora block av data är denna konstruktion överlägsen de allmänna centrala bearbetningsenheterna (CPU:er) för algoritmer, t.ex:
- kryptografiska hash-funktioner.
- maskininlärning
- molekyldynamiska simuleringar
- fysikmotorer
- sorteringsalgoritmer
Användning av CUDA-arkitekturen nu och i framtiden
- Snabbare rendering av 3D-grafik
- Snabbare interkonvertering av videofilformat
- Snabbare kryptering, dekryptering och komprimering
- Bioinformatik, t.ex. NGS DNA-sekvensering BarraCUDA
- Distribuerade beräkningar, t.ex. för att förutsäga proteiners ursprungliga konformation.
- Simuleringar av medicinska analyser, t.ex. virtuell verklighet baserad på CT- och MRI-bilder.
- Fysiska simuleringar, särskilt inom strömningsdynamik.
- Träning av neurala nätverk i problem med maskininlärning
- Ansiktsigenkänning
- Projekt för distribuerade datorer, t.ex. [email protected] och andra projekt som använder BOINC.
- Molekylär dynamik
- Utvinning av kryptovalutor
- Programvara för struktur från rörelse (SfM)
Vad är en sensorkärna?
Specialiserade kärnor som kallas Tensor Cores gör det möjligt att träna med blandad precision. Den första generationen av dessa specialiserade kärnor gör detta med en algoritm för multiplikation och addering som gör det möjligt att multiplicera och addera två 4 x 4 FP16-matriser till en 4 x 4 FP16- eller FP32-matris.
Det slutliga resultatet blir FP32 med endast en liten förlust av precision, och blandad precisionsberäkning betecknas som sådan även om matriserna som matriser kan vara FP16 med låg precision.
I praktiken påskyndar detta beräkningarna avsevärt utan att det påverkar modellens slutliga effektivitet. Denna kapacitet har utökats med senare mikroarkitekturer till ännu mindre exakta datortalsrepresentationer.
Den första generationen introducerades med Volta-mikroarkitekturen från och med V100, och med varje ny generation blev fler format med numerisk precision tillgängliga för beräkningar med nya GPU-mikroarkitekturer.
Vi kommer att tala om hur Tensor Cores kapacitet och funktionalitet har förändrats och förbättrats med varje mikroarkitekturgeneration i avsnittet som följer.
En grafiskt återgiven bild som gjorts av en Titan V.
Hur fungerar sensorkärnor?
Första generationen:
Volta GPU-mikroarkitekturen ingick i den första generationen av Tensor Cores. Dessa kärnor gjorde det möjligt att träna med blandad precision och FP16-talsformatet.
Detta kan ge en upp till 12 gånger större teraFLOP-kapacitet för vissa GPU:er. 640 kärnor i toppmodellen V100 ger upp till 5 gånger högre prestanda jämfört med Pascal GPU:erna i den föregående generationen.
Andra generationen:
I och med Turing GPU:erna introducerades den andra generationen av Tensor Cores. Int8, Int4 och Int1 lades till i listan över stödda Tensor Core-precisioner, som tidigare var begränsade till FP16.
På grund av träningsprocedurer med blandad precision ökade GPU:ns prestanda med upp till 32 gånger jämfört med Pascal GPU:er.
Tredje generationen:
Arkitekturen i en Ampere GPU utökar Volta- och Turing-mikroarkitekturernas tidigare framsteg genom att lägga till stöd för FP64-, TF32- och bfloat16-precisioner.
Utbildning och inferenser för djupinlärning påskyndas mycket mer av dessa format med extra precision. TF32-formatet fungerar till exempel på samma sätt som FP32, men garanterar också upp till 20 gånger snabbare hastighet utan att ändra någon kod.
Med bara några få rader kod kan du med hjälp av automatisk tillämpning av blandad precision påskynda träningen med ytterligare 2 gånger.
Tredje generationens NVLink för att möjliggöra extremt snabba interaktioner mellan flera GPU:er, tredje generationens Ray Tracing-kärnor och specialisering på sparsam matrismatematik är ytterligare aspekter av Ampere-mikroarkitekturen. .
Fjärde generationen:
En framtida version av den Hopper-mikroarkitekturbaserade fjärde generationen av Tensor Cores planeras. Den fjärde generationen Tensor Cores i nästa H100.
som förväntas släppas i mars 2022, kommer att kunna hantera FP8-precisionsformat och enligt NVIDIA kommer den att påskynda enorma språkmodeller "med en häpnadsväckande 30x jämfört med den föregående generationen".
Ett RTX-grafikkort används för att rendera grafik mycket snabbt eftersom det innehåller tensor-kärnor.
Se även: Vad är skillnaden mellan internationella och multinationella företag? - Alla skillnaderSkillnaden mellan CUDA-kärnor och sensorkärnor
Tensorkärnor är för närvarande begränsade till Titan V och Tesla V100. De 5120 CUDA-kärnorna på båda GPU:erna har en maximal kapacitet på en multiplikations- och ackumuleringsoperation med enkel precision (t.ex. i fp32: x += y * z) per GPU-klocka (t.ex. Tesla V100 PCIe-frekvens är 1,38 GHz).
Varje tensor core arbetar med 4×4 små matriser för små matriser. Per en GPU-klocka kan varje tensor core utföra en matrismultiplikations- och ackumuleringsoperation.
Den multiplicerar två 4×4 FP16-matriser och adderar 4×4 FP32-matrisen som resulterar i ackumulatorn (som också är en fp32 4×4-matris).
Eftersom inmatningsmatriserna är fp16 medan multiplikationsresultaten och ackumulatorn är fp32, kallas algoritmen för blandad precision.
Den korrekta termen skulle troligen vara "4×4 matriskärnor", men NVIDIAs marknadsföringsteam valde att använda "tensor-kärnor".
Se även: Icke-platonisk vs platonisk kärlek: en snabb jämförelse - alla skillnaderTensor cores fullständig förklaring i ett nötskal
GPU-kort | CUDA-kärnor | VRAM |
---|---|---|
GeForce GTX 1660 Ti | 1536 | 6 GB |
GeForce GTX 1660 Super | 1408 | 6 GB |
GeForce GTX 1660 | 1408 | 6 GB |
GeForce GTX 1650 Super | 1408 | 4 GB |
GeForce GTX 1650 | 1024 och 896 | 4 GB |
GeForce GTX 1060 3GB | 1280 | 4 GB |
GeForce GTX 1650 | 1280 | 3 GB |
GeForce GTX 1060 6GB | 768 | 6 GB |
GeForce GTX 1050 Ti (3 GB) | 768 | 4 GB |
GeForce GTX 1050 (2 GB) | 640 | 3 GB |
GeForce GTX 960 | 1024 | 2 GB |
GeForce GTX 950 | 786 | 2 GB |
GeForce GTX 780 Ti | 2880 | 2 GB |
GeForce GTX 780 | 2304 | 3 GB |
GeForce GTX 750 Ti | 640 | 2 GB |
GeForce GTX 750 | 512 | 1 GB eller 2 GB |
GPU:er som innehåller CUDA-kärnor
Slutsats
- CUDA och Tensor cores är produkter som båda har utvecklats av företaget Nvidia. CUDA står för Compute Unified Device Architecture. Dessa CUDA-kärnor finns i dina GPU:er, smartphones och till och med i dina bilar.
- Tensor cores, som också utvecklats av Nvidia, används också i GPU:er. Specialiserade kärnor som kallas "Tensor cores" gör det möjligt att träna med blandad precision. Den första generationen av Tensor Cores gjorde det möjligt att träna med blandad precision och FP16-talsformatet.
- Detta kan leda till en ökning av teraFLOP-genomströmningen med upp till 12 gånger för vissa GPU:er. Int8, Int4 och Int1 har lagts till i listan över Tensor Core-precisioner som stöds.
- På grund av träningsprocedurer med blandad precision ökade GPU:ns prestanda med upp till 32 gånger. En framtida lansering av den Hopper-mikroarkitekturbaserade fjärde generationen av Tensor Cores planeras.