Представлен свободный компилятор CUDA-приложений для многоядерных x86-процессоров

Opensource проект Ocelot недавно выпустил JIT-компилятор для CUDA-приложений, позволяющий выполнять одну и ту же программу как на графических процессорах NVIDIA, так и на x86 процессорах, выступая в роли альтернативы технологии OpenCL. Компилятор переводит инструкции GPU в байткод LLVM, а затем генерирует собственный код для различных целевых архитектур. Компилятор был проверен более чем на 100 приложениях CUDA. Весь код системы доступен под лицензией BSD.

Предварительный список возможностей:

  • Для x86-процессоров:
    • Multi-Core выполнение. Выполнение частей CUDA-программ автоматически распределяется между всеми ядрами процессоров в системе.
    • Динамическая оптимизация. Оптимизация программных частей по мере их выполнения.
    • Поддержка всех особенностей CUDA. Это включает в себя текстуры, OpenGL, события, потоки, MALLOC-массивы и т.д.
    • Высокая производительность.
  • Для GPU:
    •   Доступна обертка для JIT-компилятора от NVIDIA, поддерживающего динамическую оптимизацию.
    •   Динамическая оптимизация. Оптимизация программных частей по мере их выполнения.
    •   Поддержка плавающих контекстов. Один хост-поток может управлять несколькими GPU-устройствами и указатели могут быть переданы от одного хост-потока к другому.
  • Режим Эмуляции:
    •  Поддержка проверки границ памяти
    •  Возможность собирать подробную информацию о производительности при работе программы
  • Ограничения:
    • В настоящее время поддерживается только Linux и требуется система с GCC-4.2 или более поздние версии.
    • Недоработана поддержка многопоточных приложений при использовании целевых GPU .
    • Нет поддержки SSE для x86-процессоров. Технология должна поддерживаться в следующей версии.

©  OpenNet