技术开发 频道

簡單的 CUDA 程式:VectorAdd

  【IT168 文档】在上一篇的《nVidia CUDA API》中,已經大概介紹了一些寫 CUDA 程式時,必須知道的 API;接下來,就先開始簡單的 CUDA 程式吧!

  這邊舉一個簡單的向量相加的程式來當例子。首先,先定義測試用的資料:

// initial data
int   data_size = 100;
float *dataA = new float[data_size],
      
*dataB = new float[data_size],
      
*dataC = new float[data_size];

for( int i = 0; i < data_size; ++ i )
{
    dataA[i]
= i;
    dataB[i]
= -1 * i;
}

   上面的程式,會宣告 dataA, dataB 兩個 float 的一維 array,同時內部的值都差一個負號;而 dataC 的部分,則是預備用來存放 dataA, dataB 相加後的結果。

  一般版本

  在向量加法的部分,如果以一般 C/C++ 的寫法,可以寫成:

void add_vector_cpu( float* a, float* b, float *c, int size )
{
    
for( int i = 0; i < size; ++ i )
        c[i]
= a[i] + b[i];
}

  而 main 的部分,則只需要呼叫函式就可以了:

add_vector_cpu( dataA, dataB, dataC, data_size );

  在呼叫 add_vector_cpu 後,會在迴圈裡,把 dataA 和 dataB 的每一項各自相加,並把結果記錄在 dataC 中。由於 dataA, dataB 的值都差一個負號,所以 dataC 會是一個所有值都是 0 的 array。

0
相关文章