LINUX.ORG.RU

История изменений

Исправление aist1, (текущая версия) :

А я заявляю, что таких задач нету.

Если говорить о сфероконических GPGPU, то — да. Если же говорить о конкретных моделях, то существующие GPGPU/FPGA/ASIC хорошо работают тогда, когда есть большое количество вычислений над небольшим количеством данных, и (что важно), что в процессе не создается большое количество промежуточных данных. Пример — вычисление декартова произведения (сложность — O(N^2))или перемножение матриц (сложность — O(N^3)). В общем случае, есть класс т.н. систолических архиткектур, которые, грубо говоря, сводятся к множеству глубоко вложенных циклов над массивом. Вот они очень хорошо акселерируются на указанных классах устройств. А, например, комбинаторный обход динасически порождаемого дерева решений — нет. Поэтому, например, SAT-солверы на GPGPU сливают своим аналогам на CPU (на FPGA ситуация сильно лучше, но «есть нюансы»).

В общем случае стоит смотреть не на то, что это (CPU, GPU или FPGA), а какая у железки архитектура памяти. Тупо передать слово из RAM в CPU требует в 600 раз больше энергии, чем перемножить два слова. Поэтому, скоро будет рулить in-memory computing.

В этом свете, CPU — это машина состояний над вполне определенной архитектурой памяти: 3 уровня кэшей, сложный prefetching, скрывающий задержки. Всё ориентировано на ускорение произвольного доступа. FPGA ориентированы на потоковую обработку. GPGPU — на «матричную» (prefetcher у них довольно таки простой).

Исходная версия aist1, :

А я заявляю, что таких задач нету.

Если говорить о сфероконических GPGPU, то — да. Если же говорить о конкретных моделях, то существующие GPGPU/FPGA/ASIC хорошо работают тогда, когда есть большое количество вычислений над небольшим количеством данных, и (что важно), что в процессе не создается большое количество промежуточных данных. Пример — вычисление декартова произведения (сложность — O(N^2))или перемножение матриц (сложность — O(N^3)). В общем случае, есть класс т.н. систолических архиткектур, которые, грубо говоря, сводятся к множеству глубоко вложенных циклов над массивом. Вот они очень хорошо акселерируются на указанных классах устройств. А, например, комбинаторный обход динасически порождаемого дерева решений — нет. Поэтому, например, SAT-солверы на GPGPU сливают своим аналогам на CPU (на FPGA ситуация сильно лучше, но «есть нюансы»).

В общем случае стоит смотреть не на то, что это (CPU, GPU или FPGA), а какая у железки архитектура памяти. Тупо передать слово из RAM в CPU требует в 600 раз больше энергии, чем перемножить два слова. Поэтому, скоро будет рулить in-memory computing.