Помогая мне понять это время вычислений - PullRequest
0 голосов
/ 14 сентября 2011

Я делаю несколько матричных вычислений на OpenCV, и я не могу понять, почему это занимает время, которое требуется

Операция 1: умножение вектора столбца 320x1 на матрицу 390x320, затем умножение на матрицу 72000x390.Время: ~ 35 мсОперация 1b: 10-кратное умножение вектора столбца 32x1 на матрицу 390x32, затем умножение на матрицу 7200x390.Время: ~ 35 мс

Операция 2: умножение вектора столбца 320x1 на матрицу 72000x320.Время: ~ 30 мсОперация 2b: 10-кратное умножение вектора столбца 32x1 на матрицу 7200x32.Время: ~ 10 мс

В основном в Операциях 1 Я всегда использую вектор промежуточного столбца размером 390, хотя я пропускаю это в Операциях 2. Однако я не могу объяснить, почему операция 2b намного быстрее, чем 2, когда1b и 1 имеют одинаковую скорость.

Есть идеи?Спасибо

1 Ответ

1 голос
/ 14 сентября 2011

Глядя на число умножений, которые должны быть выполнены каждой операцией, я вижу:

Operation 1: 390 * 320 = 124,800
Operation 1b: 10 *390 * 32 = 124,800
Operation 2: 72000 * 320 = 23,040,000
Operation 2b: 10 * 7200 * 32 = 2,304,000

Операции 1 и 1b требуют одинакового умножения, но для операции 2 требуется 10-кратное умножение операции 2b.

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