Как считать инструкции по обработке TBB? - PullRequest
0 голосов
/ 09 мая 2018

Intel TBB предлагает пользователям отрегулировать размер зерна примерно от 10 000 до 100 000 инструкций обработки для наиболее эффективного параллелизма. Тем не менее, нет никаких указаний относительно того, что считается инструкцией обработки. Считаю ли я суммы, уравнивания, умножения, сравнения и т. Д .; и, если я сделаю, каков вес этих операций? Есть ли какой-либо инструмент профилирования, который считает инструкции обработки так, как это делает TBB?

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

Кевин. Как говорит Алекс, руководство является приблизительным, и существуют другие проблемы, связанные с этим. Например, если часть вычислений получает доступ к данным под блокировкой, это, вероятно, будет доминировать в вашем времени. Если в работе по вычислению есть дисбалансы для выполнения задачи, это сделает настройку размера блока гораздо менее важной.

Я не нашел документацию TBB, в которой говорится об определении размера раздела, но здесь есть набор слайдов здесь , в котором говорится о «графике ванны» (слайд 7.). точная рабочая нагрузка на задачу не требуется; будет диапазон, который будет хорошо работать.

Планировщик TBB также попытается сбалансировать работу всех процессоров, перехватывая разделы задач у других процессоров, если это возможно, поэтому одна несбалансированная рабочая нагрузка не полностью выведет вас из строя.

0 голосов
/ 10 мая 2018

Очень грубая рекомендация дать представление о том, каково разумное время выполнения одной части вычислительной работы. Идея состоит в том, что вычислительная задача не должна быть слишком маленькой и нет никакой выгоды от слишком больших задач. Обычно вам не нужно беспокоиться об этом правиле, если вы используете параллельный алгоритм с разделителем по умолчанию (auto_partitioner).

В некоторых случаях (например, когда вам нужно использовать simple_partitioner) вы можете измерить последовательное время алгоритма и умножить его на частоту вашего процессора. Это значение может дать вам представление о количестве «инструкций» / «тактов» всей проблемы. Таким образом, вы можете разделить проблему на части рекомендуемого размера.

Что касается инструментов, я предполагаю, что есть много инструментов для профилирования, которые могут рассчитывать время выполнения (или инструкции ЦП) вашего приложения на конкретной платформе. (См. Список инструментов анализа производительности ). Кроме того, вы можете попробовать Intel VTune Amplifier, который может оценить накладные расходы, представленные Intel TBB (инструмент имеет специальную поддержку для приложений на основе TBB), чтобы понять, эффективно ли приложение использует TBB.

...