Программирование Intel IGP (например, Iris Pro 5200) без OpenCL

Пиковые GFLOPS ядер для рабочего стола i7-4770k @4GHz составляют 4 ГГц * 8 (AVX) * (4 FMA) * 4 ядра = 512 GFLOPS, Но последний Intel IGP (Iris Pro 5100/5200) имеет пик более 800 GFLOPS. Поэтому некоторые алгоритмы будут работать еще быстрее на IGP. Совмещение ядер с IGP вместе было бы даже лучше. Кроме того, IGP продолжает потреблять больше кремния. Iris Pro 5100 теперь занимает более 30% кремния. Понятно, в каком направлении идут настольные процессоры Intel.

Однако, насколько я видел, Intel IGP, в основном игнорируется программистами, за исключением OpenCL/OpenGL. Мне любопытно узнать, как можно запрограммировать аппаратное обеспечение Intel HD Graphics для вычисления (например, SGEMM) без OpenCL?

Добавлен комментарий: Их нет поддержки Intel для графики HD и OpenCL для Linux. Я нашел beignet, который с открытым исходным кодом пытается добавить поддержку Linux, по крайней мере, для графики Ivy Bridge HD. Я не пробовал. Вероятно, люди, разрабатывающие Beignet, знают, как программировать графическое оборудование HD без OpenCL, тогда.

Ответ 1

Имейте в виду, что для копирования данных на видеокарту и обратно требуется производительность, поэтому это необходимо учитывать. AMD близка к выпуску чипов APU, которые имеют единую память для процессора и графического процессора на той же матрице, что значительно облегчит эту проблему.

Способ использования графического процессора до того, как CUDA и OpenCL должны были представлять память, которая будет использоваться как текстура, использующая DirectX или OpenGL. Слава Богу, нам больше не нужно это делать!

AMD действительно подталкивает модель APU/OpenCL, поэтому больше программ должно использовать GPU через OpenCL - если есть компромисс производительности. В настоящее время GPU-вычисления - это немного нишевый рынок, отнесенный к высокопроизводительным вычислениям или хрустным номерам, которые просто не нужны для веб-просмотра и обработки текстов.

Ответ 2

Больше не имеет смысла для поставщиков предлагать вам использовать низкоуровневую ISA.

  • Это очень сложно, и большинство программистов не будут использовать его.
  • Он не позволяет им корректировать ISA в будущих версиях.

Таким образом, программисты используют язык (например, C99 в OpenCL), а среда выполнения выполняет оптимизацию ISA прямо на пользовательской машине.

Пример того, что это позволяет: AMD переключается с векторных машин VLIW на скалярные машины и существующие ядра по-прежнему работает (чаще всего работает быстрее). Вы не могли бы это сделать, если бы вы написали ISA напрямую.

Ответ 3

Программирование сопроцессора, такого как iris без opencl, скорее похоже на вождение автомобиля без рулевого колеса.

OpenCL предназначен для предоставления необходимого parallelism, чтобы радужная оболочка нуждалась в достижении своих теоретических характеристик. Вы не можете просто создать 100 потоков или процессов на нем и ожидать производительности. Наличие блоков потоков, выполняющих одно и то же, в то же время, на аналогичных адресах памяти, является всей сутью вопроса.

Возможно, вы можете придумать лучшую парадигму, чем opencl для достижения этой цели; но пока вы это сделаете, я предлагаю вам попробовать изучить некоторые opencl. Если вы находитесь в python; pyopencl - отличное место для начала.