Точка останова графического процессора не срабатывает при использовании C++ AMP

Я установил тип отладчика GPU only и установил точку останова на каждой строке 8-строчного лямбда-выражения parallel_for_each, включая оператор строки parallel_for_each, но он никогда не срабатывает. Я использую Visual Studio 2012 в Windows 8 Pro.

Какой шаг мне нужно предпринять, чтобы точка останова заработала?


person Curyous    schedule 04.09.2012    source источник


Ответы (1)


Ваше приложение явно предоставляет accelerator/accelerator_view для parallel_for_each? Если это так, вам необходимо убедиться, что при отладке вы используете ускоритель REF, если только ваш драйвер графического процессора не поддерживает отладку.

    accelerator defaultAcc (accelerator::default_accelerator);
    accelerator_view defaultView = defaultAcc.default_view;

#ifndef _DEBUG
    std::vector<accelerator> allAccelerators = accelerator::get_all();
    allAccelerators.erase(std::remove_if(allAccelerators.begin(), allAccelerators.end(), 
        [](const accelerator& acc){ return (acc.is_emulated) || 
                            (acc.device_path == accelerator::cpu_accelerator);} ),
                 allAccelerators.end());

    if (allAccelerators.size() > 0)
        defaultView = allAccelerators[0].default_view;
#endif
person Ade Miller    schedule 04.09.2012
comment
Ада, конечно, права. Если у кого-то возникнут другие проблемы с запуском отладки графического процессора, прочтите этот пост в блоге, который охватывает все проблемы (включая описанную Аде): blogs.msdn.com/b/nativeconcurrency/archive/2012/03/17/ - person Daniel Moth; 07.09.2012