Reply to comment

да, заработал. Однако всё равно не могу вычислить , почему не работает матричное умножение. Использую код с сайт NVidia, Моя задача - умножить матрицу изображения, представленную как 3 канала Х Высота*Ширина, каждый канал на R,G и B соответственно, вытянуты они в одну строку, на другую матрицу константных чисел, размером всего лишь 3Х3 для преобразования в YIQ формат. По правилу необходимо умножить так T * ImageRGB = ImageYIQ, где T[3X3] и ImageRGB[3XHeight*Width], чтобы размер ImageYIQ остался таким же, как ImageRGB. однако функция умножения таким образом не запускается (пишу в ней printf для проверки входа). А когда проверяю умножения на других размерах, например [3*HeightXWidth], то умножение работает, однако мне надо именно [3XHeight*Width]. Исходя из кода функции я понял, что умножение разбивается на блоки-подматрицы размером BLOCK_SIZE X BLOCKSIZE, чтоб использовать в каждом блоке shared memory. Я чувствую подвох в этом, поэтому выставил BLOCK_SIZE = 1 вместо 16, чтоб не получилось 3/BLOCK_SIZE = 0. Однако это не помогло, а разобраться в расчете индексов входных и выходной матриц и их подматриц, принятом в функции пока что не получается. У кого-нибудь есть идеи или другой пример матричного умножения на CUDA?

Reply

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <i> <table> <td> <tr> <th>
  • Lines and paragraphs break automatically.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>. The supported tag styles are: <foo>, [foo].
  • Images can be added to this post.

More information about formatting options

Copyright © 2008-2011 Alex Tutubalin