MALT_SDK

 

MALT_SDK - это набор средств разработки, который позволяет прикладным программистам создавать, исполнять и отлаживать приложения для существующих и проектируемых аппаратных платформ на базе MALT процессоров скалярной, векторной и смешанной архитектур. MALT_SDK позволяет компилировать исходный код для процессоров с архитектурой MALT и выполнять его в виртуальной среде, где все реальные аппаратные компоненты процессора MALT и его окружения имитируются программным образом максимально точно, до уровня потактовой совместимости где это возможно. Среда MALT_SDK основана на программном обеспечении GNU, дополнена системными библиотеками, специфичными для процессоров MALT.

 

В MALT_SDK реализована поддержка компилятора GNU С/С++, что позволяет достаточно легко переносить существующие С/С++ программы на архитектуру MALT. Компилятор в MALT_SDK поддерживается со необходимыми средствами сопровождения: компоновщиком, отладчиком, системой сборки make, утилитами из набора binutils (objdump, ar, as, nm и др.). Портирована и готова к использованию совместно с GNU C/C++ библиотека newlib, содержащая стандартные C/C++ функции. Также предоставляется аппаратно-специфичная системная библиотека Libmalt, которая обеспечивает возможность использования специальных возможностей системы MALT в том числе коммуникации между вычислительными ядрами, работу с "умной" памятью.

 

MALT_SDK может быть установлен на любом персональном компьютере с архитектурой x86_64, оперативной памятью не менее 2 GB (в сумме с объемом swap-пространства должно быть не менее 4 GB виртуальной памяти) и количеством свободного дискового пространства не менее 15 GB, работающим под управлением ОС семейства Linux или других Unix-like систем (успешно протестированы: Debian 9, Debian 9 32-бит, Ubuntu 16.04/18.04, Centos 6/7 и FreeBSD 11/12). MALT_SDK, полная документация на MALT_SDK, а также прототипы процессоров MALT на ПЛИС предоставляется разработчикам с которыми заключены контракты на выполнение совместных работ.

 

Пользовательская документация

 

Вся необходимая документация по MALT_SDK собрана на отдельной странице для удобства пользования.

 

WEB_SDK

 

Если же вы хотите просто убедиться, что MALT_SDK существует, что программы можно компилировать и запускать на сотнях ядер одновременно, хотите "прогнать" какой-нибудь Dhrystone или Coremark на MALT и посмотреть на "попугаи на мегагерц", написать свою программу для одного из процессоров MALT и понять лично, что означает "легко переносить существующие С/С++ программы на архитектуру MALT", при этом вы не хотите разворачивать MALT_SDK на своем компьютере и читать несколько сотен страниц мануала, то для вас есть WEB_SDK. Все уже настроено, предложен набор готовых программ и конфигураций процессора MALT: открывай, запускай, смотри лог, модифицируй код, запускай заново, смотри что получилось!

 

WEB_SDK - это онлайн-версия MALT_SDK, которая позволяет исполнять программы для процессоров MALT без установки MALT_SDK на ваш компьютер. WEB_SDK имеет двухоконный режим с возможностями лаконичного IDE для просмотра, редактирования и запуска заранее подготовленных нами примеров программ и разработки ваших собственных программ с последующим их запуском. WEB_SDK предлагает на выбор целый ряд интересных конфигураций MALT, в том числе позволяет эмулировать конфигурации MALT не существующие ни в кремнии, ни в виде прототипов на ПЛИС.

 

Поехали!

 

Перейдя на страницу с WEB_SDK, скриншот которой приведен ниже, вы увидите пример Custom (C99) - простейшую заготовку на языке C для разработки собственных программ. Однако к разработке программ мы вернемся позже. Пока же давайте что-нибудь запустим!

 

Окно приветствия WEB_SDK.

Рисунок 1. Окно приветствия WEB_SDK.

 

Начнем с простейшей программы на языке C «Hello, world!», кто ж ее не знает :) Но и тут ничего писать не будем, загрузка этого классического кода осуществляется путем смены примера Custom (C99) на Hello World. После этого в левом окне появится исходный код программы, а в правом окне - описание примера (см. Рисунок 2).

Пример "Hello World!" c описанием

Рисунок 2.  Пример "Hello World!" c описанием

 

Подробно ознакомившись с исходным текстом примера и его описанием, можно осуществить запуск, нажав на кнопку [RUN] в левом верхнем углу рабочего фрейма страницы. После этого правое окно перейдет в режим терминального вывода и отобразит результат выполнения программы (см. Рисунок 3). Вернуться к описанию примера можно нажав на кнопку [Description] в середине верхней части экрана.

 

Выполнение примера "Hello World!

Рисунок 3. Выполнение примера "Hello World!



Предлагаем вам немного поэкспериментировать и изменить пример. Например, написав программу, которая бесконечно выводит ноль (см. Листинг 1).

 

Листинг 1.

#include <stdio.h>

int main(void)
{
  int i = 0;
    while (1){
      printf("%x\n", i);
    }
    return 0;
}


Программа работает бесконечно, и это не с проста, на ее примере мы изучим кнопку [STOP], принудительно завершающую исполнение текущей программы. Окно терминального вывода [Log] хранит информацию о всех запусках, произведенных ранее. Если эта информация избыточна и мешает, можно произвести очистку лога, нажав на кнопку [Clear log].


В зависимости от ваших задач можно перед запуском выбрать одну из подготовленных конфигураций процессора MALT (выбрать количество вычислительных ядер, наличие сопроцессора и др. см. Процессоры MALT. В качестве стандартной конфигурации используется система с одним вычислительным ядром без сопроцессора MALT-D.TINY-EMU в режиме эмуляции. Описание выбранной конфигурации отображается в правом окне сверху, при выборе конфигурации или при нажатии на кнопку [Configuration] (см. Рисунок 4).


Описание выбранной конфигурации системы MALT

Рисунок 4.  Описание выбранной конфигурации системы MALT

 
WEB_SDK позволяет не только запускать имеющиеся примеры, но и загружать свои. Поддерживается открытие [OPEN] программ, состоящих из нескольких файлов (не более 20-ти), которые размещаются во вкладках. Вкладки можно создавать и удалять. Ограничение - 20 вкладок. Каждый загружаемый файл не должен превышать 100кб. Имена загружаемых файлов и вкладок должны быть на латинице, поддерживаются регистр, цифры и следующие спец символы: "_", "-", "." и "+". Распознаются форматы С, С++ и OpenCL. В качестве примера загрузим исходный код задачи Ханойской башни (см. hanoi.c), состоящий из одного файла (см. Рис. 5). Любой файл из примера, загруженный или разработанный самостоятельно, можно сохранить на свой локальный компьютер, нажав на кнопку [SAVE].

 

Загрузка собственного примера, задача Ханойской башни

Рисунок 5. Загрузка собственного примера, задача Ханойской башни

 

Консольный вывод


Сообщения, выводимые в окно терминального вывода, которые могут встретиться в процессе изучения WEB_SDK:

  • Начало запуска программы сопровождается сообщением:

    SCRIPT SENT TO EXECUTION:
     
  • В случае успешного выполнения любой программы в консоль будет выведена информация вида:

    Boot v1.5 MALT 1.9.0A MALTemu
    [...]
    ### Exiting (14079 cycles, 5925506 cycles/sec, min_sp: 0x40001dfc @0x101)
     
  • Стандартная обработка ошибок:

    Tue Jul 30 14:31:28 MSK 2019
    main.c: In function 'main':
    main.c:6:5: error: expected declaration or statement at end of input
         return 0;
         ^~~~~~
    make: *** [main.o] Error 1
     
  • Досрочное завершение программы, по кнопке [STOP]:

    SCRIPT HAS BEEN STOPPED!
     
  • Если программа выполняется более 100 секунд, то она завершается досрочно:

    MALTemu: got signal [Terminated]
    ### 
    terminate called after throwing an instance of 'exit_exception'
    
    MALTemu: got signal [Aborted]
    ### 
    terminate called recursively
    /opt/MALT/v1.8/src/sw/build/targets.mk:122: recipe for target 'emu' failed
    make: *** [emu] Aborted
     
  • Запуск примеров, ориентированных на определенную конфигурацию MALT, сопровождается сообщениями вида:

    ### .cl files are allowed only for MALT-C!


Руководство программиста

Не смотря на поддержку компилятора GNU, С/С++ система имеет свои особенности. Поэтому мы предлагаем вам воспользоваться Руководством программиста. Руководство программиста позволит не только ознакомиться с возможностями и особенностями системы, но и предложит варианты и решения по написанию более эффективных программ, тестов и примеров.

 

Контактная информация


Если при знакомстве с WEB_SDK у вас возникли вопросы, предложения или проблемы, не освещенные ранее, то cвяжитесь с нами!