Каковы некоторые возможные причины ошибки сегментации при использовании компилятора nvcc CUDA?

У меня есть класс CUDA, пустьзови этоA, определенный в заголовочном файле. Я написал тестовое ядро, которое создает экземпляр классаA, который хорошо компилируется и дает ожидаемый результат.

Кроме того, у меня есть основное ядро CUDA, которое также прекрасно компилируется и дает ожидаемый результат. Тем не менее, когда я добавляю код в основное ядро для создания экземпляра классаA, компилятор nvcc завершается с ошибкой сегментации.

Обновить:

Для пояснения, ошибка сегментации происходит во время компиляции, а не при запуске ядра. Строка, которую я использую для компиляции:

`nvcc --cubin -arch compute_20 -code sm_20 -I --keep kernel.cu`

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

Мой вопрос: прежде чем тратить много времени на выделение минимального примера, демонстрирующего поведение (не тривиально, из-за относительно большой базы кода), кто-нибудь сталкивался с подобной проблемой? Может ли компилятор nvcc выйти из строя и умереть, если ядро слишком длинное или использует слишком много регистров?

Если такая проблема, как число регистров, может повлиять на компилятор таким образом, мне нужно будет переосмыслить, как реализовать мое ядро, чтобы использовать меньше ресурсов. Это также означало бы, что сокращение количества до минимального примера, вероятно, заставит проблему исчезнуть. Однако, если это даже не возможно, я неЯ не хочу тратить время на тупик, но скорее постараюсь сократить детали до минимального примера и отправит отчет об ошибках в NVIDIA.

Обновить:

По предложению @njuffa, я перезапустил сборник с-v флаг включен. Вывод заканчивается следующим:

#$ ptxas  -arch=sm_20 -m64 -v  "/path/to/kernel_ptx/kernel.ptx"  -o "kernel.cubin" 
Segmentation fault
# --error 0x8b --

Это говорит о том, что проблема связана сptxas программа, которая не в состоянии генерировать двоичный файл CUDA изptx файл.

Ответы на вопрос(1)

Ваш ответ на вопрос