Оптимизация вычислений для средневзвешенного геометрического большого набора данных с использованием графического процессора - PullRequest
0 голосов
/ 24 апреля 2018

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

Я представляю проблему с небольшим образцом. Я написал код для расчета 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%.

Итак, учитывая пример реальных данных предположим:

  1. У меня статическая матрица A 32x30.
  2. Весовые значения от 0 до 99.
  3. Мне нужен способ создать матрицу W размером 32x100 ^ 32 и оптимизировать ее.
  4. Для расчета оптимизированной первоначально матрицы WGM 100 ^ 32x30, где каждая строка является результатом вычисления из матрицы A и соответствующего столбца W.

Итак, проблемы, которые нужно решить:

  • Создание оптимизированной матрицы весов как по размеру, так и по производительности.
  • Расчет матрицы WGM.
  • Способ выделения и разбиения этих матриц, чтобы избежать проблем с памятью.
  • Преобразование кода Matlab в код GPU для вычислений на устройстве Cuda (1080 GTX с 8 ГБ видеопамяти) .
  • Эффективное хранение окончательных матриц.

Добавлена ​​информация:

Данные матрицы взвешенных геометрических средних будут проверяться с помощью набора более строгих правил, и поэтому несоответствующие строки будут отбрасываться, так же как и для окончательной матрицы W, где исключение будет происходить для соответствующих столбцов.

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

...