Мне нужна помощь с оптимизацией и проблемой производительности, связанной с вычислением средневзвешенного геометрического значения некоторых данных.
Я представляю проблему с небольшим образцом.
Я написал код для расчета WGM для простого примера ниже.
% A matrix Example 3x3 matrix
% w column vector 3x1
% wgm row vector 1x3
A = rand(3);
w = [1,2,6]';
wgm = (prod(A.^w)).^(1/sum(w));
Теперь по общей проблеме :
Предположим, у меня есть новая матрица размером nxm
и W-матрица, состоящая из весовых столбцов, где весовые значения могут изменяться от 0 до k, и мне нужны все перестановки столбцов.
То есть матрица W имеет размер nxk ^ n , поскольку характер весов и взвешенное геометрическое вычисление этой окончательной матрицы следует уменьшить , исключая столбцы, представляющие умножение на скаляр значение , переходящее от 0 к k перестановки.
Так что, если у меня уже есть столбец типа [1, 1, 0], который должен исключить все t * [1,1,0] с t, идущим от 0 до k.
Другой пример: [1 2 3] следует исключить [2 4 6] или [3 6 9] и т. Д.
Основная идея : каждый сгенерированный столбец для матрицы W можно нормализовать, разделив каждый вес на k , поэтому, если новый нормализованный столбец является избыточным, его не следует добавлять, а затем преобразовать обратно в столбец uint8 для уменьшения потребления памяти до 12,5%.
Итак, учитывая пример реальных данных предположим:
- У меня статическая матрица A 32x30.
- Весовые значения от 0 до 99.
- Мне нужен способ создать матрицу W размером 32x100 ^ 32 и оптимизировать ее.
- Для расчета оптимизированной первоначально матрицы WGM 100 ^ 32x30, где каждая строка является результатом вычисления из матрицы A и соответствующего столбца W.
Итак, проблемы, которые нужно решить:
- Создание оптимизированной матрицы весов как по размеру, так и по производительности.
- Расчет матрицы WGM.
- Способ выделения и разбиения этих матриц, чтобы избежать проблем с памятью.
- Преобразование кода Matlab в код GPU для вычислений на устройстве Cuda (1080 GTX с 8 ГБ видеопамяти) .
- Эффективное хранение окончательных матриц.
Добавлена информация:
Данные матрицы взвешенных геометрических средних будут проверяться с помощью набора более строгих правил, и поэтому несоответствующие строки будут отбрасываться, так же как и для окончательной матрицы W, где исключение будет происходить для соответствующих столбцов.
Это можно было оценить ранее при создании 2 матриц, чтобы найти решение, которое оптимизирует потребление памяти, но при этом может быть менее эффективным с точки зрения производительности .