Программирование
Мы уверены, что вы имеете опыт работы с коммерчески доступными x86/GPU/ARM вычислительными системами на языках С/С++. Скорее всего, вы программировали GPU на специализированных языках типа OpenCL или CUDA. Очень вероятно, что как для универсальных, так и для графических процессоров вы использовали специальные, ориентированные на конкретное “железо”, приемы для повышения производительности работы вашего кода. И, как любому программисту, вам бы хотелось, с одной стороны, “поменьше копаться в железе” и использовать уже изученные, привычные для вас, языки программирования, с другой - “выжать из оборудования все, на что оно способно”, и получить действительно быстрый и/или, в зависимости от требования заказчика, энергоэффективный код.
Учитывая вышесказанное, отлично понимая трудности работы с любой новой архитектурой, мы собираемся предложить для программирования всех процессоров, построенных на базе архитектуры MALT, универсальный подход, который позволяет начать работать на MALT с C/C++ кодом, либо уже имеющимся у вас, либо написанным на основе предлагаемых нами примеров. Далее, оптимизируя его в соответствии с рекомендациями из нашего руководства, выжать из оборудования все, на что оно способно. Для удобной отладки пользовательского кода мы предоставляем полнофункциональный эмулятор. Для выявления узких мест и оптимизации в комплекте с эмулятором идет профилировщик.
Программист, в зависимости от своих предпочтений и требований к оптимизации прикладного кода, может выбрать один из следующих подходов:
– C++ для MALT. Наиболее простой путь начала работы с MALT. Для программирования скалярных ядер поддерживается стандарт С++17. Работа с потоками осуществляется через конструкции C++ std::thread, std::mutex и другие. MALT выступает в роли классического многоядерного процессора, поэтому портировать существующее ПО и библиотеки легко.
– OpenCL для MALT. Реализация стандарта OpenCL для работы со скалярными и векторными ядрами MALT. Реализация OpenCL поставляется вместе с библиотекой проблемно-ориентированных алгоритмов, оптимизированных под MALT. Теперь перейти на MALT для пользователей ускорителей AMD, NVIDIA, ARM стало проще.
Написать свою программу или запустить интересующий Вас пример можно в онлайн-компиляторе, который скомпилирует исходный код и выполнит его онлайн в виртуальной среде. Онлайн-компилятор позволит не только ознакомиться с системой MALT, но и оценить возможности системы.
Отметим, что часть инструментальных средств, описанных выше, находится в стадии разработки, пожалуйста, уточняйте информацию по поводу доступности тех или иных инструментов для конкретного процессора или семейства!
C++ для MALT
При использовании потоков C++ решения MALT "выглядят" как обычные многоядерные процессоры. Поддерживаются стандарты языка вплоть до С++17. Функции для использования аппаратных расширений содержатся в пространстве имён malt::
Пример программы на С++ для MALT:
|
OpenCL для MALT
Реализация стандарта OpenCL для работы со скалярными и векторными ядрами MALT. Реализация OpenCL поставляется вместе с библиотекой проблемно-ориентированных алгоритмов, оптимизированных под MALT. Теперь перейти на MALT для пользователей ускорителей AMD, NVIDIA, ARM стало проще.
Пример программы на OpenCL для MALT:
|