Новый виток архитектуры CUDA
Всем привет!
В начале апреля я увидел анонс новой видеокарты от nVidia, с новым мажорным индексом compute capability – 3.0. Внимательно изучив спеки был удивлён – по всему выходило, что теперь ветвления будут приводить к самым худшим последствиям: большим потерям производительности. Мне нравилось, что от версии к версии ветвления играют всё меньшую роль, а Kepler показался в этом плане шагом назад. Мозгом я понимал, что такое вряд ли возможно и решил немного выждать.
И вот на этой неделе мне пришёл whitepaper по новой числодробилке на архитектуре Kepler и многое прояснил.
Начала
Изначально эта заметка задумывалась только для тех, кто в теме, но на всякий случай поясню что такое compute capability в CUDA.
Итак, компания nVidia разрабатывает видеокарты для общих вычислений вот уже 5 лет. Не сказать, что до этого нельзя было считать на GPU, но делать это было весьма некомфортно для нормального человека. В 2007 году была предложена универсальная архитектура для вычислительных устройств (CUDA) на базе видеокарт. Это позволило экстенсивно наращивать мощность устройств, сохраняя при этом основные особенности архитектуры. То есть количество процессоров и объём памяти постоянно растут, а вот разделение памяти на shared/global/texture и регистры так и сохраняются ещё с тех давних времён (с СС 2.0 появились также surface и пара кэшей, но это уже другая песня).
Однако ничто не стоит на месте и архитектура и набор команд со временем изменяются – иногда значительно, иногда не очень. Вот для отображения семейств GPU с идентичной архитектурой и были определены версии Compute сapability (СС). Для примера: устройства с CC 1.0 не умели делать атомарных операций вообще, с СС 1.1 – умели в глобальной памяти а с СС 1.2 – и в глобальной и в shared. Полный список возможностей разных СС традиционно приводится в конце CUDA C Programming Guide.
Что принесёт нам Kepler?
Во-первых – новый огромный мультипроцессор. Если раньше мультипроцессоры имели 8 (CC 1.x), 32 (CC 2.0) или 48 (СС 2.1) потоковых процессоров, то в Kepler используется новый чип на 192 процессора. Остальные характеристики тоже впечатляют:
FERMI GF100 | FERMI GF104 | KEPLER GK104 | KEPLER GK110 | |
---|---|---|---|---|
Версия CC | 2.0 | 2.1 | 3.0 | 3.5 |
Потоков в Warp’e | 32 | 32 | 32 | 32 |
Число warp’ов на мультипроцессор | 48 | 48 | 64 | 64 |
Потоков на мультипроцессор | 1536 | 1536 | 2048 | 2048 |
Блоков на мультипроцессор | 8 | 8 | 16 | 16 |
32-битные регистры на мультипроцессор | 32768 | 32768 | 65536 | 65536 |
Максимальное количество регистров/поток | 63 | 63 | 63 | 255 |
Конфигурации количества shared-памяти | 16К 48К |
16К 48К |
16К 32К 48К |
16К 32К 48К |
Максимальный размер grid по оси X | 2^16‐1 | 2^16‐1 | 2^16‐1 | 2^32‐1 |
Hyper‐Q | Нет | Нет | Нет | Есть |
Динамический параллелизм | Нет | Нет | Нет | Есть |
- Shuffle Instruction – новый способ обмена данными между потоками в блоке. Если лень выделять отдельную shared mem и управлять доступом к ней, то берём локальную переменную и жонглируем ей от потока к потоку.
- Атомарные операции с двойной точностью. Ну, добавили парочку. Главное – обещают ускорение до 9 раз!
- Новый read only кэш данных. В Fermi появились L1 и L2 кэши данных, а в Kepler можно отмечать данные как read only (
const __restrict
Вывод
Короче, не знаю как вы, а я прям с нетерпением буду ждать новых Kepler! Только не знаю, удастся ли добраться до двух компов с GPU СС 3.5 – чтоб GPUDirect пощупать. Если будет у кого – дайте потрогать, ладно?
Maxwell Architecture
Maxwell is NVIDIA’s next-generation architecture for CUDA compute applications. Maxwell introduces an all-new design for the Streaming Multiprocessor (SM) that dramatically improves energy efficiency. Improvements to control logic partitioning, workload balancing, clock-gating granularity, compiler-based scheduling, number of instructions issued per clock cycle, and many other enhancements allow the Maxwell SM (also called SMM) to far exceed Kepler SMX efficiency.
Maxwell retains and extends the same CUDA programming model as in previous NVIDIA architectures such as Fermi and Kepler, and applications that follow the best practices for those architectures should typically see speedups on the Maxwell architecture without any code changes.
The following documents provide more details about programming and tuning code for Maxwell GPUs.
- Maxwell: The Most Advanced CUDA GPU Ever Made | Technical Blog
- 5 Things You Should Know About the New Maxwell GPU Architecture | Technical Blog
- Maxwell Compatibility Guide (This requires membership of our CUDA Registered Developer Program)
- Maxwell Tuning Guide (This requires membership of our CUDA Registered Developer Program)
- Maxwell Architecture Related Blogs | NVIDIA.COM
- Maxwell articles on GeForce | GEFORCE.COM
- Maxwell Architecture for Gaming | GEFORCE.COM (link coming soon)
- GeForce Gaming Graphics Cards and Notebook GPUs with Maxwell Architecture:
- First generation Maxwell
- Graphics Cards
- GeForce GTX 750Ti
- GeForce GTX 750
- GeForce GTX 960M
- GeForce GTX 950M
- Graphics Cards
- GeForce GTX TITAN X
- GeForce GTX 980
- GeForce GTX 980Ti
- GeForce GTX 970
- GeForce GTX 960
- GeForce GTX 980M
- GeForce GTX 970M
- GeForce GTX 965M
Your GPU Compute Capability
Are you looking for the compute capability for your GPU, then check the tables below. You can learn more about Compute Capability here.
NVIDIA GPUs power millions of desktops, notebooks, workstations and supercomputers around the world, accelerating computationally-intensive tasks for consumers, professionals, scientists, and researchers.
Get started with CUDA and GPU Computing by joining our free-to-join NVIDIA Developer Program.
- Learn about the CUDA Toolkit
- Learn about Data center for technical and scientific computing
- Learn about RTX for professional visualization
- Learn about Jetson for AI autonomous machines
If you have an older NVIDIA GPU you may find it listed on our legacy CUDA GPUs page
Click the sections below to expandCUDA-Enabled Datacenter Products
Tesla Workstation Products
GPU Compute Capability Tesla K80 3.7 Tesla K40 3.5 Tesla K20 3.5 Tesla C2075 2.0 Tesla C2050/C2070 2.0 Какая версия compute capability у архитектуры nvidia fermi
Nvidia Fermi — это архитектура графических процессоров (ГП) компании Nvidia, которая была представлена в 2010 году. Она стала первой архитектурой с поддержкой compute capability, что позволило использовать ГП для параллельных вычислений вне графических приложений.
Compute capability — это показатель, определяющий особенности аппаратной разработки и функциональные возможности конкретной версии архитектуры. Учитывая его значение, разработчики могут адаптировать свои программы для максимально эффективного использования ресурсов ГП и достижения высокой производительности.
Compute capability архитектуры Nvidia Fermi имеет две основные версии: 2.x и 3.x. Ключевое отличие между ними заключается в поддержке различных технологий и ограничениях по работе с памятью.
Версия 2.x поддерживает следующие технологии: атомарные операции на глобальной памяти, двоичные операции на глобальной памяти, производительную работу с памятью и конкурентное обращение к памяти со стороны ядер.
Версия 3.x предлагает дополнительные функции, такие как: возможность обхода многослойных рекурсивных операций с памятью, поддержку 3D текстур, улучшенную эффективность работы с памятью и обработку ошибок. Также в этой версии увеличилось количество блоков и варпов на мультипроцессор.
Особенности compute capability архитектуры Nvidia Fermi
Архитектура Nvidia Fermi была представлена в 2010 году и стала значительным шагом вперед в развитии графических процессоров. Она была первой архитектурой, которая в полной мере реализовала концепцию общей вычислительной архитектуры (Compute Unified Device Architecture, CUDA) и стала основой для мощных параллельных вычислений на графических ускорителях.
Compute capability — это числовое обозначение, которое определяет возможности графического процессора для выполнения различных вычислительных задач. Архитектура Nvidia Fermi имеет compute capability 2.x, где x — версия compute capability (например, 2.0, 2.1).
Основные особенности compute capability архитектуры Nvidia Fermi:
- Поддержка двойной точности чисел (Double precision): Основным преимуществом архитектуры Nvidia Fermi является поддержка высокоточных вычислений с помощью двойной точности чисел. Графический процессор Fermi имеет встроенную поддержку операций с двойной точностью, что позволяет использовать его для научных расчетов, моделирования сложных физических явлений и других задач, требующих высокой точности.
- Улучшенная параллельность вычислений: Архитектура Fermi предлагает улучшенные возможности параллельных вычислений. Она включает в себя более высокую плотность ядер и улучшенные механизмы управления потоками, которые позволяют эффективно выполнять большое количество вычислений параллельно.
- Технология NVIDIA Parallel DataCache: Архитектура Fermi использует технологию NVIDIA Parallel DataCache для улучшения производительности и снижения задержек в чтении и записи данных в память. Данная технология позволяет процессору более эффективно работать с данными, ускоряя выполнение вычислений.
- Поддержка повышенной энергоэффективности: Архитектура Fermi включает в себя ряд технологий для улучшения энергоэффективности ускорителей Nvidia. Это включает в себя функции автоматического регулирования частоты и напряжения, а также возможность динамического отключения неиспользуемых блоков, что позволяет снизить энергопотребление и повысить эффективность работы графического процессора.
- Улучшенная поддержка оперативной памяти: Fermi имеет увеличенный объем глобальной и константной оперативной памяти, что позволяет более эффективно работать с данными и повысить производительность вычислений.
- Поддержка широкого спектра вычислительных задач: Архитектура Fermi поддерживает большое количество различных операций и инструкций, что делает ее универсальным инструментом для выполнения самых различных вычислительных задач.
Архитектура Nvidia Fermi с compute capability 2.x стала революционным шагом в развитии параллельных вычислений на графических процессорах. Она предложила новые возможности для выполнения сложных вычислительных задач и открыла двери для множества новых приложений и исследований, требующих высокой производительности и эффективности.
Высокая производительность
Nvidia Fermi — это архитектура, которая призвана обеспечить высокую производительность и эффективность вычислений. Ее высокая производительность достигается благодаря ряду технических характеристик и функций, которые воплощены в GPU на основе данной архитектуры.
Одной из основных особенностей Nvidia Fermi является наличие большого количества CUDA-ядер. CUDA-ядра — это параллельные вычислительные элементы, которые способны обрабатывать большой объем данных одновременно. Благодаря этому, архитектура Nvidia Fermi может обрабатывать сложные задачи и вычисления в различных областях, таких как научные исследования, графика и игровая индустрия.
Еще одной важной характеристикой этой архитектуры является большой объем видеопамяти. GPU на базе Nvidia Fermi имеют высокий объем видеопамяти, что позволяет хранить и быстро обрабатывать большие объемы данных. Это особенно полезно для задач, требующих обработки изображений и видео.
Важным аспектом высокой производительности архитектуры Nvidia Fermi является поддержка технологии параллельного программирования CUDA. CUDA позволяет разработчикам создавать и оптимизировать вычислительные ядра, чтобы эффективно использовать возможности GPU. Благодаря этому, задачи, которые ранее требовали больше времени на CPU, могут быть обработаны значительно быстрее на GPU, используя CUDA.
Кроме того, архитектура Nvidia Fermi также обладает высокой пропускной способностью памяти и эффективным механизмом управления энергией. Это позволяет достигать высокой скорости передачи данных между процессором и памятью, а также эффективно использовать энергию, что в итоге повышает производительность архитектуры.
В целом, высокая производительность архитектуры Nvidia Fermi делает ее привлекательным выбором для различных вычислительных задач, которые требуют параллельной обработки больших объемов данных. Благодаря уникальным характеристикам и функциям, эта архитектура способна предложить высокую скорость и эффективность вычислений, необходимую для решения сложных проблем и задач в современном мире.
Поддержка параллельных вычислений
Архитектура Nvidia Fermi обладает высокой поддержкой параллельных вычислений, что позволяет эффективно использовать вычислительные ресурсы графического процессора (GPU). Главной особенностью архитектуры Fermi является наличие множества ядер исполнения, которые выполняют задачи параллельно и независимо друг от друга.
Каждое ядро исполнения в архитектуре Fermi способно обрабатывать большое количество вычислительных задач одновременно. Кроме того, архитектура поддерживает использование многопоточности, что позволяет одновременно выполнять несколько независимых задач на одном ядре исполнения.
Для эффективной работы с параллельными вычислениями на архитектуре Fermi используется программная модель CUDA (Compute Unified Device Architecture). CUDA позволяет разработчикам использовать возможности параллельной обработки данных на GPU путем написания специализированных программ, называемых ядрами (kernel).
Версия compute capability архитектуры Nvidia Fermi используется в различных областях, таких как научные исследования, машинное обучение, обработка видео и аудио, компьютерное зрение и другие. Благодаря своей параллельной вычислительной мощности, архитектура Fermi является востребованной в высокопроизводительных вычислительных системах.
Основные характеристики параллельных вычислений на архитектуре Fermi
Улучшенная архитектура ядер
Архитектура ядер Nvidia Fermi представляет собой базу для построения графических процессоров с высокой производительностью. Версия compute capability 2.x, которая была введена в архитектуре Fermi, включает в себя ряд значительных улучшений по сравнению с предыдущими версиями.
- Увеличенное количество ядер — В архитектуре Fermi увеличено количество ядер до нескольких сотен, что позволяет параллельно выполнять большое количество вычислений. Это особенно полезно для обработки графики, научных вычислений и других задач, требующих интенсивной обработки данных.
- Улучшенная поддержка двойной точности — Fermi является первой архитектурой Nvidia, которая предоставляет полную поддержку вычислений с двойной точностью. Это позволяет эффективно использовать графические процессоры для сложных математических вычислений, требующих более точных результатов.
- Иерархическая организация памяти — Архитектура Fermi включает в себя иерархическую организацию памяти, которая позволяет эффективно использовать различные уровни памяти для доступа к данным. Это улучшает производительность вычислений и сокращает задержки при доступе к памяти.
- Поддержка сопроцессоров Tesla — Fermi поддерживает сопроцессоры Tesla, которые обеспечивают дополнительную вычислительную мощность и могут быть использованы в конфигурации с графическими процессорами для выполнения более сложных задач.
В целом, архитектура ядер Fermi представляет собой важный шаг вперед в области графических процессоров. Улучшенные возможности по параллелизации, поддержка двойной точности и оптимизированная организация памяти делают эту архитектуру идеальным решением для широкого спектра приложений, требующих высокой производительности вычислений.
Широкие возможности программирования
Архитектура Nvidia Fermi предлагает множество возможностей для программирования GPGPU (общего назначения, на базе графического процессора). Она основана на ядре CUDA, которое позволяет разработчикам использовать вычислительную мощь графического процессора для решения сложных задач.
Одним из главных преимуществ программирования на архитектуре Fermi является наличие большого количества ядер исполнения. Каждый графический процессор Fermi содержит сотни ядер, что позволяет выполнять параллельные вычисления на высокой скорости. Благодаря этому, разработчики могут эффективно решать сложные задачи, которые требуют большого количества вычислений.
Для программирования на архитектуре Fermi используется язык программирования CUDA (Compute Unified Device Architecture). Этот язык очень мощный и гибкий, позволяющий разработчикам писать высокопроизводительный код для графического процессора. Он основан на C/C++ и содержит специальные расширения, которые позволяют программистам использовать возможности GPU.
Кроме того, архитектура Fermi поддерживает различные технологии для оптимизации выполнения параллельных вычислений. Например, можно использовать разделяемую память, которая имеется на каждом блоке ядра исполнения. Эта память имеет очень высокую скорость доступа и используется для обмена данными между потоками. Также, архитектура Fermi позволяет использовать текстурную память, которая обладает возможностью кэширования и позволяет эффективно работать с двухмерными данными.
Другой важной особенностью архитектуры Fermi является поддержка различных операций с плавающей точкой, включая двойную точность. Это позволяет программистам выполнять сложные математические операции с высокой точностью на графическом процессоре. Благодаря этому, возможности для программирования на архитектуре Fermi очень широкие и могут быть использованы во многих областях, включая научные и инженерные расчеты, компьютерное зрение, машинное обучение и другие.
Преимущества архитектуры Nvidia Fermi: Большое количество ядер исполнения Мощный язык программирования CUDA Поддержка разных технологий оптимизации Различные операции с плавающей точкой, включая двойную точность Гибкость в конфигурации
Архитектура Nvidia Fermi предоставляет возможности для гибкой настройки конфигурации в соответствии с нуждами разработчиков. Это достигается благодаря использованию различных параметров и опций.
Одним из ключевых параметров, который можно настроить в архитектуре Fermi, является версия compute capability. Версия compute capability указывает на возможности и функциональность графического процессора (GPU) и определяет поддерживаемые функции и инструкции.
Архитектура Fermi поддерживает несколько версий compute capability, начиная с 2.0 и заканчивая 3.5. Каждая последующая версия добавляет новые функции и улучшения, что позволяет разработчикам использовать более современные технологии и инструменты.
Поддерживаемые версии compute capability также влияют на совместимость с различными версиями программного обеспечения и библиотек, таких как CUDA и OpenCL. Разработчики могут выбирать определенную версию compute capability в зависимости от требований исходных кодов, используемых библиотек и других компонентов.
Также архитектура Fermi предоставляет возможности для настройки других параметров, таких как количество вычислительных блоков, количество потоковых процессоров, размер разделяемой памяти и другие. Это позволяет улучшить производительность GPU и адаптировать его под конкретные задачи и требования разработчиков.
В целом, гибкость в конфигурации является одним из основных преимуществ архитектуры Nvidia Fermi. Разработчики могут оптимизировать работу графического процессора под свои нужды, выбирая определенные параметры и настройки. Это позволяет достичь максимальной производительности и эффективности при выполнении вычислительных задач на GPU.
Повышенная энергоэффективность
Архитектура Nvidia Fermi обладает значительно высокой энергоэффективностью, что позволяет сократить энергопотребление и обеспечить экономию электроэнергии. Это достигается благодаря использованию различных технологий и оптимизаций.
Одной из ключевых технологий является динамическое управление энергопотреблением. Архитектура Fermi активно контролирует и регулирует энергию, которая расходуется в процессоре и графическом ядре. Это позволяет достичь оптимального баланса между производительностью и энергопотреблением.
Еще одной важной технологией является управление частотой и напряжением. Arch Decalog использование динамического изменения тактовой частоты и напряжения в зависимости от текущей нагрузки и требований работы приложений Это позволяет уменьшить энергопотребление в неактивных участках работы и максимизировать производительность при максимальных требованиях.
Кроме того, архитектура Nvidia Fermi использует пассивное охлаждение и эффективную вентиляцию для отведения тепла. Это помогает снизить энергопотребление, так как не требуется активное охлаждение с использованием вентиляторов. Также, Fermi позволяет эффективное использование энергии благодаря использованию многоядерной архитектуры и параллельной обработке данных.
В итоге, благодаря повышенной энергоэффективности, архитектура Fermi от Nvidia играет важную роль в области высокопроизводительных вычислений, где требуется значительная вычислительная мощность при минимальном энергопотреблении.
Расширенные возможности визуализации
Архитектура Nvidia Fermi предлагает множество расширенных возможностей для визуализации, которые позволяют быстро и эффективно обрабатывать графическую информацию.
Тесселяция
Архитектура Fermi поддерживает технологию тесселяции, которая позволяет создавать более детализированные 3D-модели и повышать реалистичность графики. Тесселяция позволяет разбить геометрические объекты на множество мелких треугольников для более точного и реалистичного отображения.
Глобальное освещение
Архитектура Fermi поддерживает глобальное освещение, что позволяет создавать более реалистичные и динамичные эффекты света и тени. Глобальное освещение позволяет более точно учитывать переотражение и преломление света, создавая более реалистичные и детализированные изображения.
Поддержка DX11 и OpenGL 4.6
Архитектура Fermi обладает полной поддержкой DirectX 11 и OpenGL 4.6, что позволяет использовать все возможности этих графических интерфейсов. Благодаря этому, разработчики могут создавать современные и высококачественные игры и приложения с наполненным множеством визуальных эффектов.
Высокая производительность
Архитектура Fermi обеспечивает высокую производительность при обработке графики и визуализации. Благодаря мощным вычислительным возможностям и оптимизированным алгоритмам работы с графическими данными, Fermi может справляться с высокими нагрузками и обрабатывать сложные графические сцены с большим количеством объектов и эффектов.
Поддержка CUDA и OpenCL
Архитектура Fermi поддерживает технологии CUDA и OpenCL, что позволяет использовать графический процессор для обработки не только графики, но и других вычислений. Это открывает новые возможности для обработки данных и выполнения вычислений на графическом процессоре, ускоряя работу с большими объемами данных.
Спецификации архитектуры Nvidia Fermi
Поддержка передовых технологий
Nvidia Fermi — это архитектура компании Nvidia, представленная в 2010 году. Она обладает рядом передовых технологий, которые значительно улучшают производительность и функциональность графических вычислений.
Поддержка текстурного блока с расширенным адресным режимом является одной из ключевых возможностей архитектуры Nvidia Fermi. Этот блок позволяет обращаться к 3D текстурам с высокой точностью и детализацией. Благодаря этому, графика выглядит более реалистичной и уровень детализации значительно повышается.
Расширение количества регистров также является важной функцией архитектуры Fermi. Увеличение количества регистров позволяет обрабатывать больше данных одновременно, что ускоряет выполнение вычислительных задач.
Улучшенная архитектура кэш-памяти в Nvidia Fermi позволяет более эффективно использовать кэш-память, что приводит к снижению времени доступа к данным и увеличению скорости обработки информации. Это особенно важно для высокопроизводительных приложений, где требуется быстрый доступ к большим объемам данных.
Поддержка вычислений двойной точности является еще одной передовой технологией, доступной в архитектуре Fermi. Эта возможность позволяет выполнять вычисления с высокой точностью, что особенно важно для научных и инженерных задач, где необходима высокая точность результатов.
В общем, архитектура Nvidia Fermi обладает значительной поддержкой передовых технологий, которые позволяют достичь высокой производительности и качества обработки графических вычислений.
Вопрос-ответ
Какую версию compute capability имеет архитектура Nvidia Fermi?
Архитектура Nvidia Fermi имеет версию compute capability 2.x.
Какие новые возможности появились в версии compute capability 2.x архитектуры Nvidia Fermi?
В версии compute capability 2.x архитектуры Nvidia Fermi появились новые возможности, такие как предсказание ветвлений, поддержка многопоточности и повышенная производительность.
Какие графические карты основаны на архитектуре Nvidia Fermi?
На архитектуре Nvidia Fermi основаны графические карты серии GeForce 400 и 500.
Какие языки программирования поддерживает архитектура Nvidia Fermi?
Архитектура Nvidia Fermi поддерживает языки программирования CUDA и OpenCL.
Есть ли ограничения в версии compute capability 2.x архитектуры Nvidia Fermi?
В версии compute capability 2.x архитектуры Nvidia Fermi есть некоторые ограничения, такие как ограничения в памяти и количество доступных регистров.
Какие преимущества имеет архитектура Nvidia Fermi по сравнению с предыдущими версиями?
Архитектура Nvidia Fermi имеет ряд преимуществ по сравнению с предыдущими версиями, включая улучшенную производительность, повышенную эффективность работы с памятью и новые возможности для разработчиков.
- Graphics Cards
- First generation Maxwell