Pull to refresh

Ответ на пост «GPU в помощь?» //Философские размышления на тему вычислений

Reading time3 min
Views631

История



Гетерогенные вычисления уже есть во плоти и крови много лет — архитектура Cell. Там есть один проц в котором 1 ядро умное и выполняет функции которые в современных PC выполняет CPU, и 8 ядрышек которые гораздо проще, чуть-чуть сложнее чем ядра в видахе, у них у каждого свой поток инструкций, но он определяется управляющим ядром, сами эти ядра походу даже прерывания не обрабатывают, только считают циферки. Но с этой архитектурой возникли проблемы масштабирования, ибо если просто сделать 2 таких ядра, то появится проблема — поток выполняемый на одном главном ядре может иметь больше работы для своих «дочерних» ядер, чем другой и таким образом ухудшается утилизация чипа. Да под такие штуки сложно писать, но эту архитектуру можно развивать различными способами.

Философские размышления на тему вычислений



До ферми у нВидиа в одном вычислительном блоке было какраз 8 ядрышек — считай исполнительных блоков. Можно было бы сделать что-то похожее на Cell и GPU в одном — 2,4 управляющих ядра Cell — отдают задачи 4-ём,8 SIMD блокам аналогичным тем которые использовались на старых видахах nVidia при этом управляющее ядро просто кладёт задачу в очередь, а аппаратный шедулер назначает задачи из 2-х,4-х очередей (по одной для каждого управляющего ядра) свободным SIMD блокам. Такая схема позволит упростить программирование таких чипов, ибо с точки зрения программиста дополнительные ядрышки — просто SIMD блок в ядре, мы с вами пишем программы для обычных процессоров даже не подозревая что там есть SIMD блоки и какое там количество исполнительных блоков. Это очень похоже на то что AMD делают в архитектуре Bulldozer (процы от Sun держат очень много потоков на ядро и эффективно разделяют ресурсы между ними), там есть общий планировщик для 2-х потоков и он управляет ресураси 2-х ядер. Если удлинить конвейер можно сделать в одном модуле планировщик не для 2-х потоков, а для 4-х и более, что позволит утилизировать исполнительные блоки даже в однопоточных задачах с интенсивным использованием SSE/(AVX в будущем). Для этого правда понадобится интересного вида расширение набора инструкций, но и об этом уже подумали — это Intell AVX, они сами хотели использовать его и для видеокарт Larrabee и для процессоров. Поскольку мы знаем что в этих чипах 16 исполнительных блоков в ядре, а в любом современном проце в SIMD блоке выполняющем SSE операции их раза в 4 меньше, можно сделать вывод что товарищи из штеуд, уже придумали как эти инструкции виртуализировать, тоесть проблема программирования просто не стоит, единственная проблема что у них видаха не получилась и это единственный повод ругать гетерогенные вычисления. К реально производительным гетерогенным вычислениям раньше приведёт подход Bulldozer, растянутый вширь раза в 4, чем тупое включение видахи на тот же чип, хотя это уменьшает задержки при обращении к ней, это не упрощает работу с ней. Умные виртуальные машины могут помочь если объединять проц с графическим чипом, с небольшим количеством исполнительных блоков в SIMD блоке, 80 вычислительных блоков в одном SIMD блоке в чипах Fusion — слишком большая/не эргономичная дубинка для забивания крохотных гвоздей. Архитектура видеокарт AMD плохо подходит для большинства вычислительных задач, в отличие от архитектур nVidia — это ни для кого не секрет. Но она очень хорошо подходит для игр — вывод без создания новой архитектуры GPU, шансы AMD сделать из Fusion «конфетку» выглядят плохо.

Ближайшее будущее



Но вернёмся к реальности — nVidia говорила что гетерогенные вычисления сомнительная идея, видимо только потому что они решаются делать свой проц, многоядерный проц с архитектурой ARM и видаха с архитектурой Fermi на одном чипе — по-моему будет гораздо удобнее/интереснее для вычислений нежели отдельно просто крутая карточка ферми, потому что редукция в паре мап/редьюс выполняется рекурсивно, следовательно последовательно — из чего следует что для успешного применения парадигмы мап/редьюс на видахе нужно иметь несколько процессорных ядрышек, с высокой частотой, индивидуальными планировщиками и внеочредным исполнением инструкций — а расположение на одном чипе позволит это выполнять без накладных расходов на копирование данных в память + позволит создавать новые задачи/потоки прямо на чипе, не потребует изменения архитектуры видеокарты — а лишь некоторых изменений драйверов.
Tags:
Hubs:
Total votes 15: ↑9 and ↓6+3
Comments1

Articles