赞
踩
以下是在Visual Studio 2013下测试的AMP加速代码:转自:Wikipedia
- #include <amp.h> // C++ AMP 头文件
- #include <iostream>
- using namespace concurrency; //C++ AMP 命名空间
-
- const int size = 5; // 定义数组大小
-
- void TestCPPAMP() {
- int aCPU[] = { 1, 1, 1, 1, 1 };
- int bCPU[] = { 3, 3, 3, 3, 3 };
- int cCPU[size];
-
- // 定义C++ AMP封装对象
- array_view<const int, 1> a(size, aCPU); //a是aCPU在并行计算硬件(显卡)上的拷贝
- array_view<const int, 1> b(size, bCPU);
- array_view<int, 1> c(size, cCPU);
-
- parallel_for_each( // C++ AMP 并行代码
- c.extent, // 定义并行计算的大小
- [=](index<1> idx) // [=]是lambda函数中的捕捉从句,index是数组下标
- restrict(amp) // 通知编译器此处为C++ AMP代码
- {
- c[idx] = a[idx] + b[idx];
- }
- );
-
- // 打印结果
- for (int i = 0; i < size; i++) {
- std::cout << c[i] << "\n"; // 结果应为 4, 4, 4, 4, 4
- }
- }
-
- int main(void)
- {
- TestCPPAMP();
- getchar();
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。