C++AMP
お久し振りです。しばらくプログラムを書いていなかったのですが、VisualStudio 2015 RCも出たことでC++を書いています。今回はC++AMPを触ってみました。
特定の行列のなかの部分行列にアクセスし、GPUで演算を行うものをC++AMPを使って書いたものです。処理速度はともかく、とても簡素な記述でGPUに対して処理できるのでとても便利ですね。
#include <iostream> #include <amp.h> int main() { using namespace concurrency; array_view<int, 2> av(3, 3); parallel_for_each(av.extent, [av](index<2> i) restrict(amp) { av[i] += (i[0] + 1) * 10 + (i[1] + 1); }); auto av_sub = av.section(index<2>(1, 0), extent<2>(2, 2)); parallel_for_each(av_sub.extent, [av_sub](index<2> i) restrict(amp) { av_sub[i] += 100; }); for (int i = 0; i < 3; ++i) { for (int j = 0; j < 3; ++j) { std::cout << av(i, j) << "\t"; } std::cout << std::endl; } std::getchar(); return 0; }