Size: a a a

pro.graphon (and gamedev)

2020 May 09

AT

Anatoly Tomilov in pro.graphon (and gamedev)
вот эта память managed она не обязательно где-то вообще лежит
источник

AT

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

a

alexcher in pro.graphon (and gamedev)
alexcher
тогда есть ли несколько видов памяти, которая лежит на видюхе и в нее может лазать проц?
я хочу сопоставить вульканью память вот с этими cuda способами)
источник

a

alexcher in pro.graphon (and gamedev)
Anatoly Tomilov
она может лениво выделяться
а где выделяться?
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
страница 1 может читаться и писаться исключительно на хосте, а страница 2 — на девайсе. И ни разу не будет пересылки. На хосте физических страниц будет аллоцировано — одна, как и на девайсе
источник

a

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

a

alexcher in pro.graphon (and gamedev)
и при доступе с проца в память, которая есть только у видюхи - оно скопируется, да?
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
да, если concurrentManagedAccess == true
источник

I

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

AT

Anatoly Tomilov in pro.graphon (and gamedev)
если нет, то надо cudaMemPrefetch* вызывать
источник

a

alexcher in pro.graphon (and gamedev)
Anatoly Tomilov
да, если concurrentManagedAccess == true
а если конкурентного нету, то надо вызывать функции для скачивания/выгрузки памяти на проц/видюху?
источник

a

alexcher in pro.graphon (and gamedev)
Anatoly Tomilov
если нет, то надо cudaMemPrefetch* вызывать
а, ну походу да
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
Anatoly Tomilov
если нет, то надо cudaMemPrefetch* вызывать
нет. Неправда
источник

AT

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

a

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

AT

Anatoly Tomilov in pro.graphon (and gamedev)
то есть нельзя к блоку доступаться с хоста из отдельного потока, пока в каком-то потоке ядро не завершилось (cudaDeviceSynchronize или cudaStreamSynchronize не вернулось)
источник

a

alexcher in pro.graphon (and gamedev)
alexcher
а если конкурентного нету, то надо вызывать функции для скачивания/выгрузки памяти на проц/видюху?
я подумал, вызывать такую функцию, она дождется завершения, синхронизирует буферы
источник

a

alexcher in pro.graphon (and gamedev)
alexcher
а разница между paged и этим в расположении памяти? paged лежит в оперативке, и видюха туда лезет, а direct на видюхе, и проц туда лезет?
а еще, оба этих способа могут работать конкурентно?
источник

a

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

AT

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