Microsoft AMP 在 x64

问题描述

我正在尝试在 Visual Studio 2019 中使用 Microsoft 的 AMP(加速大规模并行)库,但在使用 x64 模式时无法运行我的代码

一切都可以正确编译,但是每当我在程序运行时尝试在 x64 模式下使用 AMP 并行执行任何操作时都会出现内存错误,但我需要能够使用 x64 模式,因为 x86 只允许 2GB要使用的系统内存,而我正在从事的项目需要的不止这些。

有什么办法可以解决这个问题,还是只是软件本身的缺陷?

如果有帮助,我使用的是 AMD Ryzen 9 3950x 和 NVIDIA GeForce RTX 2080

============== 编辑 ==============

以下是显示问题的一小段代码

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

using namespace concurrency;

int main()
{
    std::cout << "Hello World!\n";

    int a[3] = {1,2,3};
    int b[3] = {4,5,6};
    int c[3] = {0,0};

    array_view<const int,1> arrayA(3,a);
    array_view<const int,1> arrayB(3,b);
    array_view<int,1> arrayC(3,c);

    parallel_for_each(arrayC.extent,[=](index<1> idx) restrict(amp)
    {
        arrayC(idx[0]) = arrayA(idx[0]) + arrayB(idx[0]);
    });

    arrayC.synchronize();

    for (int i : c)
        std::cout << i << ",";
    std::cout << "\n";
}

它可以编译,但是当它在 x64 模式下运行时,它会抛出这个错误

Exception thrown at 0x00007FF89B2A43D5 (vcamp140d.dll) in UselessApp.exe:
0xC0000005: Access violation reading location 0xFFFFFFFFFFFFFFFF.

错误的确切位置在 1058 中的 amprt.h

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)