我的问题是这个代码可以构建,但我无法运行,程序停止并在我的屏幕上弹出错误,我不明白为什么。我试图调试程序,我发现任何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();
}
AMP01.exe中的0x0F7BC933(vcamp140d.dll)抛出异常:0xC0000005:访问冲突读取位置0xCDCDCDCD。
也许我没有从教程中读到一些东西,我知道我弄乱了些什么,但我无法弄清楚是什么......对不起是一个初学者和我糟糕的英语。