- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
这不是一个编程问题,而是相关的,并且我无法在其他任何地方找到有关信息。希望能采纳。
我正在尝试移植 C++ AMP 应用程序以在 Surface 2 平板电脑上运行。由于 C++ AMP 在平板电脑上的 WinRT 上工作,并且由于它使用 DirectX 进行 GPU 加速,并且由于 Tegra 处理器确实与 DirectX 一起工作,所以我期待在平板电脑上使用 C++ AMP 与使用“cpu”相比可以提高性能。与使用单个 CPU 内核相比,我发现在 GPU 上使用相同的代码在台式机上的速度提高了大约 80 倍,而且它是高度并行的。
事实证明,平板电脑上的 AMP 解决方案仅让我受益于 Tegras 四核,仅此而已。
我有三个 C++ AMP 设备,它们是:WARP、ref、CPU
默认是 WARP。Ref 非常慢,CPU 现在似乎崩溃了。
SIMD 内核是否不适用于 Tegra4 上的 C++ AMP,还是我必须做一些特殊的事情?
最佳答案
如果您使用以下方式枚举可用加速器,除了任何 GPU 加速器之外,您还将看到以下加速器:
std::vector<accelerator> accls = accelerator::get_all()
取自C++ AMP Book :
- accelerator::direct3d_ref The REF accelerator, also called the Reference Rasterizer or “Software Adapter” accelerator. It emulates a generic graphics card in software on the CPU to provide Direct3D functionality. It is used for debugging and will also be the default accelerator if no other accelerators are available. As the name suggests, the REF accelerator should be considered the de facto standard if you suspect a bug with your hardware vendor’s driver. Typically, your application will not want to use the REF accelerator because it is much slower than hardware-based accelerators and will be slower than just running a C++ implementation of your algorithm on the CPU.
- accelerator::cpu_accelerator The CPU accelerator can be used only for creating arrays that are accessible to the CPU and used for data staging. Your application can’t use this for executing C++ AMP code in the first release of C++ AMP. Further details on using the CPU accelerator to create staging arrays and host arrays are covered in Chapter 7, “Optimization.”
- accelerator::direct3d_warp The WARP accelerator, or Microsoft Basic Render Driver, allows the C++ AMP run time to run on the CPU. The WARP accelerator uses the WARP software rasterizer, which is part of the Direct3D 11 run time. The WARP accelerator uses multicore and data-parallel Single Instruction Multiple Data (SIMD) instructions to execute data-parallel code very efficiently on the CPU. Your application can use WARP as a fallback when no physical GPU is present. The WARP accelerator supports only single-precision math, so it can’t be used for fallback for kernels that require double precision or limited double-precision kernels. An overview of WARP can be found in “Windows Advanced Rasterization Platform (WARP) Guide” on MSDN: http://msdn.microsoft.com/en-us/library/gg615082.aspx.
所以您看到的行为与预期的差不多。
不过,我想您真正想知道的是 Tegra 4 GPU 在哪里?如果 Surface 2 具有 DirectX 11 驱动程序,您会希望将其视为加速器选项。 C++ AMP 需要 DX11。
Surface 2 基于似乎仅支持 DX9.1 的 Tegra 4 (T40a2) SOC。
On the DirectX side, Tegra 4’s GPU supports the Direct3D 9_1 feature level.
取自Nvidia's Tegra 4 GPU: Doubling Down On Efficiency .我无法在 NVidia 的网站上找到任何对此的确认。看来您需要 Tegra K1 才能获得 DX11 支持。很抱歉成为坏消息的传播者。
从好的方面来说,如果您将代码定位在默认加速器上,那么其他具有支持 DX11 的 GPU 的硬件将自动利用它。
关于Tegra 4 表面 2 上的 C++ 放大器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22129248/
示例链接:http://cinema.popcorntv.it/amp/news/una-mamma-per-amica-un-indizio-conferma-che-luke-e-lorelai/
以下代码编译失败。错误信息是: 错误一: error C3930: 'foo' : no overloaded function has restriction specifiers that are
我可以创建 restrict(amp) 函数如下: auto f = [](int& item) restrict(amp) {item += 1;}; 而且我可以在其他restrict(amp) 函
我正在学习有关为 iOS 创建天气应用程序的教程。一段时间后,我遇到了一个错误,即 dispatch_once(&onceToken, ^{ use of undeclared identifier
在 C++ AMP 中,内核函数或 lambda 被标记为 restrict(amp),这对允许的 C++ 子集 ( listed here ) 施加了严格的限制。 CUDA 是否允许在内核函数中对
这不是一个编程问题,而是相关的,并且我无法在其他任何地方找到有关信息。希望能采纳。 我正在尝试移植 C++ AMP 应用程序以在 Surface 2 平板电脑上运行。由于 C++ AMP 在平板电脑上
我有一个经常被调用的函数,它非常适合并行处理,所以我研究了 C++ 放大器作为初学者。该函数接受三个输入: 一个浮点 vector ,它是输入数据 常系数 vector ,在整个调用过程中保持不变 一
我想在我的第一个 AMP 项目中解决这个问题, 这是我遇到的问题: 错误.js:58: Origin of must not be equal to container 这是我的 index.htm
我正在尝试更改 amp-accordion 中标题的背景颜色。我能够做到这一点的唯一方法是将样式应用于 .-amp-accordion-header这是无效的。 最佳答案 如果您尝试覆盖类 .-amp
我尝试分析与英特尔 OpenMP 和英特尔 Composer XE 2014 并行化的 C++ 程序的扩展行为。当我运行“高级热点分析”时,我得到的结果是,一个名为“kmp print storage
我是一名优秀的程序员,十分优秀!