Size: a a a

pro.graphon (and gamedev)

2020 May 09

a

alexcher in pro.graphon (and gamedev)
а еще, заявлен максимальный размер - 8 гигов. но больше, чем на 256 метров лучше не забивать эту память, да?)
источник

a

alexcher in pro.graphon (and gamedev)
Anatoly Tomilov
А что в них?
например, матрицы, информация о костях
источник

AT

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

a

alexcher in pro.graphon (and gamedev)
ну это понятно, что ее может не оказаться
источник

a

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

AT

Anatoly Tomilov in pro.graphon (and gamedev)
Общее решение - это использовать staging buffer из host visible и делать map unmap. Этот случай покрывает всё и, получается, нет смысла делать ветвление в коде для случая, когда такая куча доступна. Но если хочешь заоптимизировать для встроек, то можно и сделать
источник

a

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

a

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

a

alexcher in pro.graphon (and gamedev)
а для вертексов смотреть на наличие и размер локал+хост, иначе стейджинг
источник

a

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

AT

Anatoly Tomilov in pro.graphon (and gamedev)
В куде managed память не даёт выигрыша по сравнению с простым маллоком и cudaMemcpy ни в количестве кода, ни в скорости пересылки данных. А это прямой аналог, кажется.
источник

a

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

AT

Anatoly Tomilov in pro.graphon (and gamedev)
На девайсе
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
Ну или как бы везде
источник

a

alexcher in pro.graphon (and gamedev)
то есть нет смысла в стейджинге в принципе?
источник

AT

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

AT

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

AT

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

a

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

AT

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