1

我渴望了解如何使用 GPU 的并行处理能力。但是,我并不急于制作图形!我尝试了 Cg 的教程,但它似乎很重的图形术语。此外,我似乎无法掌握如何将这样的程序连接到某些输入和输出。

让我们考虑以下非常简单的程序,它显然可以从并行性中受益(忽略缓慢的 HDD 速度):从 2 个文件中读取两个大整数数组,通过添加最后两个的元素创建一个新数组,并将其存储在另一个文件中. 我没有测试它,但这就是我在 C++ 中编码的方式:

#include <iostream>
#include <fstream>
using namespace std;


int main(void)
{
    const int N=10000000;
    int a[N],b[N],c[N];
    ifstream a_source ("file_a",ios::binary);
    ifstream b_source ("file_a",ios::binary);
    ofstream c_target ("file_a",ios::binary);

    a_source.read((char*)a,N*sizeof(int));
    b_source.read((char*)b,N*sizeof(int));

    for(int i=0;i<N;i++)
        c[i]=a[i]+b[i];

    c_target.write((char*)c,N*sizeof(int));
    return 0;
}

你能详细说明我如何使用 Cg 来做这个吗?

4

2 回答 2

2

Cg确实适用于着色器,最好使用CUDA,但是如果您对使用 Cg 和片段着色器一无所知,请查看这个基本示例(基于 2D 网格的计算)。

于 2012-02-10T11:50:49.370 回答
0

尝试看看 C++ AMP http://blogs.msdn.com/b/vcblog/archive/2011/06/15/introducing-amp.aspx

通常,您需要注意,与您需要在代码中投入的额外努力相比,使用双精度时的加速是最小的。这是当您与可以通过编译器开关打开的 6 核 SSE 解决方案进行比较时(并且可能使用英特尔的 VTune 进行性能分析)

于 2012-02-10T11:51:55.250 回答