Intel® Advisor User Guide

ID 766448
Date 3/31/2023
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

Mix and Match Tasks

You can combine the data parallel and task parallel patterns. Continuing with the display/update example, suppose that you can parallelize the update operation, but not the display operation. Then you could execute the display operation in parallel with multiple tasks from the update operation. Consider this C/C++ code:

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);
        update the block of data;
        ANNOTATE_TASK_END();
    }
}