问题标签 [c++-amp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
752 浏览

c++ - 通过 GPU 读取多个 .dat 文件

我知道通过 GPU 读取文件是低效的任务,因为它面临着系统中最慢的部分,即 IO。但是,我想出了另一种方法,即使用 CPU 读取文件并让 GPU 处理处理负担。我用 C++ 编写了以下代码,但我被困在集成点上,即如何让 GPU 在 CPU 读取这些文件后处理这些文件。换句话说,C++-amp 与代码添加和集成的出发点是什么?还是我应该从头开始重写整个代码?

0 投票
2 回答
311 浏览

c++ - C++-amp 库和软件要求

我的 Visual Studio 版本没有 GPU 调试器选项。是因为版本本身还是我应该下载一些更新?版本是“Microsoft Visual Studio Express 2012 for Windows Desktop Version 11.0.60315.01 Update 2”、“Windows 7 home premium SP1”库呢,我在哪里可以得到它们?

0 投票
1 回答
328 浏览

winapi - Direct3d顶点缓冲区使用类型、性能和c++amp?

我是direct3d和图形编程的新手,根据这个Direct3d编程技巧,我正在编写的程序在每帧应用非平凡计算后每帧更改一次顶点

我应该为这样的任务使用动态缓冲区,但它说它的性能是可以预期的,在网上搜索我发现更新顶点缓冲区的最快方法

根据他的说法,向下滚动到 Xoofx 答案(Sharpdx 的设计者)更新子资源比使用动态缓冲区更好,据我所知,更新子资源仅用于默认缓冲区。

我应该使用哪种用法,什么是(分期)?

如果我决定使用 C++ AMP 进行计算(我知道它使用 gpu 作为处理器)有没有办法将缓冲区使用设置为默认值并仍然使用 C++ AMP 通过 cpu 访问它?

0 投票
1 回答
264 浏览

c++ - 放大器限制功能中的非法外部参考

如果我正在尝试使用 C++ amp 并且存在 AMP 受限函数需要访问的常量数据的静态数组,我该如何轻松地做到这一点(最好不要过多地破坏代码?)

所以我有一个数组:

还有一个使用该阵列的放大器受限主体..

0 投票
1 回答
380 浏览

c++ - 模棱两可的陈述 C++-AMP:(程度)模棱两可

我正在尝试在 C++-AMP 中编写代码,以将多个 2D 向量复制到 GPU 内存中进行处理。但是,一旦我从表达式开始,extent<2> eM(100,100);我就会遇到这个错误:“范围”是模棱两可的。与 C++ 中的任何其他范围表达式是否有冲突?是因为我使用的库吗?这些都是我包含的所有库和命名空间,我不能包含很长并且会令人困惑的代码。

0 投票
1 回答
187 浏览

c++ - C++ AMP 构造函数

将在 amp 代码中使用的结构的构造函数是否需要包含 restrict(amp)?前任:

还是应该像...

0 投票
1 回答
185 浏览

c++ - 在 (C++-AMP) 中处理异构向量

我已经编写了读取和解析可变数量的 .dat 文件并将它们存储到 2D 向量中的代码,每个文件都在单独的向量中。现在,我正在尝试利用并行处理 (GPU) 来对这些向量执行一些计算。但是,许多询问对我来说仍然模棱两可,如果您能向我澄清,我将不胜感激。

  1. 声明时是否必须定义extents 尺寸?因为我有基于文件的可变维数。或者我可以extent在不声明尺寸的情况下声明,concurrency::extent<2> eA;如果没有,还有什么替代选择?
  2. 当我宣布array<T,N>;由于我的向量是异构的(一些数字和一些文本),我可以T用作通用类型(例如使用boost::any)吗?
0 投票
2 回答
1043 浏览

gpgpu - C++ AMP 性能问题

我刚开始使用 C++ AMP(作为学习它的一种方式),但在性能方面我没有得到预期的结果,也许你可以帮助我。

要解决的问题很简单,我有一个向量和一个矩阵结构(C++ 代码,顺便说一句,我是 C++ 的新手)

目标是将同一个矩阵一遍又一遍地乘以数百万个这些向量。下面是进行计算的代码:

现在我可以在 CPU 或 GPU 中调用 run 这个方法。

中央处理器:

显卡:

使用 2020 万个向量运行此代码时,我得到以下结果:

  • CPU (C++): 226ms
  • CPU (C#) : 223 毫秒
  • 显卡:339 毫秒

我有几个惊喜。首先,C# 和 C++ 代码以几乎相同的速度运行。其次,GPU 没有我希望的那么快。

我知道你必须为内存传输付出代价,但我认为这个例子不会那么明显。无论我输入多少数据,GPU总是较慢。那就是说我做错了什么,否则如果被单核cpu打败,没人会用GPU玩游戏。

问题:有没有一种方法可以在 GPU 上比在 CPU 上进行这种计算?

谢谢

仅供参考:我正在运行 Windows 7(这使我无法使用 WARP),配备 NVIDIA GeForce GTX 690 和 Intel Core i7 3930k。

0 投票
1 回答
354 浏览

c++-amp - 受限制的 C++-AMP 不支持类型“字符串”

我正在尝试将boost::variant2D 矢量复制到array<T,N>. 使用指令copy(vectorName.begin(), extentName);。首先我得到错误,因为向量类型是variant可以理解的。但是,在将向量类型更改为字符串后,我收到一个错误,即受限放大器不支持此类型。以下代码段是目标代码:

借此:

有什么方法可以处理 C++-AMP 中的字符串吗?

0 投票
1 回答
1337 浏览

filter - 使用 C++ AMP 优化 2D 卷积滤波器

我对 GPU 编程和 C++ AMP 相当陌生。任何人都可以帮助制作通用优化的二维图像卷积滤波器吗?到目前为止,我的禁食版本如下所示。可以以某种方式通过平铺做得更好吗?这个版本运行起来比我的 CPU 实现要快得多,但我希望能做得更好。

绕过它的另一种方法当然是在傅里叶域中执行卷积,但我不确定只要滤波器与图像相比相当小(它没有边长是幂)它会执行顺便说一句)。