gpt4 book ai didi

Tegra 4 表面 2 上的 C++ 放大器

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:45:40 28 4
gpt4 key购买 nike

这不是一个编程问题,而是相关的,并且我无法在其他任何地方找到有关信息。希望能采纳。

我正在尝试移植 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com