Новая технология программирования с применением процедур с повторным входом. Разработанa alfa-версия транслятора C++, реализующего технологию Продукт Традиционное и параллельное программирование для систем с общей памятью (многопроцессорных и/или многоядерных компьютеров) Область применения Предлагается новая конструкция процедура с повторным входом. Используется несколько нестандартный стиль записи ряда обычных и стадийных алгоритмов, сводимых к порождению серии схожих подзадач с планированием последовательности их решения в соответствии со стратегиями постановки в очередь, стек или дек. Вводится разметка для маркировки потенциально параллельных фрагментов. Концепция
Технология упрощает и делает более логичной запись некоторых алгоритмов, обычно использующих хорошо известные типы данных «стек» и «очередь», в программном коде. Отдельные фрагменты программы сокращаются в 1,5-2 раза. Повышение эффективности программирования void _Out(TreeNode * Cur) { list Queue = list (); int LevelNodes = 1; int NextLevelNodes = 0; Queue.push_back(Cur); while (!Queue.empty()) { Cur = Queue.front(); Queue.pop_front(); cout Data()Left); NextLevelNodes++; } if (Cur->Right) { Queue.push_back(Cur->Right); NextLevelNodes++; } if (--LevelNodes==0) { cout
Алгоритмы записываются более компактно и естественно по сравнению с OpenMP 2.0. На поверхность «выносится» скрытый параллелизм алгоритмов. Порождается меньшее количество потоков исполнения при том же количестве конструкций, что и при использовании OpenMP 3.0 Упрощение конструкций параллельного программирования int NLOCK = 0; #pragma omp parallel num_threads(2) private(i) shared(NLOCK) switch (omp_get_thread_num()) { case 0: for (i=0; i
Ускорение расчета на четырех ядрах (2*Opteron 270, 2 ГГц) Фото кристалла многоядерного процессора: журнал « MOBI », 3/2009 Число ядер Повышение эффективности кодирования и распараллеливания ряда алгоритмов: Сокращение времени на их программирование. Минимизация количества и упрощение конструкций, необходимых для распараллеливания расчета, в сравнении с OpenMP. Уменьшение количества порождаемых параллельных потоков. Устранение некоторых потенциальных логических ошибок, связанных с избыточностью кода Эффект от внедрения
Фирмы, специализирующиеся на разработке программного обеспечения; Независимые разработчики программного обеспечения; Научные центры, ориентированные на работу с многопроцессорными системами; Учебные заведения. Основные сегменты рынка Продукт не имеет прямых аналогов. Косвенные аналоги, реализующие встроенные средства распараллеливания: T-технологии; OpenMP (компиляторы GNU, Microsoft) ; DVM, HPC, MC#. Конкуренция Самостоятельный продукт (препроцессор + отладчик); В составе уже существующих профессиональных компиляторов C++. Возможности реализации технологии
1. Маркетинговые риски. 2. Кадровые риски. Необходима высокая квалификация разработчиков. 3. Риск недостаточного спроса. Технология предполагает несколько нестандартный стиль программирования, что может встретить первоначальное недопонимание преимуществ подхода у программистов обычной квалификации. Риски Разработана и испытана alfa-версия транслятора. Предполагаются творческая проработка и совершенствование предложенных технологий (возможно привлечение партнера для завершения НИОКР). Необходимы инвестиции (300 тыс. руб) для разработки полноценных и качественных коммерческих версий транслятора и отладчика. Вывод системы на рынок Маркетинговые исследования Рекламные кампании Участие в выставках Бесплатные демонстрационные версии Состояние проекта и перспективы