Когда я должен использовать C ++ AMP (или не должен его использовать)?
Что такое накладные расходы AMP? Сколько времени занимает копирование данных в память графического процессора и обратно? Каков минимальный размер данных, когда AMP начинает снижать производительность?
Копирование данных не так уж сложно, если вы не делаете это слишком много. Копирование нескольких больших порций данных время от времени хорошо. Игры обычно копируют данные экземпляра для каждого объекта в каждом кадре, например, и это Можно убить производительность, если перестарался, но обычно это нормально. Примечательно, что они не копируют такие вещи, как трехмерная геометрия, и это вас уничтожит.
Вариант использования, как правило, предназначен для просто (как максимум, FSM) расчеты для большого количества данных, где каждый элемент обрабатывается индивидуально.
Что касается производительности, ну, профиль — единственный способ быть уверенным. Графические процессоры — совершенно разные звери, и минимальный размер данных действительно зависит от выполняемых вычислений и разброса данных. Например, графическим процессорам не очень нравится, когда несколько потоков не разветвляются одинаково.
Других решений пока нет …