无法构造array_view对象

时间:2016-02-15 16:50:58

标签: c++

我的问题是这个代码可以构建,但我无法运行,程序停止并在我的屏幕上弹出错误,我不明白为什么。我试图调试程序,我发现任何array_view对象都无法构建

#include <amp.h>
#include <iostream>
#include <algorithm>

using namespace concurrency;

void perform_calculation(std::vector<int>& vA, std::vector<int>&vB,
std::vector<int>vC, int M, int N)
{
    extent<2> e(M, N);
    array_view<int,2> a(e, vA); // the program stops here
    array_view<int,2> b(e, vB);
    array_view<int,2> c(e, vC);
    c.discard_data();
    index<2> idx(0, 0);

    parallel_for_each(e,
        [=](index<2> idx)restrict(amp)
    {
        c[idx] = a[idx] + b[idx];
    });
    c.synchronize();
}

void do_it()
{
    const int M = 1024;
    const int N = 1024;

    std::vector<int> vA(M * N);
    std::vector<int> vB(M * N);

    int i = 0;
    std::generate(vA.begin(), vA.end(), [&] {return i++; });
    std::generate(vB.begin(), vB.end(), [&] {return i--; });

    std::vector<int> vC(M * N);

    perform_calculation(vA, vB, vC, M, N);
}

int main()
{
    do_it();

    std::cout << "Hit any key to exit..." << std::endl;
    std::cin.get();
}

The error:

  

AMP01.exe中的0x0F7BC933(vcamp140d.dll)抛出异常:0xC0000005:访问冲突读取位置0xCDCDCDCD。

也许我没有从教程中读到一些东西,我知道我弄乱了些什么,但我无法弄清楚是什么......对不起是一个初学者和我糟糕的英语。

0 个答案:

没有答案