У меня есть большой набор объектов задачи. Большинство задач имеют задачи родителей - которые необходимо выполнить раньше. Большинство задач имеют задачи для детей - которые могут быть выполнены только после. Дело в том, что такой набор объектов задач, созданных после его создания, часто выполняется и должен использовать все доступные ЦП, выполняя задачи параллельно. Проблема, с которой я сталкиваюсь, заключается в том, что объем работы, связанной с объектом задачи, чаще всего не слишком мал - код планирования работает только с самим собой - реальная работа, которая должна быть выполнена, не отображается в результатах профилирования (Гринь). Объект задачи действительно обеспечивает функцию стоимости! Я думал о создании другого набора объектов задачи, с каждым новым объектом задачи, содержащим коллекцию старых объектов задачи. Родители и дети, на которые ссылаются эти новые объекты задачи, также должны быть новыми объектами задачи. Это уменьшило бы связь, требуемую уменьшением параллелизма.Как уменьшить количество задач путем объединения задач?
Очевидно, есть лучше и хуже способы объединения старых задач на новые задачи ...
Может кто-нибудь придумать алгоритм делает это? Я изобретаю колесо?
В целом, кажется, что ваши «задачи» слишком малы (или слишком сложное планирование). Выполнение чего-то параллельно является полезным только в том случае, если время, затрачиваемое на это, значительно превышает задачу планирования. –
Кажется, что нижеприведенная статья соответствует описанию проблемы: http://masters.donntu.edu.ua/2006/fvti/krasnokutskaya/library/generals.pdf –
Глава вторая (Агломерация) [Шаблоны проектирования TBB] (http://software.intel.com/sites/default/files/m/4/8/1/e/e/33963-Design_Patterns.pdf) в руководстве рассматривается один подход (см. рисунок 2 в нем). –