2015-10-08 3 views
-1

В настоящее время мне нужно умножить два массива A и B, оба из которых составляют 512 * 256 * 256. Под этим я понимаю: форма (A или B) = (512,256,256)Как декомбинировать и рекомбинировать массивы для ускорения процессов

Поскольку я хочу многократно обрабатывать его, мне нужно разрезать его на кусочки, чтобы ускорить работу.

Моя идея: Я хочу сделать A1, который будет (0: 256,0: 128,0: 128) и A2 (257:, 129:, 129 :), тот же для B.

Сделайте вычисления таким образом: C1 = A1 * B1; C2 = A2 * B2 А затем рекомбинировать C1 (256, 128, 128) + C2 (256, 128, 128) = C (512256256).

Имеет ли это смысл? Под этим я подразумеваю в математическом/массивном способе думать об этом (я новичок в этой области). В настоящее время я просто делаю C = A * B, и я в порядке, для небольших массивов.

Если да, то как я могу сделать работу? Особенно для рекомбинации. Добавить? Расширить?

Спасибо!

+0

Знакомы с numpy? Он умножает массивы на тривиальные. http://www.numpy.org/ –

+0

Привет Моя проблема связана с тем, что мои массивы слишком велики для пакета обработки, который я использую. Так что да, я знаю, как их умножать, я делаю это для небольших массивов, но мне нужно научиться их резать и правильно их восстанавливать, чтобы избежать проблемы с «большими массивами». – Magea

+0

Вы имеете в виду somethling как strassen algo? https://en.wikipedia.org/wiki/Strassen_algorithm –

ответ

0

Я нашел способ, возможно, не самый лучший, но все же.

Во-первых, получите 2 части слишком большого массива. Перед тем, как проложить первую, с любой желаемой длиной, равной длине фигуры. Затем скопируйте данные второй части в первую часть, заменив заполненные значения на полезные значения.