Разработка и логическая отладка программы по шаблону
TempletSDK содержит библиотеку времени исполнения gprt, которая реализует последовательное исполнение, что значительно упрощает отладку. Задачи извлекаются из очереди и завершаются в порядке их добавления в очередь, что является единственным отличием от параллельной версии и не является проблемой при правильной структуре программы. Реализация метода run приведена ниже:
void TBag::run() { task=createTask(); while(if_job()){ //проверка наличия задач для обработки get(task); //вызов метода для получения данных задачи task->cur=0;task->send_task(); //заполнение буфера данными задачи task->cur=0;task->recv_task(); //чтение данных задачи из буфера proc(task); //вызов обработчика задачи task->cur=0;task->send_result(); //заполнение буфера данными результата обработки task->cur=0;task->recv_result(); //чтение результатов обработки из буфера put(task); //вызов обработчика результатов вычислений } delete task; }
В отладочной версии библиотеки времени исполнения симулируется передача данных между вычислительными узлами, несмотря на то, что приложение работает в общей памяти.
Если после начала разработки приложения, уже был выбран отличная от gprt библиотека времени исполнения, то необходимо переключится на неё. Для этого необходимо заменить параметр rtl и путь к заголовочному файлу в файле описания структуры приложения. После чего файл gpTBag.txt должен выглядить подобным образом:
- gpTBag.txt
<module id="TB" templet="" rem=""> <include file="../rtl/gprt.h" module=""/> <param id="rtl" value="GPRT"/> <assemble id="TaskBag" templet="TBAG" rem="Task bag template"> </assemble> </module>
Генерируемая часть исходного кода приложения обновляется только при сборке проекта.