Pull to refresh

StreamIt — новый язык для параллельного программирования

Reading time1 min
Views1.2K
Специалисты из Массачусетского технологического института разработали новый язык параллельного программирования StreamIt. Язык в первую очередь ориентирован на программирование потоковых приложений, таких как потоковое видео и аудио, системы мобильной связи, шифрование и дешифрование потоков информации в реальном времени. Подробная информация — на сайте проекта StreamIt.

Разработка языка продолжается уже несколько лет. В настоящее время с сайта можно скачать компилятор для версии StreamIt 2.1. Также можно скачать и установить Exlipse Development Plugin для ведения разработки в среде Eclipse.
Идеология разработки на StreamIt примерно следующая. Программист конструирует граф потока, состоящий из блоков с одним входом и выходом, описывает функции блоков-атомов и структуру составных блоков. Компилятор генерирует код для каждого блока и оптимизирует граф потока под целевую архитектуру вычислительной системы.
Алгоритм работы компилятора основан на концепции потока данных. Данные проходят через конвейер, состоящий из функций. Компилятор определяет, какие функции независимы друг от друга, и размещает их выполнение на разных процессорах.
В текущей реализации на выходе компилятор генерирует Java-код.
По синтаксису язык напоминает C и Java. Вот пример с фрагментом кода:

float->float filter LowPassFilter (int N, float freq) {
float[N] weights;
init {
weights = calcWeights(N, freq);
}
work peek N pop 1 push 1 {
float result = 0;
for (int i=0; i<weights.length; i++) {
result += weights[i] * peek(i);
}
push(result);
pop();
}
}
Tags:
Hubs:
+4
Comments5

Articles

Change theme settings