В некоторых вычислениях на графическом процессоре мне нужно масштабировать строки в матрице так, чтобы сумма всех элементов в данной строке равнялась 1.
| a1,1 a1,2 ... a1,N | | alpha1*a1,1 alpha1*a1,2 ... alpha1*a1,N | | a2,1 a2,2 ... a2,N | => | alpha2*a2,1 alpha2*a2,2 ... alpha2*a2,N | | . . | | . . | | aN,1 aN,2 ... aN,N | | alphaN*aN,1 alphaN*aN,2 ... alphaN*aN,N |
куда
alphai = 1.0/(ai,1 + ai,2 + ... + ai,N)
Мне нужен вектор alpha
и масштабированная матрица, и я хотел бы сделать это за как можно меньше вызовов blas. Код будет работать на оборудовании nvidia CUDA. Кто-нибудь знает какой-нибудь умный способ сделать это?