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

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

最佳答案

您的应用程序是否明确为 parallel_for_each 提供了加速器/加速器 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

关于c++ - 使用 C++ AMP 时未命中 GPU 断点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12267847/

10-11 20:10