@Perzh

Как правильно ускорить программу на GPU с использованием C++ AMP

Здравствуйте.
Пытаюсь реализовать EMMSP(extrapolation model most similar pattern) на GPU с использованием C++ AMP.
Суть алгоритма - перебор различных подпоследовательностей фиксированной длины из временного ряда. Простой перебор, просто распараллеливается, потоки работают независимо друг от друга. Данные (массив float от 18к до 1млн) загружены в общую память. Т.к. каждый поток работает со своим маленьким кусочком массива, я хотел загружать данные из глобальной памяти в более быструю блочную память, которая доступна не всем процессорам, а только тем, что находятся на одном блоке. Однако, на времени работы программы это никак не отразилось, при том, что согласно литературе блочная память работает в сотни раз быстрее глобальной и используется неоднократно при обработке данных.
У меня два объяснения этой ситуации: 1. я не правильно пользуюсь блочной памятью 2. каждый поток вычисляет регрессию, корреляцию между двумя кусками массива, при этом, очевидно, используются циклы, а значит и условные операторы, которые плохо влияют на производительность при работе с GPU.
Вопрос: подскажите плз в чем может быть причина: 1, 2 или и то и другое, или что нибудь третье?
P.S.: если есть знающие C++ AMP отпишите плз, я прикреплю кусочек кода, максимально упрощенный, но демонстрирующий суть и используемые мной инструменты.
  • Вопрос задан
  • 2702 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы