А причем тут размер данных? Помоему ее смысл в скорости обмена данными.
Судя по мануалам, использование такой памяти увеличивает пропускную способность в два раза примерно. Но там нюансы, что чтение из такой памяти может быть эффективным лишь на небольшом круге процессоров.
http://www.gpgpu.org/forums/viewtopic.php?t=4798
The runtime also provides functions to allocate and free page-locked (also known as pinned) host memory.
Основной ее смысл по-моему, так это если что-то не помещается в обычную память, например 2Gb текстуры, которые киношники так любят.
И можно положить такие текстуры в обычную CPU-шную память. В этом смысл как мне кажется.
А то что она может просто увеличить пропускную способность памяти...ну не знаю, это где то написано?
А, блин, извини я невнимательно прочитал. Та это же пропускная способность CPU to GPU. Ну да, если у тебя в этом боттлнек то наверное.
FROL
Да вот ищу где ботлнек. При множественных проходах цп-гпу я уже проигрываю цп в 2 раза. Не выровненный доступ конечно присутствует, это одна причина (для железок _10,_11). Но может это и пересылки, сразу трудно вычислить.
Ты зря таскаешь данные туда-сюда, это не вариант вообще. Надо все на GPU считать.
>Надо все на GPU считать.
Этому мешают виртуальные функции.
Ботлнеком является именно пересылка данных, убедился воочию :)
FROL
Посмотрел на cuda-спеки для серии 400 и узрел там 32 тысячи регистров на мультипроцессор. Как думаешь это хорошо ? )
ну определенно хорошо)
Пользовался такими картами?
Ну я запустил пару раз рейтрейсинг на ней, работает у меня в 1.5-1.7 раз быстрее чем на аналогичной GTX285.
Но боттлнек мог сместиться в другое место. Дома не стоит поэтому более ничего не могу сказать. Хорошо бы погонять отдельные части алгоритма и на ней и потестировать разные подходы.
FROL
А по С++ возможностям на них что-то можешь сказать?
не знаю, пока ничего вроде нового не добавилось. Насколько я понял виртуальные функции так и не включили в куду 3.0(
хм, плохо если так. а вобще насколько помню они обещали исправиться в cuda 3.1.
Тема в архиве.