Size: a a a

pro.graphon (and gamedev)

2020 May 09

a

alexcher in pro.graphon (and gamedev)
а менеджед - видимая с проца?
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
В крайнем случае у тебя одно пространство виртуальных адресов и ты можешь аналог std::map (переписанный так, что все методы __host__ __device__) сконструировать на хосте и траверсить на девайсе
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
alexcher
а менеджед - видимая с проца?
Отовсюду
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
Anatoly Tomilov
В крайнем случае у тебя одно пространство виртуальных адресов и ты можешь аналог std::map (переписанный так, что все методы __host__ __device__) сконструировать на хосте и траверсить на девайсе
И если поддержаны атомики, то можешь lock-free такую структуру юзать одновременно с хоста и девайса
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
Правда это будет жутко тормозить, т.к. для пересылки каждого байта у тебя будет транзакция по pci
источник

a

alexcher in pro.graphon (and gamedev)
Anatoly Tomilov
У тебя какой-то диапазон адресов виртуальных на хосте и, быть может совпадающий, диапазон адресов на девайсе синхронизируются. Потрогал страницу - изменения становятся видны везде. Не обязательно автоматически, но есть вариант, что даже атомики в этой памяти будут работать между хостом и девайсом или даже несколькими девайсами.
это как раз про то, что память отмечена как быстрая для видюхи?
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
alexcher
это как раз про то, что память отмечена как быстрая для видюхи?
нет. Это всё про CUDA. Vulkan не дотягивает пока что
источник

a

alexcher in pro.graphon (and gamedev)
а типы памяти там не похожи?
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
вулкановские являются подмножеством кудовских
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
canUseHostPointerForRegisteredMem - адреса могут совпадать (но в добавок может быть device pointer, который по значению с host pointer не совпадает)
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
concurrentManagedAccess - когерентность между девайсом и хостом
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
directManagedMemAccessFromHost - аналог в Vulkan-е — можно не вызывать invalidate (или flush, не помню)
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
pageableMemoryAccessUsesHostPageTables - вызываешь malloc/new и передаёшь указатель полученный в код, исполняемый на девайсе и там по нему доступаешься без всяких дополнительных действий с твоей стороны
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
Anatoly Tomilov
И если поддержаны атомики, то можешь lock-free такую структуру юзать одновременно с хоста и девайса
это может быть неправда, стоит проверить
источник

a

alexcher in pro.graphon (and gamedev)
Anatoly Tomilov
pageableMemoryAccessUsesHostPageTables - вызываешь malloc/new и передаёшь указатель полученный в код, исполняемый на девайсе и там по нему доступаешься без всяких дополнительных действий с твоей стороны
то есть тут видюха постоянно что-то тащит из оперативки
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
только то, что трогает
источник

a

alexcher in pro.graphon (and gamedev)
ну да, да
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
с гранулярностью в 4 килобайта. причём, насколько я понимаю
источник

a

alexcher in pro.graphon (and gamedev)
Anatoly Tomilov
concurrentManagedAccess - когерентность между девайсом и хостом
а тут как тогда работает?
источник