问题标签 [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.
c++ - C++11 是否添加了 C99 限制说明符?如果不是,为什么不呢?
restrict
是 C99 的一项功能,最近通过允许编译器对指针执行“previous-fortran-only”优化而受到广泛关注。这也是微软最近宣布作为 C++AMP 规范基础的关键字。
该关键字实际上是否在 FCD 中?如果没有,是否有具体原因被省略?
language-agnostic - 并发和内存模型
我正在观看Herb Sutter 关于 GPGPU 和新的 C++ AMP 库的视频。他在谈论内存模型并提到弱内存模型,然后是强内存模型,我认为他指的是读/写顺序等,但我不确定。
谷歌发现了一些关于内存模型的有趣结果(主要是科学论文),但是有人可以解释什么是弱内存模型,什么是强内存模型以及它们与并发的关系吗?
c++ - 在 C++ AMP 中何时不需要调用“synchronize()”?
背景:有关 C++ AMP 概述,请参阅 Daniel Moth最近的 BUILD 演讲。
只有在最后一个引用中,他们才会调用array_view.synchronize()
.
synchronize()
在这些简单的示例中,是否不需要调用?什么时候可以安全排除?我们可以相信没有它的 parallel_for_each 行为“同步”(w/r/t 进行代码)?
c++ - 在 C++ AMP retrict(direct3d) 代码中使用 int 索引,其中预期为 double
谷歌搜索没有太大帮助,有人用过 AMP 吗?
在下面的代码片段中,从整数转换为双精度 (double v = idx.x) 会导致“无法创建着色器”运行时错误。我认为restrict(direct3d) 会提醒我GPU 在编译期间无法处理的事情。是否有 pow() 的替代方法——或者我必须编写一个循环来做到这一点?
c++ - C++ AMP 会在没有兼容 GPU 的机器上运行吗?
我知道 C++ AMP 由支持 DirectX 11 的 GPU 加速。
但是,我的问题是,如果编译后的 C++ AMP 程序在没有 DirectX 11 兼容 GPU 的机器上运行,会发生什么?
它是否被 DirectCompute 的某些软件实现模拟?
它是否在 CPU 上执行(可能使用 SSE 样式指令)?
或者,它只是无法执行?
c++ - 如何使用二维数组在 c++ AMP 中声明 array_view 或数组对象
我正在尝试使用一个数组int myarray[2][3]
来初始化一个array_view
对象。我试过array_view<int, 2> a(2,3, myarray);
但是那不起作用。我也希望能够用向量做同样的事情。有任何想法吗?
c++ - parallel_for_each 不支持的类型错误
我正在使用 C++ AMP,但由于某种原因,最愚蠢的代码无法编译。这:
导致以下错误:
错误 C3576: 'wmain::': Concurrency::details::_Parallel_for_each 参数 #3 具有不受支持的类型 c:\program files (x86)\microsoft visual studio 11.0\vc\include\amp.h
它似乎不喜欢传递给的 lambda 表达式const _Kernel_type& _Kernel
笔记; 我正在使用包含 AMP 支持的 Visual Studio 11 Developer Preview。“restrict(direct3d)”是一个新关键字,用于支持控制哪个加速器运行相关代码。
有任何想法吗?我试过从几个不同的例子中复制,但没有任何效果,所以我有点难过。
c++ - 控制 C++ AMP 中的索引变量
我刚刚开始尝试 C++ AMP,我决定试一试我正在从事的当前项目。在某些时候,我必须为我拥有的向量构建一个距离矩阵,我为此编写了下面的代码
但是,如您所见,这并没有考虑距离矩阵的对称性。当我计算矩阵i和j的 sqrsum 时,当i和j的顺序颠倒时,我不想再次进行相同的计算。有没有办法做到这一点?我想出了以下技巧,但我不知道这是否会显着提高性能
if 条件可以完成这项工作吗?还是您认为 if 语句会不必要地损害性能?我想不出任何替代方案
顺便说一句,我刚刚注意到上面写的代码在我的机器上不起作用,它的 gpu 只支持单精度。有什么办法可以解决这个问题吗?错误消息如下:“runtime_exception: Concurrency;;parallel_for_each 使用所选加速器不支持的功能。ID3D11Device::CreateComputeShader: Shader 使用当前设备不支持的双精度浮点操作。”
c++ - 使用 C++ AMP 库
我正在尝试开始使用<amp.h>
图书馆。但是当我输入时#include amp.h
,我得到一个错误,说无法打开源文件<amp.h>
。我需要做些什么特别的事情才能使它可用吗?