Перезапись памяти, выделенной с помощью cudaHostAlloc () - PullRequest
1 голос
/ 24 марта 2011

У меня есть массив символов размером 100 МБ (h_array), который выделяется с помощью cudaHostAlloc() с флагом cudaHostAllocWriteCombined.

. Программа сначала копирует данные в h_array на хосте.Когда h_array заполнен, он скопирует h_array в d_array на устройстве, и некоторая обработка будет выполнена.Когда обработка завершена, h_array означает повторно в том смысле, что новые данные копируются в него снова, начиная с h_array[0].Новые данные предназначены для перезаписи того, что было ранее сохранено в h_array.

Однако, я получаю ошибку сегментации, когда новые данные копируются в h_array после завершения обработки.При использовании обычного malloc.

ошибок при сегментировании нет. Что не так?Могу ли я не переписать память, когда она закреплена?

Спасибо!

1 Ответ

1 голос
/ 23 апреля 2011

Ваш контекст CUDA, вероятно, каким-то образом выдергивается из-под вас.

Например, если вы выделите закрепленную память хоста в потоке, который затем завершится, память исчезнет.

Удостоверьтесь, что поток, который выполняет распределение, остается неизменным!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...