Это не вопрос программирования как таковой, а связанный с ним, и кое-что, что я не смог найти информацию где-либо еще. Я надеюсь, что это может быть принято.
Я пытаюсь портировать приложение C ++ AMP для запуска на планшете Surface 2. Поскольку C ++ AMP работает на WinRT на планшете и использует DirectX для ускорения графического процессора, а процессор Tegra работает с DirectX, я ожидал повышения производительности от использования C ++ AMP на планшете по сравнению с использованием «процессора». Я вижу примерно 80-кратное ускорение на десктопе с использованием того же кода на графическом процессоре по сравнению с использованием одного ядра процессора, и оно очень параллельное.
Как оказалось, решение AMP на планшете дает мне преимущество только четырех ядер Tegras, но не более того.
У меня есть три устройства C ++ AMP: WARP, ref, CPU
По умолчанию WARP.Ref намного медленнее, и кажется, что процессор сейчас выходит из строя.
Ядра SIMD просто недоступны для C ++ AMP на Tegra4 или мне нужно сделать что-то особенное?
В дополнение к любым ускорителям GPU вы увидите следующие ускорители, если перечислите доступные ускорители, используя:
std::vector<accelerator> accls = accelerator::get_all()
Взято из C ++ AMP Book:
— Ускоритель :: direct3d_ref REF-ускоритель, также называемый Reference Rasterizer или
«Программный адаптер» ускоритель. Он эмулирует общую графическую карту в программном обеспечении на процессоре, чтобы
обеспечить функциональность Direct3D. Он используется для отладки и также будет ускорителем по умолчанию, если другие ускорители недоступны. Как следует из названия, ускоритель REF должен
считаться стандартом де-факто, если вы подозреваете ошибку в драйвере вашего поставщика оборудования.
Как правило, ваше приложение не захочет использовать ускоритель REF, потому что он намного медленнее
чем аппаратные ускорители и будет медленнее, чем просто реализация C ++
вашего алгоритма на процессоре.— Ускоритель :: cpu_accelerator Ускоритель процессора можно использовать только для создания массивов, которые
доступны для процессора и используются для подготовки данных. Ваше приложение не может использовать это для выполнения кода C ++ AMP в первом выпуске C ++ AMP. Дополнительные сведения об использовании ускорителя ЦП для создания промежуточных массивов и массивов хоста описаны в главе 7 «Оптимизация».— Ускоритель :: direct3d_warp Ускоритель WARP, или Microsoft Basic Render Driver, позволяет
время выполнения C ++ AMP для запуска на процессоре. Ускоритель WARP использует программное обеспечение WARP
Растеризатор, который является частью среды выполнения Direct3D 11. Ускоритель WARP использует многоядерный и
параллельные с данными инструкции с несколькими данными (SIMD) для выполнения параллельного с данными кода
очень эффективно на процессоре. Ваше приложение может использовать WARP как запасной вариант, когда нет физического
ГПУ присутствует. Ускоритель WARP поддерживает только математику одинарной точности, поэтому его нельзя использовать
в качестве запасного варианта для ядер, которые требуют двойной или ограниченной точности.
Обзор WARP можно найти в «Руководстве по платформе расширенной растеризации Windows (WARP)»
на MSDN: http://msdn.microsoft.com/en-us/library/gg615082.aspx.
Таким образом, поведение, которое вы видите, в значительной степени соответствует ожиданиям.
Тем не менее, я думаю, вы действительно хотите знать, где находится графический процессор Tegra 4? Вы ожидаете увидеть это как вариант ускорителя, если у Surface 2 есть драйвер DirectX 11. DX11 требуется для C ++ AMP.
Поверхность 2 основана на SOC Tegra 4 (T40a2), которая поддерживает только DX9.1.
На стороне DirectX графический процессор Tegra 4 поддерживает уровень функций Direct3D 9_1.
Взято из Графический процессор Nvidia Tegra 4: удвоение эффективности. Я не смог найти никакого подтверждения этому на сайтах NVidia. Похоже, вам нужна Tegra K1 для поддержки DX11. Извините, что я несу плохие новости.
С другой стороны, если вы нацеливаете свой код на ускоритель по умолчанию, то другое оборудование, которое имеет графический процессор с поддержкой DX11, автоматически воспользуется этим преимуществом.
Других решений пока нет …