Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Контексты CUDA

Контексты CUDA

Поделиться
_vasa_Постоялецwww2 июля 20100:11#0
Интересует решение такой проблемы, как правильно использовать контекст cuda на стороне хоста.
Например, один хост-поток создал контекст cuD3D9CtxCreate и сделал его плавающим вызовом cuCtxPopCurrent. Этот же поток создает и регистрирует cuda-ресурсы, текстуры например. Другой поток эти текстуры использует (map/unmap). После этого первый поток должен удалить ресурсы, но любой вызов cuD3D9UnregisterResource возвращает invalide context. Пробовал cuCtxPushCurrent/cuCtxPopCurrent и потом удаление - для первого потока не работает, хотя ресурсы в нем и выделялись. Если же это делаю во втором потоке, который не выделял cuda-ресурсов, но только их использовал, то они удаляются нормально. Вместо cuCtxPushCurrent/cuCtxPopCurrent используется cuvidCtxLock/cuvidCtxUnlock, но суть таже, это более безопасный вариант cuCtxPushCurrent/cuCtxPopCurrent. Приходится все ресурсы использовать и удалять только во втором потоке, что требует синхронизации потоков (но хотя бы работает нормально). Вот. Не помешал бы хороший пример как разделять cuda-ресурсы в многопоточной среде на стороне хоста.

/ Форум / Программирование игр / Общее

Тема в архиве.

2001—2017 © GameDev.ru — Разработка игр