Получу ли я снижение производительности при смешении инструкций SIMD и многопоточности - PullRequest
7 голосов
/ 08 ноября 2011

Мне было интересно сделать проект о распознавании лиц (чтобы использовать набор инструкций SIMD).Но в течение первого семестра текущего года я кое-что узнал о потоках, и мне было интересно, смогу ли я их объединить.

Когда следует избегать сочетания многопоточности и SIMD-инструкций?Когда стоит это делать?

Ответы [ 3 ]

7 голосов
/ 08 ноября 2011

Сохранение регистров x87 / MMX / XMM / YMM может занять довольно много времени и вызвать значительную перегрузку кэша.Как правило, сохранение и восстановление состояния FP выполняется ленивым образом: при переключении контекста ядро ​​запоминает текущий поток как «владельца» состояния FP и устанавливает флаг TS в CR0 и - это вызовет ловушку дляядро всякий раз, когда поток пытается выполнить FP insn.Состояние FP старого потока и состояние FP текущего выполняющегося потока сохраняются и восстанавливаются, соответственно, в это время.

Теперь, если в течение длительных периодов времени (несколько или несколько переключений контекста) нет другогопоток, чем ваш, использует FP insns - ленивая политика не приведет к сохранению / восстановлению состояния FP, и вы не получите снижение производительности.

Поскольку мы, очевидно, говорим о многопроцессорной системе, потоках,Выполнение вашего алгоритма параллельно не будет конфликтовать друг с другом, потому что они должны выполняться на своих собственных CPU / core / HT и иметь собственный набор регистров.

tl; dr

Вы не должныне заботиться о сохранении и восстановлении регистров FP.

1 голос
/ 08 ноября 2011

Нет новых проблем, о которых стоит беспокоиться с многопоточностью и SIMD.Пока вы делаете SIMD правильно и эффективно, вам не о чем беспокоиться.

То есть SIMD имеет свои собственные проблемы с реализацией, как и многопоточность.Но их объединение не усложнит.

1 голос
/ 08 ноября 2011

Почему вы думаете, что возникнет проблема?SIMD-регистры будут заменены, как и любые другие регистры CPU, когда произойдет смена потока.

...