Исследовательский проект SPF@home (рабочее название) в области поиска рациональных
(стремящихся к оптимальным вследствие NP-полноты́ задачи)
стратегий оптимизации выполнения параллельных программ

(альтернативное название - иструментальная программная система = ПРОГРАММНЫЙ СТЕНД
для разработки методов оптимального планирования подзадач для выполнения на параллельных вычислителях

(дополнительно см. тематически свя́занные стихотворные произведения,
исследование динамики процесса обработки данных в DATA-FLOW вычислителях,
период "великого кластерострое́ния" и
эксперименты с CUDA-технологией)

  1. Внимание! Мы начинаем АНАЛИЗИРОВАТЬ АЛГОРИТМЫ (точнее, изучать их СТРУКТУРУ, СВОЙСТВА и ОСОБЕННОСТИ РЕАЛИЗАЦИИ)... Очень рекомедуется посещение сайта AlgoWiki.ru... очень рекомендуется сначала (а можно как "в процессе", так и "опосля́") поработать (или хотя бы ознакомиться) c ресурсом AlgoWiki - открытой энциклопедией по свойствам алгоритмов и особенностям их реализации на различных программно-аппаратных платформах (от мобильных платформ до экзафлопсных суперкомпьютерных систем) с возможностью коллективной работы всего мирового вычислительного сообщества.

  2. Из двух очевидных путей повышения производительности вычислительных систем в настоящее время эксплуатируется метод параллелизации обработки данных; способ повышения тактовой частоты ограничивается фундаментальными законами (см. закон Рэлея, 1871, постулирующий пропорциональность тепловыделения при упругом рассеивании четвёртой степени частоты).
       Однако параллелизация (фактически одновременное - параллельное - выполнение различных частей одной программы на независимо работающих вычислительных блоках) требует от алгоритмистов и программистов дополнительных усилий по выявле́нию в алгоритме участков, мо́гущих быть выполненными параллельно; основное требование к таким блокам (зёрнам или гра́нулам) параллелизма состоит в независимости (ортогональности) их по данным.
       Анализ алгоритмов (обычно именуемый исследованием тонкой информационной структуры алгоритма) по такому критерию непрост, поэтому говорят о скры́том (не фиксируемом при поверхностном рассмотре́нии) параллелизме; мощным инструментом при таком анализе является представле́ние программ гра́фовыми моделями. В России разработкой методов анализа структуры алгоритмов на основе гра́фовых моделей занимались В.В.Воеводин и Вл.В.Воеводин (см., напр., их книгу ПАРАЛЛЕЛЬНЫЕ ВЫЧИСЛЕНИЯ). Место данного исследования в процессе создания и выполнения параллельных программ на реальных МВС
       Ситуация ещё усложняется необходимостью рационального использования ресурсов конкретной многопроцессорной вычислительной системы (МВС). Эти ресурсы (напр., число параллельно работающих вычислителей) всегда ограничены, поэтому задача планирования использования ресурсов очень важна. Планирование в данном контексте - определение последовательности выполнения операторов программы на каждом (из параллельно работающих) вычислителе. Формально это оптимизационная задача, причём конкретных критериев оптимизации может быть много (в зависимости от поставленной исследователем цели).

       На рис. справа показано место применения результатов данного исследования в общей последовательности создания и выполнения параллельных программ (выделено красной рамкой).

  3. Я́русно-Параллельная Форма (ЯПФ, SPF – Stacked Parallel Form) информационного графа алгоритма (ИГА) * – форма представле́ния графа, при которой операторы, мо́гущиеся выполняться независимо друг от друга (фактически параллельно) располагаются на одном уровне (я́русе). Представле́ние графа в ЯПФ - одно из наиболее мощных средств выявле́ния скрытого параллелизма в алгоритме. Формально ЯПФ строится на основе ИГА с помощью несложного алгоритма трудоёмкостью порядка O(N2).
       Высота ЯПФ (вычисля́емая через число ярусов) определяет общее время выполнения алгоритма, ширина ЯПФ – число задействованных отдельных (параллельно работающих) вычислителей (напр., ядер процессора) данной МВС. Построенная таким образом ЯПФ обычно именуется канонической.

       Алгоритм построения ЯПФ на основе ИГА довольно прост:

    I. Найти все операторы в ИГА, у которых нет входя́щих дуг и поместить их на нулевой ярус (это исходные данные для работы программы)
    II. Выбрать из оставшихся операторов те, которые зависят по дугам (операндам) только от операторов, находящемся на ярусе выше и поместить их на следующий ярус
    III. Повторять процедуру II до тех пор, пока не останутся только операторы, не имеющие выходя́щих дуг - это операторы последнего яруса (операторы без выходя́щих дуг могут располагаться и на ярусах выше последнего)


    Информационный граф алгоритма нахождения корней полного квадратного уравнения * Информационный граф алгоритма (ИГА, вычислительная модель “опера́торы - опера́нды”; на рис. слева приведён ИГА процедуры вычисления корней полного квадратного уравнения**, при этом зелёным цветом отмечены входные и выходные данные) суть наиболее простое представле́ние конкретного алгоритма в гра́фовом виде. ИГА описывает исключительно информационные зависимости алгоритма (верши́ны графа соответствуют отдельным операциям - преобразова́телям информации (арифметико-логические действия и т.п.); нали́чие дуги между вершинами i,j говорит о необходимости при выполнении операции j существова́ния аргументов (опера́ндов), выработанных операцией i; в случае независимости выполнения операций i и j дуга между вершинами отсутствует). Свойства ИГА: ацикли́чность, напра́вленность, детерминированность. Конечно, в данном случае термин "операторы" достаточно условен, т.к. под "операторами" можно понимать отдельные последовательности вычислений любого (в принципе) размера.
       Недостатком ИГА является независимость его от исходных данных. Существуют и иные формы гра́фового представления алгоритма - напр., с вершинами - распознава́телями (это условные операторы, переключатели и др.), которые определяют последовательность сраба́тывания преобразователей при работе программы. Пример такого графа - сеть Петри, однако анализ алгоритмов с помощью подобных графов фактически эквивалентен выполнению собственно программы, что для больших программ практически нереализуемо.

    ** Реше́ние впервые предложено индийским астрономом и математиком Брахмагупта (годы жизни около 598÷670 г.г. н.э.).

    ЯПФ информационного графа алгоритма нахождения корней полного квадратного уравнения (ось времени - сверху вниз)

  4. Реальные ЯПФ информационных графов обладают большой неравномерностью распределе́ния числа операторов по ярусам (выпуклый пример - применяемый для ассоциативных операций граф сдва́ивания), при этом использование ресурсов МВС очень нерационально - максимум Граф процедуры сдваивания (применяется для ассоциативных операций) эффективности использования ресурсов достигается при равномерном (или близком к равномерному) распределении операторов по ярусам.
       Однако в подавлящем числе ЯПФ (есть и обратные примеры - напр., ранее упомянутый метод сдва́ивания) имеется возможность перемещения вершин графа (операторов) между ярусами (величина этого перемещения ограничивается информационными зависимостями операторов в графе; для показанного на рис. справа ЯПФ информационного графа алгоритма вышеуказанной процедуры нахожде́ния корней полного кваратного уравнения оператор 14 может быть перемещён "вниз" на любой ярус со 2 по 5-й, оператор 2 - на любой ярус с 2 по 4-й, оператор 1 - на ярус 2; возможный диапазон расположения операторов отмечен на рис. справа штриховой линией). Кстати, "разгрузи́в" ярус 1 от операторов 14 и 2, получаем возможность выполнить программу всего на 2-х (вместо 4-х в исходном варианте) параллельно работающих вычислителях за то же самое время!.. Метафора возможности сжатия (балансировки) ЯПФ информационного графа алгоритма
       Эта особенность ЯПФ даёт возможность оптимизации ЯПФ (в смысле, напр., достиже́ния наибольшей равномерности распределе́ния операторов по ярусам – при этом автоматически достигается максимум использования ресурсов МВС). Для ИГА большого размера трудоёмкость такой оптимизации очень велика́ (задача перестано́вок с учётом влияния изменения конфигурации ЯПФ после каждой перестано́вки, есть информация о принадлежности этой проблемы к NP-полному классу задач). Достиже́ние цели (напр., равномерности распределе́ния операторов по ярусам ЯПФ) возможно с помощью различных стратегий переста́новки операторов по ярусам (стратегии приходится разрабатывать на основе эвристи́ческого подхода); выбор оптимальной (рациональной) стратегии для ЯПФ различной сложности – интересная научно-практическая задача, имеющая прямое отношение к проблеме эффективного распараллеливания алгоритмов.
       Преобразовав (путём эквивалентных преобразований ЯПФ ≡ целенаправленных перестано́вок операторов с яруса на ярус) ЯПФ к нужному виду, получаем расписание выполнения операторов данного алгорима как зафиксированную в ЯПФ последовательность их исполнения.

    Итак, имеем две (последовательно выполняемые) сверхзадачи:

    a) Выявить в заданном алгоритме собственно наличие параллелизма



    Для выполнения этого как нельзя лучше подходит метод представле́ния ИГА в ярусно-параллельной форме (ЯПФ)

    б) Спланировать параллельное выполнение алгоритма с учётом реа́лий (ограничений) конкретной многопроцессорной вычислительной системы (МВС)


    Ограничения МВС - число параллельно работающих вычислителей, объёмы памяти и др., выполнение программы с учётом этого достигается эквивалентными (не изменяющими информационных зависимостей в графе) преобразованиями ИГА в ЯПФ (а это как раз то, на что наце́лен проект SPF@home... пока с ограничениями - из всех реа́лий МВС учитывается только число параллельных вычислителей - но в перспективе есть планы учёта объёма памяти, времени на пересы́лку данных etc).

  5. Основные параметры ЯПФ графа:

    • В - высота ЯПФ графа, определяется количеством ярусов
    • Hi – ширина i-того яруса (количество операторов на нём)
    • H – ширина ЯПФ графа, определяется максимумом операторов по всем ярусам графа; H = max(Hi)
    •  – средняя ширина ЯПФ; H̅ = ∑Hi / B
    • Ki – степень (коэффициент) заполне́ния i-того яруса ЯПФ графа; Ki = Hi / H
    • Mmin – минимальное количество (параллельно работающих) вычислителей, необходимое для реализации вычислений согласно данного графа; Mmin = max(Hi)
    • Kirregular - степень (коэффициент) неравномерности распределения операторов по ярусам ЯПФ графа; Kirregular = max(Hi) / min(Hi)
    • σ = √(∑(Hi - H̅)2/N) - среднеквадратичное отклонение ширин ярусов, N - число ярусов
    • Применяются также - коэффициент разбро́са операций в графе, cвя́зность алгоритма (количество промежуточных результатов, которое необходимо хранить в процессе реализации алгоритма) и др.

    Основные постано́вки задачи оптимизации (возможны комбинации):

    I) Максимальная загру́зка неизвестного заранее числа параллельно работающих вычислительных узлов имеющейся МВС при минимально возможном времени выполнения задачи: Kirregular → 1,0 при B=B0=const (фактически B=B0, где B0 - исходная высота ЯПФ; в системе SPF@home первоначально ЯПФ строится так, что B0 является длиной критического пути).
    Схема к постановке 2 задачи оптимизации II) Полное использование ресурсов (вычислительных узлов) имеющейся МВС при возможном увеличении времени выполнения программы: max(Hi) <= M0 при B>=B0 (здесь M0 - число доступных параллельно работающих вычислителей в заданной МВС); однако желательно B-B0→min (минимизация времени выполнения).
        Полезно представить этот процесс как подготовку состоящей из не более чем за́данного числа M0 заве́домо независимых (т.е. ортогональных по данным) команд (инструкций процессора). VLIW (Very Long Instruction Word) для вычислительной системы соответствующей архитектуры; это соответствует иделоге́ме EPIC (Explicitly Parallel Instruction Computing - микропроцессорная архитектура с явным параллелизмом команд); см. иллюстрацию справа.


    Эффект применения нескольких стратегий преобразования ЯПФ для распространённых алгоритмов    Программный инструментарий (фактически API пользователя) предлага́емой системы (см. более подробное описание ниже) позволяет реализовывать любой из перечисленных критериев оптимизации (а также их комбинации), т.к. выбор критерия осуществляет собственно пользователь (на основе задач, им решаемых).
       Эксперименты показывают, что при B=B0=const добиться близкого к 1,0 значения Kirregular практически невозможно (потенциал балансировки ограничивается информационными связями в графе); возможно лишь более или менее значительной снижение величины Kirregular. После исчерпания ресурса первой постановки задачи оптимизации обычно приходится выполнять вторую (связанную с увеличение числа ярусов ЯПФ и возрастанием времени выполнения параллельной программы); здесь возможно достичь любых результатов (включая режим чисто последовательного выполнения), вопрос лишь в трудоёмкости преобразований (измеряемой, напр., в числе перестановок операторов с яруса на ярус ЯПФ).
       На рис слева показаны результаты применения нескольких (условно #01 и #02) стратегий преобразования ЯПФ несложных распространённых алгоритмов (в верхней части в форме ленточных диаграмм распределения числа операторов по ярусам).
       Для показанных на рис. слева подсчитаны коэффициенты CV=σ(W)/W̅ (где σ(W) - стандартное отклонение ширин W, - среднее значение ширин) вариации ширин ЯПФ; видно, что применённые стратегии преобразования ЯПФ снижают величину CV в 2-5 раз.

  6. Итак, цель проекта – определе́ние наиболее эффективной стратегии балансиро́вки ярусно-параллельной формы (ЯПФ) информационного графа алгоритма (ИГА); под балансировкой понимается равномерность распределения операторов по ярусам ЯПФ. Задача имеет прямое отношение к проблеме эффективного распараллеливания алгоритмов и, в частности, вопросу наиболее эффективного использования ресурсов многопроцессорных вычислительных систем (МВС). Как ранее сказано, такие стратегии могут быть разработаны только с применением методов эвристики. К родственным по тематике с данным проектам относятся V-Ray и ПАРУС. Не будем забывать о суперсистемах METIS и ParMETIS, функционал которых в данном случае явно избыточен... Схема взаимодействия удалённых пользователей с задачами в системе SPF@home
       Т.к. поста́вленная задача является вычислительно-трудоёмкой (для ИГА большого размера), решать её предлагается посредством технологии распределённых вычислений VCSC (Virtual Campus Supercomputer Center, Виртуальный Суперкомпьютерный Центр уровня Университетского Ка́мпуса; см. реализацию VCSC см. на примере Университета Вестминстера). VSCS базируется на принципе добровольных распределённых вычислений (реализации на базе известной межплатформенной системы для некоммерческих распределённых вычислений университета Беркли BOINC - Berkeley Open Infrastructure for Network Computing). Параллелизм в системе SPF@home реализован на уровне решения конкретной задачи одновременно несколькими волонтёрами-исследователями, предлагающими свои собственные методы достижения заданной цели с фиксацией достигнутых результатов.

    Система BOINC относится к типу централизованных однора́нговых сетей и включает две основные части:

    • сервер BOINC - набор PHP-сценариев для организации и управления проектом: регистрация участников, распределе́ние заданий, получе́ния результатов
    • клиент BOINC - пользовательское приложение, позволяющее участвовать в одном или нескольких проектах; часто представляет собой храни́тель экрана ("screen saver"), который производит вычисления в моменты просто́я компьютера.

    Наиболее популярные проекты, реализованные на основе BOINC:

    • SETI@home (Search for Extra Terrestrial Intelligence) - анализ радиосигналов с радиотелескопа Ареси́бо (Пуэрто-Рико) и Allen Telescope Array (ATA, Антенная решётка Аллена, Калифорния) для поиска информационных признаков существования инопланетных цивилизаций, в настоящий момент в проекте принимают участие более трёх миллионов пользователей на бесплатной основе.

      Ph.D. Jill C.Tarter (SETI Institute) ...Что может случиться, если (в самом деле) удастся получить (и расшифровать!) сигнал от внеземных цивилизаций - см. эпическое произведение "КОНТАКТ" (роман известного учёного-астронома Карла Сагана (Carl Edward Sagan), имеется неудачная экранизация Роберта Земекиса, 1997).    Автор прямо говорит, что прототи́пом главной героини Элинор Эрроуэй (Eleanor Arroway) этого произведения является Ph.D. Джил Тартер (Jill Cornell Tarter) - директор проекта по поискам внеземных цивилизаций (SETI Institute).
         Имеется возможность не только получить больше информации о ней, но и увидеть выступле́ние (апрель 2011, Лос-Анжелес) этой великой женщины XX-XXI веков! Желаете лично пообщаться с ней? Проблемы минимальны - please, mailing JTARTER@SETI.ORG ...

    • Einstein@Home - проверка гипотезы Альберта Эйнштейна о гравитационных волнах с помощью анализа гравитационных полей пульса́ров или нейтронных звёзд
    • Climate Prediction - построе́ние модели климата Земли для предсказа́ния его изменений на 50 лет вперёд
    • World Community Grid - ряд проектов под организацией IBM
    • Malaria Control Project - контроль распростране́ния малярии в Африке (проект AFRICA@home)
    • Predictor@home - моделирование 3D структуры белка из последовательностей аминокислот
    • LHC@home - расчёты для ускорителя заряженных частиц в CERN (Centre Europeen de Recherche Nucleaire).

    Впрочем, давайте вернёмся к нашим (общим) потенциальным ♈ ♈ ♈ -нам ...

    Рабочее название обсужда́емого проекта суть SPF@home , размеще́ние серверной части планируется на WEB-сервере ВУЗ'а.

    Откуда же "берётся" (преобразуемый в дальнейшем) информационный граф алгоритма (ИГА)?

    1) ИГА может быть постро́ен вручную согласно текстовому описанию алгоритма или же представлению о́наго на псевдоязыке или в виде блок-схемы (реально для вновь рассматриваемых алгоритмов).
    2) ИГА можно получить путём анализа исходного текста программы на традиционном языке программирования (подобные анализаторы существуют, однако зачасту́ю выдают противоречивые результаты).
    3) ИГА - результат работы программы-графогенератора (преимущество - можно задавать априори заданные параметры ИГА, даю́щие максимальное его приближение к реальным; в данной системе такой графогенератор, конечно, предусмо́трен). Однако такие ИГА скорее рассматривать следует как примеры те́стовые.
    4) В случае применение данной системы в качестве компоненты распаралеливающего компилятора наличие ИГА априорно (все компиляторы производят анализ исходного текста на информационные зависимости - т.е. фактически строят ИГА).

    Эмблема языка Lua Предполагается размеще́ние таких задач на BOINC-сервере с целью предоставле́ния (добровольной) возможности их решения клиентам (в дальнейшем имену́емыми ИССЛЕДОВАТЕЛЯМИ) по сети InterNet с помощью специального клиентского ПО. При этом фиксируется эффективность предло́женного ИССЛЕДОВАТЕЛЕМ решения (основной параметр – число перестано́вок операторов с яруса на ярус для получения результата). Схема взаимодействия 'клиент-сервер-ИССЛЕДОВАТЕЛЬ' в системе SPF@home
       Клиентское ПО позволяет формировать алгоритм (программу) решения задачи с помощью скрипто́вого языка (использующего вызовы системного API задачи; используется встра́иваемый интерпретатор скриптового языка Lua в версии 5.3), запуска́ть сценарии и отсыла́ть результаты на BOINC-сервер для анализа эффективности предло́женной стратегии). Язык Lua выбран по соображениям широких возможностей программирования, компактности при встра́ивании в основную программу и наличия исходных текстов (возможность модификации).
       Инструментарий системы включает три типа API-вызовов (всего около 30 штук, причём каждый является Lua-"обёрткой" соответствующей С-функции):

    • Информационные (служат для получения информации о ИГА и его ЯПФ; именно на основании этих данных принимается решение о применимости одной из стратегий преобразования ЯПФ графа, реализуемой в дальнейшем на языке Lua).
    • Акцио́нные (служат для эквивалентных, т.е. не меняющих информационные связи в ИГА, преобразований ЯПФ).
    • Вспомогательные (работа с файловой системой, Сетью и т.п.).

       Конечно, в процессе выполнения акцио́нных функций собственно ИГА не изменяется (т.е. программа остаётся той же самой) - меняется лишь представле́ние графа (в данном случае - его ЯПФ-сече́ние).
       Для ознакомления с возможностями языка Lua рекомендуется книга ведущего разработчика этого языка Роберту Иерузалимски "Программирование на языке Lua" (бесплатная выгрузка - англоязычный вариант издания 2013 г., русскоязычный вариант издания 2014 г.); по программированию на Lua см. дополнительно ссылки  01 ,  02 ,  03 ,  04 ,  05 ,  06 ,  07  (UTF-8 обязательно!),  08 ,  09 ,  10  и др. в Сети.
       В чём отли́чие проекта SPF@home от иных проектов на платформе BOINC? Подавля́ющее большинство BOINC-проектов предполагает пассивную роль добровольных клиентов, которые только лишь предоставля́ют свои ресурсы (компьютерное “железо”) для решения не́коей (не очень интересной им) задачи; вся интеллектуальная часть (алгоритм и его компьютерная реализация) разрабатывается отстранённой группой “небожи́телей”- разработчиков проекта. Такой подход можно назвать PASSIVE VOLUNTEER (DISTRIBUTED) COMPUTING.
    Учебник по Lua    В проекте SPF@home также есть идеологи и разработчики, предлагающие некоторую среду́ и инструмента́рий (API данной системы), однако ИССЛЕДОВАТЕЛЯМ предлагается стать активными экспериментаторами и разработчиками стратегии достижения заявленной цели (фактически предоставля́ть для достижения заявленной цели не компьютерное "железо", а свои умы́). Авторы проекта SPF@home фактически надеются на индивидуальный разум (хотя можно работать и коллективом, конечно) добровольцев, подключившихся к проекту SPF@home. Т.о., в отличие от стандартных проектов BOINC'а, данный проект предполагает активное участие квалифицированных добровольцев (поэтому режим “screen saver’a” - как, напр., в проекте SETI@home) здесь принципиально неуме́стен!). Пожалуй, более уместно название ACTIVE VOLUNTEER COMPUTING (возможно, даже REASONABLE V.C. или INTERESTED V.C.).

  7. Какие “плюсы́” и “минусы́” несёт предлага́емый подход?

       Начнём с “минусо́в”… главный из них – сокраще́ние числа добровольных клиентов проекта (“Я, вообще-то, в принци́пе не прочь помочь Науке, но то́кмо ежли сие́ не потре́бует от меня лично мозгово́го напряже́ния..!”). Можно, конечно, утеша́ть себя соображениями, что предлага́емый проект поможет заинтересовать кого-то в научных исследованиях и тем самым привле́чь в науку т.н. “молодые умы”… надежда на это подпи́тывается наличием элементов игры и состяза́тельности в предло́женном проекте!
       Явным “плюсом” является возможность привле́чь креативных пользователей, не стесняющихся использовать свой разум для реше́ния конкретных задач в IT-области… однако априори неизве́стно, кто победит - “плюс” или “минус”..!

    Будучи (врождённым) оптимистом, наде́юсь на Ваше участие в проекте SPF@home !..

    Следует понимать, что сейчас в Мире наблюдается тенденция активного участия пользователей в реализации сложных проектов!..

       Напр., авторы Rosetta@home решили воспользоваться способностями людей видеть наиболее подходящие варианты и употребить их на благо науки. Ещё в 2008 г. они выпустили компьютерную игру Foldit (от английского fold it – сверни́ это), в которой пользователям предлагалось самостоятельно изгибать и поворачивать белковую молекулу, добиваясь получения структуры с минимальной энергией (её просчитывает компьютер). Неоптимальные конфигурации показываются красным цветом, по мере снижения свободной энергии их окраска меняется в сторону успокаивающего зелёного. За получение структур с минимальной энергией пользователи получают баллы, причём геймеры могут сравнивать свои результаты с результатами других людей.
       Foldit – не единственный проект, создатели которого используют интерес людей к играм в научных целях. Например, в 2006 г. стартовал проект Stardust@Home, участники которого ищут космическую пыль на вы́ложенных в Сеть фотографиях различных участков неба. Проект оказался очень успешным, и в 2007 г. был запущен Galaxy Zoo - проект, дающий возможность всем желающим классифицировать различные объекты, сфотографированные телескопами. Участники Moon Zoo ищут на Луне пропущенные учёными кратеры.

  8. В целя́х тестирования программного обеспечения системы SPF@home организо́ван до́ступ к данному ресурсу в режиме локального применения (желающий выгружа́ет клиентскую компоненту и файлы описания ИГА различной сложности) и в дальнейшем работает в дома́шне-комфортных условиях, проверяя эффективность работы своих мозговы́х "маленьких се́рых кле́точек" - как гова́ривал незабве́нный в бы́тность свою Эркю́ль Пуаро́ (Hercule Poirot).
       В версиях SPF@home начиная с осени 2016 г. включена возможность определения гетерогенного поля параллельных вычислителей и задания метрик дуг и вершин графа (с целью, напр., учёта времени выполнения соответствующих операций).
    Свидетельство о регистрации программного продукта Свидетельство о регистрации программного продукта    На данное программное обеспечение получено СВИДЕТЕЛЬСТВО о государственной регистрации программ для ЭВМ (см. документ слева) № 2015617043 (Федеральная служба по интеллектуальной собственности Российской Федерации - Роспатент, дата поступления 13.V.2015 г., зарегистрировано в Реестре программ для ЭВМ 29.VI.2015 г.). Работа удостоена Диплома I-степени (регистрационный номер ФП-16Л № 127775-4554 от 14.10.2016 г., см. документ справа) Международного Конкурса педагогического мастерства по применению Информационно-Коммуникационных Технологий  (ИКТ) в профессиональном образовании "ФОРМУЛА ПРОФИ – 2016" в номинации "ИКТ в обучении информатике, вычислительной технике, информационной безопасности, автоматизации"; Информационные Технологии в Образовании (ИТО, http://fp.ito.edu.ru/).
       Для начала работы вы́грузите архивный файл SPF@home.rar (размер 3,9 МБ, формат Win'32
    и распаку́йте содержимое этого архива в отдельный каталог (напр., SPF@home). Ознакомьтесь с документом SPF@home.pdf (описание проблемы) и документом API_User.pdf (список специальных функций скрипто́вого языка, доступных пользователю плюс примеры использования языка Lua для разработки скриптов). Старту́йте исполняемый файл SPF_CLIENT.EXE, привы́кните к интерфейсу, прочитайте текст всплывающих подсказок для уясне́ния возможностей управле́ния программой. Нажмите F5 для загрузки файла EdgesData.edg описания информационного графа алгоритма (или Ctrl-F5 для загрузки иных edg-файлов описания ИГА), пробуйте загружа́ть различные сценарии (файлы с расширением *.lua) и исполня́ть их (F9). В конце документа API_User.pdf приведено несколько примеров функционирующих (отла́женных) скриптов для эквивалентных преобразований ЯПФ - с ними полезно ознакомиться..!

  9. Внимание! При работе программа SPF_CLIENT.EXE счи́тывает (и запи́сывает!) множество файлов, посему́ за́пуск с CD/DVD некорректен. Данные каждого расчёта сохраняются в подкаталоге Out!Data относительно текущего каталога (например, протокол расчёта содержится в файле с именем PROTOCOL!*.TXT, где '*' означает уникальную строку, включающую имя файла исполняемого скрипта, файла описания ИГА и метку даты/времени).

  10. При возникнове́нии вопросов пиши́те разрабо́тчику на e881e@mail.ru.
  11. Возврат к главной странице сайта Возврат к главной странице