omp flush и архитектура cc-NUMA - PullRequest
4 голосов
/ 21 марта 2012

есть кое-что, что мне не хватает в архитектуре cc-NUMA и необходимости сбрасывать переменные.Все мы знаем, что если два потока изменяют одну и ту же строку кэша, то возникает условие «ложного совместного использования», заставляющее строки кэша перезагружаться снова.Так зачем нам сбрасывать переменные, чтобы поток обменивался информацией?Предположим, что в последовательном регионе вы объявляете:

int flag=0;

И затем в параллельном регионе поток 0 назначает общую переменную:

 flag=1;

будет поток 1:

while (!flag){}

цикл когда-либо завершается без сброса?Если нет, то почему, если мы находимся в архитектуре cc-NUMA?

1 Ответ

1 голос
/ 25 марта 2012

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

Поэтому я считаю, что сброс все еще необходим независимо от аппаратной поддержки когерентности кэша.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...