Reply to comment

Думаю, что тут нельзя ничего "подправить", чтобы стало эффективно. Тут не-coalescing чтение из глобальной, потому что не последовательные слова читаются из памяти, плюс heavy-branching, убивающий производительность в разы.

Предлагаю изменить порядок загрузки данных нитями. Сделать, чтобы нить читала блок 32x32, а не 18x18. То есть чтобы каждая нить из блока 16x16 грузила 4 значения.
1 1 2 2 3 3 4 4 ... 16 16
1 1 2 2 3 3 4 4 ... 16 16
17 17 18 18 ...
17 17 18 18 ...
...
Тут не нужно if'ов и можно сделать coalescing чтение. Не знаю, правда, как это усложнит обработку.

При этом как Вы собираетесь использовать эту шаред-память тоже интересно, потому что при блоке 18x18, конфликты банков второго порядка приобритете -- к бабке не ходи.

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