GPU MATLAB дает различное время между первым и вторым выполнением - PullRequest
0 голосов
/ 25 февраля 2020

Когда я выполняю свой код, используя параллельный инструментарий Matlab, он дает мне два разных времени выполнения между первым и вторым разом.

На самом деле первый раз очень медленный (больше, чем версия ЦП), однако второй раз быстрее и логичнее, а последующие запуски такие же, как и во второй раз. Почему это происходит?

1 Ответ

3 голосов
/ 25 февраля 2020

Это правильно и ожидаемо.

Когда вы вызываете его в первый раз, ему нужно инициализировать графический процессор (в некотором смысле «включить»), настроить контексты CUDA, et c et c. Во второй раз, когда вы запускаете его, графический процессор готов принять все, что вы на него бросите.

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

Часто выполнение gpuDevice(1) достаточно инициализирует контекст, но в противном случае просто добавьте в него небольшое матричное умножение для инициализации.

Все это как-то верно для других парадигм параллельных вычислений в MATLAB, например, если вы хотите использовать parfor, вам нужно инициализировать параллельный пул, или это займет очень много времени в первый раз.

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