2013-09-02 3 views
0

В качестве следующего за предыдущим вопросом here, я пытаюсь реализовать следующий цикл, который является умножением матрицы-вектора, где вектор является столбцом из матрицы Q, основанной на на итератора петли:CUDA/CUBLAS: Доступ к элементам в массиве

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

for (unsigned K=0;K<N;K++){ // Number of iterations loop 
    //... do some stuff 
    for (unsigned i=0; i<N; i++){ 
     float sum = 0; 
     for (unsigned j=0; j<N; j++){ 
      sum += A[j][i]*Q[j][K]; 
     } 
     v[i] = sum; 
    } 
    //... do some stuff 
    // populate next column of Q 
} 

в случае, если размеры массивов:

а [Н х N]

Q [N х (0,5н + 1)]

Эти массивы были сплющенные, с тем, чтобы использовать их с cublasSgemv(). Мой вопрос в том, можно ли использовать cublasSgemv(), сообщая ему, с чего начать доступ к d_Q, и каков прирост элементов (так как он является основным строком C++):

EDIT: умноженное увеличение доступа к памяти с помощью SizeOf (с плавающей точкой). Насколько мне известно, все еще не работает.

Niter = 0.5*N + 1; 
for (unsigned K=0;K<N;K++){ 
    cublasSgemv(handle, CUBLAS_OP_T, N, N, &alpha, d_A, N, (d_Q + sizeof(float)*K*(Niter)), (Niter), &beta, d_v , 1); 
} 

Я не думаю, что его можно индексировать d_Q, как, что, как я не получаю никаких результатов

РЕШИТЬ: решение по @RobertCrovella является то, что я искал. Благодарю.

+0

Вы выполняете скалярное произведение между всеми возможными парами '(a, q)', ​​где 'a' - столбец' A' и 'q' - столбец' Q'. Не могли бы вы получить тот же результат с помощью стандартного матрично-матричного умножения между «A» и «Q» с помощью 'cublasSgemm'? – JackOLantern

+0

Я действительно хочу использовать только один столбец из Q, поскольку матрица заполняется только этим столбцом и затем заполняется глобальным циклом (K). – rex

+0

Почему вы не можете заполнить матрицу 'Q' перед циклами? В любом случае это не кажется ясным в вашем вопросе. Возможно, вы могли бы рассмотреть возможность его более уточнения относительно ограничений реализации? – JackOLantern

ответ

Смежные вопросы