> Зачем заставлять FPGA эмулировать ускоритель, что бы на нем решать какие то
> задачи, когда можно саму FPGA эти задачи решать Затем что
1) FPGA сложно перепрограммировать на ходу. В отличие от проца или gpu для которых сгенерить новый код на ходу не вопрос, вгрузка кода в FPGA на ходу и из внешних источников является куда большей проблемой. Львиная доля FPGA этого вообще не предусматривает и требует или перешивки набортной памяти или перешивки внешней микросхемы с конфигурацией. А opencl - cтандартный программный интерфейс по вгрузке вашего кода в все что умеет считать...
2) Генерация кода для FPGA обычно делается черт-знает-как. Это - секрет хвирмы. И делается только через их собственные тулзы. Уникальные и самобытные. И понятный фиг без сорцев. Поэтому взять и вот прям ща странслировать произвольный алгоритм с сей в их bitstream - несколько облом. С другой стороны opencl как раз об этом: допиленный диалект си транслируется стандартными методами в целевой код. Оно не привязано ни к ОС, ни даже к типу девайса - для программ это прозрачный механизм. Им пофиг что за девайс и на какой платформе будет считать. Это удобно.
3) Мощные FPGA стоят конских денег, а отпрототипленный в них дизайн не настолько уж и быстрый, особенно если нужна хоть какая-то гибкость в логике. Поэтому обычно сначала прототипят в FPGA а потом если вроде бы получилось - делают в виде ASIC, где схема уже реализована не набором перепрограммируемых вентилей, а просто соединением желаемой логики по полученному нетлисту. При этом чип получается в разы дешевле, если их надо много. И если к ASIC будет вывешен стандартный интерфейс OpenCL - это всех в принципе устроит.