问题标签 [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 回答
1149 浏览

c++ - 减少 C++Amp 中的 GPU-CPU 数据传输

尝试使用 C++Amp 优化我的应用程序时遇到以下问题:数据传输。对我来说,将数据从 CPU 复制到 GPU 没有问题(因为我可以在应用程序的初始状态下做到这一点)。更糟糕的是,我需要快速访问由 C++Amp 内核计算的结果,因此 GPU 和 CPU 之间的瓶颈很痛苦。我读到在 Windows 8.1 下有性能提升,但是我使用的是 Windows 7,我不打算改变它。我阅读了关于暂存数组的信息,但我不知道它们如何帮助解决我的问题。我需要向主机返回一个浮点值,这似乎是最耗时的操作。

我检查了在上面的示例中最耗时的操作是copy(a_partial_result, v_partial_result.begin());. 我正在努力寻找更好的方法。

0 投票
1 回答
604 浏览

c# - C++ AMP计算和WPF渲染显卡两用性能

情况:

在一个既需要计算又需要渲染图像(图像预处理然后显示)的应用程序中,我想同时使用 AMP 和 WPF(AMP 对图像进行一些过滤,而 WPF 仅显示缩放/旋转的图像)图像和一些简单的叠加层,都以大约 30fps 的速度运行,新图像将不断流入)。

问题:

有什么方法可以找出两者将如何相互影响?

我想知道我是否会在稍后的实际应用程序中看到在一个孤立的仅 AMP 环境中看到的希望不错的加速。

附加信息:

我将能够并且将单独测量 AMP 性能,因为它是低级别的新功能,无论如何我都将在单独的项目中设置。WPF 渲染部分已经存在于一个复杂的应用程序中,因此很难将其隔离。

我不打算只为渲染进行过滤器等,因为中间级别也需要结果(其他算法,例如边缘检测、保存等)。

0 投票
1 回答
242 浏览

c++ - C++ amp on Tegra4 surface2

This is not a programming question as such, but related to, and something which I have been unable to find info about anywhere else. I hope it can be accepted.

I am attempting to port a C++ AMP application to run on a Surface 2 tablet. Since C++ AMP works on WinRT on the tablet and since it uses DirectX for GPU acceleration and since the Tegra processor does work with DirectX, I was expecting a performance boost from using C++ AMP on the tablet vs using the "cpu". I see about 80x speedup on desktop using the same code on GPU as compared to using a single CPU core and it is highly parallel.

As it turns out, an AMP solution on the tablet is only giving me the benefit of the Tegras four cores, but nothing more.

I have three C++ AMP devices which are: WARP, ref, CPU

The default is WARP.Ref is very much slower and CPU seems to crash right now.

Is the SIMD cores just not available for C++ AMP on a Tegra4 or do I have to do something special?

0 投票
2 回答
956 浏览

c++ - C++ AMP nested loop

I'm working on a project that requires massive parallel computing. However, the tricky problem is that, the project contains a nested loop, like this:

To achieve the highest gain, I need to parallelise those two levels of loops. Like this:

I tested and found that AMP doesn't support nested for loops. Anyone have any idea on this problem? Thanks

0 投票
1 回答
226 浏览

c++-amp - 最大可写数据容器数

操作系统: Windows 8.1 64 位 - 完全更新

IDE: Visual Studio Professional 2013 - 版本 12.0.30110.00 更新 1 - 完全更新

我有一种情况,不是在编译期间而是在运行时出现以下异常。

parallel_for_each 调用的入口函数中引用的可写数据容器的数量 (17) 超过了所选加速器的限制 (8)。

发生这种情况的函数如下所示

根据这个 MSDN-post herehere,自 Windows 8 以来,可写容器的最大数量应该增加到 64 个。

我现在的问题是,是否有不同类型的可写容器,而我仍然只能使用最多 8 个某种类型的容器?

0 投票
1 回答
771 浏览

c++ - 简单图像处理示例中的 C++AMP 异常

我正在尝试自学 C++AMP,并且想从我所在领域的一个非常简单的任务开始,那就是图像处理。我想将每像素 24 位的 RGB 图像(位图)转换为每像素 8 位的灰度图像。图像数据以unsigned char数组形式提供(从Bitmap::LockBits(...)等处获得)

我知道 C++AMP 出于某种原因无法通过or处理charorunsigned char数据,因此我尝试根据该博客使用 s 。这里解释了如何写入 8bpp 纹理,尽管 VisualStudio 2013 告诉我已弃用。arrayarray_viewtexturewriteonly_texture_view

我的代码抛出运行时异常,提示“无法调度内核”。异常的完整文本很长:

ID3D11DeviceContext::Dispatch:计算着色器单元插槽 0 中的无序访问视图 (UAV) 具有格式 (R8_UINT)。这种格式不支持像 UAV 一样从着色器中读取。如果着色器实际使用视图,则这种不匹配是无效的(例如,由于着色器代码分支,它没有被跳过)。不幸的是,不可能让所有硬件实现都支持将此格式作为 UAV 读取,尽管该格式可以作为 UAV 写入。如果着色器只需要对该资源执行读取而不是写入,请考虑使用着色器资源视图而不是 UAV。

到目前为止我使用的代码是这样的:

这个异常的原因是什么,我可以做些什么来解决这个问题?

0 投票
1 回答
180 浏览

c++ - matlab慢速GPU中的C++AMP ARRAY_VIEW

我的 GPU 是 HD 7790,该程序在 matlab mex 中实现。C++AMP。我看到程序比 CPU Phenom II X6 (1055T) 2.8GHZ 慢。

我看到程序比 CPU Phenom II X6 (1055T) 800MHZ(慢 4 倍)慢。

CPU 和 GPU 之间的关系传输内存。我如何加速 GPU 程序?

0 投票
0 回答
161 浏览

matlab - 如何使用 mex 在 MATLAB 中访问地址内存 GPU C++AMP?

我想在matlab中使用C++AMP访问GPU的内存

我有带有 SP 和 DP 计算进程的 radeon GPU,我只想在我的计算算法中使用 GPU。???以避免访问 CPU 内存。

0 投票
1 回答
328 浏览

c++ - C++AMP 在 16 位图像上使用纹理计算梯度

我正在处理从 kinect 检索到的 16 位深度图像。由于索引或图像的大小,我发现制作自己的过滤器有些困难。我正在使用纹理,因为允许使用任何位大小的图像。

所以,我试图计算一个简单的梯度来理解什么是错误的,或者为什么它不能像我预期的那样工作。

当我使用 y dir 时,您可以看到有问题。

对于 x:

对于 y:

那是我的代码:

任何帮助将不胜感激。

0 投票
1 回答
928 浏览

c++ - C ++ Amp将16位图像从纹理复制到纹理(来自openCV Mat)

这个问题是这个链接的下一步。

简而言之,我正在处理来自 kinect 的深度图像,该图像检索 16 位图像。使用 C++Amp,我们确实对数据的位大小有一些限制。所以,我正在尝试使用纹理来处理它。

现在,我确定我正在写入正确的像素。但是,从我的纹理原始数据中检索似乎存在一些问题。

那是代码:

结果:

使用 gpu 复制后:

我还尝试使用 kinect 图像来查看会发生什么。结果让我吃惊:

原来的:

结果:

有谁知道发生了什么?

这就是我直接使用 16 位图像所做的修改(也许有帮助)

与往常一样,任何帮助都将不胜感激。如果您认为可以帮助我,请随时向我询问更多详细信息。

谢谢,大卫