Вставить V8 в приложении OpenCL? - PullRequest
7 голосов
/ 16 ноября 2010

Я использую OpenCL для написания ядер GPGPU, предназначенных для среды выполнения NVidia CUDA. Я недавно читал о V8 и нашел страницу, описывающую методы встраивания V8:

http://code.google.com/apis/v8/embed.html

Можно ли «обернуть» все функции OpenCL в «шаблоны» V8, чтобы я мог писать логику ядра на JavaScript?

Для справки, ссылки на привязки OpenCL 1.1 C ++ находятся на веб-сайте Khronos.

Моя главная проблема заключается в том, что OpenCL сильно зависит от OpenGL. Может ли оболочка V8 OpenCL повлечь за собой обертывание больших частей OpenGL (или непозволительно, среду выполнения CUDA с закрытым исходным кодом)? Или просто невозможно совместить виртуальную машину V8 и среды выполнения CUDA?

1 Ответ

1 голос
/ 18 декабря 2010

Это может быть «возможно», но, скорее всего, неосуществимо и непрактично. Интерпретаторы по своей сути являются последовательными процессорами. Вам нужно будет создать интерпретатор для каждого потока (или, по крайней мере, для каждой группы потоков, использующей разделяемую память, но тогда вам придется иметь дело с потоками, топающими друг друга, если они используют один и тот же экземпляр интерпретатора). Большинство видеокарт не имеют памяти для этого. Я полагаю, вы могли бы сопоставить разделяемую память хоста, чтобы обойти это.

Итог.

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

...