1.02k likes | 1.16k Views
Транспьютеры. What is Transputer ?. Транспьютер ( англ. transputer ) — элемент построения много процессорных систем, выполненный на одном кристалле большой интегральной схемы
E N D
What is Transputer? • Транспьютер (англ.transputer) — элемент построения многопроцессорных систем, выполненный на одном кристалле большой интегральной схемы • Transistor Computer. Goal was produce low cost low power chips to form a complete processor, just as transistors had earlier • The first single chip computer designed for message-passing parallel systems, in 1980s, by the company INMOS (ныне — подразделение STMicroelectronics).
Transputer Versions • First generation 16 bit transputers: T212 T222 T225 32 bit transputers without a floating unit: T400 T414 T425 T426 32 bit transputers with a floating unit : T800 T801 T805 All have the same architecture, similar instruction sets and fully compatible communications links. Second Generation 64 bit transputer with a floating unit : T9000 Although general architecture much the same, it is a new design and is much more complex chip then its predecessors.
Транспьютерная материнская плата МТБ-8
What is a GPU? “A Graphics Processing Unit or GPU (also occasionally called Visual Processing Unit or VPU) is a dedicated graphics rendering device for a personal computer or game console. Modern GPUs are very efficient at manipulating and displaying computer graphics, and their highly-parallel structure makes them more effective than typical CPUs for a range of complex algorithms.” - Definition from wikipedia.org • Radeon 9800 Pro
History of GPUs • The pre-GPU era • VGAs in the 80s • 4 (or even 5) generations of GPUs in the last decade • Fixed functions vs. programmability • API support • OpenGL, Direct3D (v6.0 to v9.0) • Shader models (v1.0 – v3.0)
Предыстория к GPGPU GPU Шейдеры Видео- ускоритель Сопроцессор 1990 1995 2000 2005 2010
Why shifting from CPU to GPU? • Why not just keep increasing the CPU speed and leave the GPU to handle what is its best? • CPU speed is reaching a bottle neck (how many transistors can be integrated on a chip) • Solution, in the future, nano technology, short term, dual core machines (double CPUs), clustered CPUs, …, even grid computing and supercomputing • GPU facing the same problem, but still have space to press on due to its task specific designs and parallelism paradigm
Существующие многоядерные системы Посмотрим на частоты CPU: • 2004 г. - Pentium 4, 3.46 GHz • 2005 г. - Pentium 4, 3.8 GHz • 2006 г. - Core Duo T2700, 2333 MHz • 2007 г. - Core 2 Duo E6700, 2.66 GHz • 2007 г. - Core 2 Duo E6800, 3 GHz • 2008 г. - Core 2 Duo E8600, 3.33 Ghz • 2009 г. - Core i7 950, 3.06 GHz
Мотивация: Вычислительная Мощность Courtesy Ian Buck, John Owens
An Aside: Вычислительная мощность • Почему GPU становятся мощнее так быстро? • Арифметика : особенности архитектуры GPUs позволяют относительно просто использовать дополнительныетранзисторы для вычислений, а не для кэша • Экономика : Многомиллиардная индустрия компьютерных игр вкладывает деньги в разработку все более совершенных GPU
Мотивация: ГибкостьиТочность • Современные GPUs хорошопрограммируемы • Программируемыепиксельные, вершинные, видеопроцессоры • Установившаясяподдержка высокоуровневых языков программирования • Современные GPUs обеспечиваютвысокую точность вычислений • Аппаратная поддержка чисел с плавающей точкой одинарной точности (32 бита). Что достаточно много для многих(не всех) приложений
Мотивация: Потенциал GPGPU • Кратко: • Гибкость и мощность GPUs делает их привлекательными длявычислений общего назначения • Сфера применения GPGPU очень широка – от алгоритмов компьютерной графики, таких как задача глобального освещения, до задач численных методов и ММС. • Цель: сделать доступными разработчикам недорогую вычислительную мощность GPU как вычислительного сопроцессора
Проблемы: Сложность использования • GPUs разработаны для & направляемыкомпьютерными играми • Необычная модель программирования • Идиомы программированиясвязаны скомпьютерной графикой • Среда программирования сильно ограничена • Архитектура: • Высоко параллельная • Быстрое развитие • Нельзя просто “перенести”CPU код на GPU!
Основы GPU :КлассическийГрафический Конвейер CPU • Упрощенный графический конвейер • Отметим что конвейер варьируем • Кэши, Списки и многое другое не показано GPU Graphics State Экранные треугольники (2D) Итоговые пиксели (Цвет, Глубина) Фрагменты (pre-pixels) Освещенные вершины (2D) Приложение Трансформация& Свет Сборка примитивов Растериза- ция Тени вершины (3D) Память ВК (Текстуры) Рендеринг в текстуру
Программируемый вершинный процессор! Основы GPU : Современный Графический Конвейер CPU GPU Graphics State ВершинныеПроцессоры Освещенный вершины (2D) Фрагменты (pre-pixels) Итоговые пиксели (цвет, глубина) Экранные треугольники(2D) Приложение Transform Сборка Примитивов Растериза- ция Shade Вершины (3D) Память ВК (Текстуры) Рендеринг в текстуру • Программируемый фрагментный процессор!
GPU Конвейер: Преобразования • Вершинный процессор (несколько параллельных) • Преобразования из глобальной системы координат в систему координат изображения • Повершенное вычисление света
Программируемая сборка примитивов! Графический Конвейер последнего поколения CPU GPU Graphics State Геометрический процессор Xformed, Lit Vertices (2D) Screenspace triangles (2D) Фрагменты(pre-pixels) Итоговые пиксели (Цвет, глубина) Приложение Вершинный процессор AssemblePrimitives Растериза- ция Фрагментный Процессор Вершины (3D) Текстуры Рендеринг в текстуру • Более гибкая адресация памяти!
GPU Конвейер: Растеризация • Растеризатор • Перевод геометрического пр. (вершины) в плоское пр. (фрагменты) • Фрагмент = фрагмент изображения • Пиксель + связанные с ним данные: цвет, глубина, трафарет, etc. • Интерполирование повершенных данных через пиксели
Программируемая сборка примитивов! Графический Конвейер последнего поколения CPU GPU Graphics State Фрагментный процессор Xformed, Lit Vertices (2D) Screenspace triangles (2D) Фрагменты(pre-pixels) Итоговые пиксели (Цвет, глубина) Приложение Вершинный процессор AssemblePrimitives Растериза- ция Фрагментный Процессор Вершины (3D) Текстуры Рендеринг в текстуру • Более гибкая адресация памяти!
GPU Конвейер: Тени • Фрагментный процессор (несколько параллельных) • Вычисление цвета для каждого пикселя • Возможность чтения из текстур (изображений)
Программируемая сборка примитивов! Графический Конвейер последнего поколения CPU GPU Graphics State Xformed, Lit Vertices (2D) Screenspace triangles (2D) Фрагменты(pre-pixels) Итоговые пиксели (Цвет, глубина) Пиксельный процессор Приложение Вершинный процессор AssemblePrimitives Растериза- ция Фрагментный Процессор Вершины (3D) Текстуры Рендеринг в текстуру • Более гибкая адресация памяти!
Deep Pipelines • think assembly line conveyer belt Vertex Shader Triangle Setup Fragment Shader Fragment Blender Frame- Buffer(s) Deep Pipelines
Wide Pipelines (many conveyor belts) Vertex Shader Triangle Setup Fragment Shader Fragment Blender Frame- Buffer(s) Wide Pipelines Deep Pipelines
Parallelism, Parallelism, Parallelism • Deep/Wide pipelines allow memory latency to be hidden. • If one fragment(or vertex) is waiting on a memory fetch, go work on another element for a while. • Don’t need expensive huge caches (unlike CPU’s) • Fill precious chip space with arithmetic logic units (ALU).
The Big Bandwidth Bugaboo • Moving Data is expensive http://graphics.tomshardware.com/graphic/20040310/index.html CPU L1 L2 GPU 6.4 GB/sec DMA AGP Mem Main Memory Video Memory
General Purpose Computing (GPGPU) • What’s the GPU good for? • Everything you can get it to do efficiently for you!!! • Physics • Collision Detection • AI • And yes, graphics too… Cullide: Naga Govindaraju et. al Skyworks, Mark Harris
0,1 1,1 0,0 1,0 General Purpose Computing • Texture Maps are arrays of data elements • Fragment Program is an “instruction” • Frame buffer holds the result of the SIMD operation m Fragment Program n m n m n Framebuffer Texture Maps (Multiple Data) ScreenFilling Quadrilateral Fragment Program (Single Instruction) Single Instruction Multiple Data/ Stream Processor
Квантовый компьютер • Квантовый компьютер – гипотетическое вычислительное устройство, которое путем выполнения квантовых алгоритмов существенно использует при работе квантово механические эффекты, такие как квантовый параллелизм и квантовая запутанность.
Квантовый компьютер • Основная идея квантового вычисления состоит в том, чтобы хранить данные в ядрах атомов, изменяя их ориентацию в пространстве. Элементарная ячейка такого компьютера получила название квантовый бит (quantum bit = кубит). В отличие от привычной нам единицы информации - бита (binary digits = bits), который может принимать только два значения или "0" или "1", квантовый бит в соответствии с принципом неопределенности, постулируемым квантовой механикой, может находиться одновременно в состоянии и "0", и "1".
Постановка задачи • Кубит является основным рабочим элементом квантового компьютера, физически реализуется в виде двухуровневой квантовой системы, например фотона, атома, донора в полупроводнике, ядерного спина, серхпроводящего контура • Важнейшей характеристикой кубита является время декогерентности • Наиболее перспективные устройства для реализации квантового компьютера - кубиты на основе джозефсоновских переходов M. Nakahara and T. OhmiQuantum computing: from linear algebra to physical realizations. – London, 2008 Проблемы: - измерение скоростей релаксации кубита - управление динамикой кубитов в сильном переменном поле - измерения состояния кубита в условиях шума