Ответ 1
С++ AMP - это библиотека (и в ее составе также было добавлено расширение языка клавиш). Поскольку С++ AMP является открытой спецификацией, она может быть реализована на любых других языках низкого уровня. Реализация Microsoft основывается на DirectCompute (и, следовательно, на HLSL), но полностью скрыта от вас, когда вы используете С++ AMP (поэтому С++ AMP может быть открытой спецификацией, она не предоставляет DirectX на поверхности API). Для получения дополнительной информации о С++ AMP, пожалуйста, следуйте ресурсам справа от нашего блога (хорошо продолжайте добавлять к этому): http://blogs.msdn.com/b/nativeconcurrency/
Вы сделали выражение о том, что Microsoft работает с NVIDIA для улучшения производительности С++ AMP - это неверно. Microsoft создала открытую спецификацию С++ AMP с NVIDA и AMD и другими партнерами. Microsoft также работает с поставщиками оборудования, чтобы убедиться, что у поставщиков оборудования есть стабильные драйверы видеокарты, которые необходимы для правильной работы любой вычислительной технологии графического процессора.
Вы также выразили путаницу и бросили некоторые термины. OpenCL - это подход к вычислениям на GPU (от Khronos), как и DirectCompute (Microsoft), а также CUDA (от NVIDIA). Это все отдельные технологии, каждый из которых имеет свой собственный путь к графическому процессору (всегда через какой-то драйвер), каждый со своими достоинствами, сильными сторонами и недостатками. Один не заменяет другого, и один не универсален лучше другого. Теперь у вас также есть С++ AMP в этом соединении, как еще один выбор, и к этому относятся те же утверждения. Выбор за вами, который вы решили использовать.