C++ AMP

не нашёл упоминаний об C++ AMP здесь:

http://msdn.microsoft.com/en-us/library/hh265136%28v=vs.110%29.aspx
http://en.wikipedia.org/wiki/C%2B%2B_AMP

спецификация открыта, gpgpu, fallback to sse, fallback to CPU.

http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/C-11-VC-11-...
3:40

так что становится ещё веселей, и это радует

Forums: 

nVidia кстати тоже недавно

nVidia кстати тоже недавно сделала CUDA открытой.
Оптимизация под SSE (векторизация) это вреда как уже встроенная опция компиляторе в MS VS C++ 2012 RC.
Судя по примерам этот AMP не очень стандартный и не очень понятный:
http://www.developerfusion.com/article/132336/massive-data-parallelism-o...
http://ecn.channel9.msdn.com/content/DanielMoth_CppAMP_Intro.pdf
А судя по этой ссылке и не очень быстрый:
http://codinggorilla.domemtech.com/?p=1135

Единственное достоинство это возможность использования карточек AMD.

Лучше OpenACC и OpenMP к единому стандарту привели бы.

Судя по примерам этот AMP не

Судя по примерам этот AMP не очень стандартный и не очень понятный

в смысле "не очень стандартный" ? спецификация ведь открыта.

А судя по этой ссылке и не очень быстрый

ну естественно. по-идеи задачи догонять OpenCL/Cuda по "скорости" не было.
Даже безотносительно конкретных реализаций (то есть не смотря на то, что поддержка AMP начала появляться недавно, а Cuda/OpenCL давно) - я думаю очевидно, что далеко не всю семантику современных GPGPU будут загонять в AMP.

Лучше OpenACC и OpenMP к единому стандарту привели бы.

набор костыликов, в большинстве своём ориентированный на C и Fortran.

Ну вот из описания в MSDN

Ну вот из описания в MSDN как-то толком непонятно, куда его применять.

Ну то есть с map все понятно, parallel_for_each сделает нечто. B[i] = f(A[i]) понятно как написать.
А чуть сложнее? Ну вот как сортировку сделать, к примеру? Или, того веселее, гистограмму?

там вроде есть блоки, по

там вроде есть блоки, по ихнему - tile:
http://msdn.microsoft.com/en-us/library/hh305254.aspx

The tiled version of parallel_for_each organizes the parallel activities into tiles that have a fixed size and 1, 2, or 3 dimensions, as specified in the tiled_extent argument. Threads in the same tile have access to any variables declared with the tile_static keyword. You can use the tile_barrier::wait Method method to synchronize access to variables declared with the tile_static keyword.

даже барьеры есть.

Да, они там понаписали для

Да, они там понаписали для глупых "C++ AMP for CUDA programmer" - вроде действительно много чего есть.

Правда пока остается непонятным, как получить капабилити видеокарты. Ну там есть атомики/нет атомиков, предельный размер tile_static и все такое прочее. Может это и есть, просто я пока не увидел.

google: "Bitonic Sort Sample

google: "Bitonic Sort Sample using C++ AMP"
(ссылку спаморезка не пустила)