使用C ++ AMP时GPU断点未命中

时间:2012-09-04 16:39:01

标签: c++ visual-c++ gpgpu c++-amp

我已将调试器类型设置为GPU only并在8行parallel_for_each lambda的每一行设置断点,包括行parallel_for_each语句,但它永远不会被命中。我在Windows 8 Pro上使用Visual Studio 2012。

我需要采取什么步骤才能使断点工作?

1 个答案:

答案 0 :(得分:4)

您的应用程序是否明确为parallel_for_each提供了加速器/ accelerator_view?如果需要,您需要确保在调试时使用REF加速器,除非您的GPU驱动程序支持调试。

    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