データ並列とタスク並列パターンは混在することができます。表示と更新の例では、更新操作は並列化できても表示操作は並列化できません。更新操作の複数のタスクと表示操作を並列に実行することはできます。次の C++ コードについて考えてみます。
initialize(data);
while (!done) {
old_data = data;
ANNOTATE_SITE_BEGIN(sitename);
ANNOTATE_TASK_BEGIN(task_display);
display_on_screen(old_data);
ANNOTATE_TASK_END();
update(data);
ANNOTATE_SITE_END();
}
display_on_screen(data)
{
. . .
}
update(data) {
for (each block of data) {
ANNOTATE_TASK_BEGIN(task_update);
データのブロックを更新;
ANNOTATE_TASK_END();
}
}