CUDA 兩個陣列相加

2021-09-02 15:43:28 字數 1883 閱讀 3735

使用cuda實現兩個陣列的相加,熟悉cuda相關函式的使用。

#include #include __global__ void addkernel( int* c, const int* a, const int* b )

cudaerror_t cuda_add( const int* a, const int* b, int* out, int size )

//2、分配視訊記憶體空間

cudastatus= cudamalloc( (void**)&dev_a, size * sizeof(int) );

if( cudastatus != cudasuccess )

cudastatus= cudamalloc( (void**)&dev_b, size * sizeof(int) );

if( cudastatus != cudasuccess )

cudastatus= cudamalloc( (void**)&dev_c, size * sizeof(int) );

if( cudastatus != cudasuccess )

//3、將宿主程式資料複製到視訊記憶體中

cudastatus= cudamemcpy( dev_a, a, size * sizeof( int ), cudamemcpyhosttodevice );

if( cudastatus != cudasuccess )

cudastatus= cudamemcpy( dev_b, b, size * sizeof( int ), cudamemcpyhosttodevice );

if( cudastatus != cudasuccess )

//4、執行程式,宿主程式等待顯示卡執行完畢

addkernel<<<1,size>>>( dev_c, dev_a, dev_b );

//5、查詢核心初始化的時候是否出錯

cudastatus= cudagetlasterror( );

if( cudastatus != cudasuccess )

//6、與核心同步等待執行完畢

cudastatus= cudadevicesynchronize( );

if( cudastatus != cudasuccess )

//7、獲取資料

cudastatus= cudamemcpy( out, dev_c, size * sizeof( int ), cudamemcpydevicetohost );

if( cudastatus != cudasuccess )

}cudafree(dev_c );

cudafree(dev_a );

cudafree(dev_b );

return cudastatus;

}int main( int argc, char** argv ) ;

const int b[arraysize] = ;

int c[arraysize] = ;

int i;

cudadeviceprop prop;

//獲取cuda數目

int count;

cudagetdevicecount(&count);

printf("cuda數==%d\n",count);

for(i=0;i編譯執行指令

# nvcc first_cuda.cu -o first_cuda

# ./first_cuda

執行結果

cuda數==1

compute capability: 3.5

shared mem per mp: 49152

運算結果是:

c陣列[11, 22, 33, 44, 55]

兩個數字相加

兩個數字相加 題幹 給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3...

不用 實現兩個數相加

方法一 用邏輯運算 a b 表示a b 中每位不進製的和,a b 1 二進位制加法 1 1 1,把1左移以為10,1 1 10,表示a b 所有進製 思想是兩個數字相加中能分解成 不進製的和 每一位相加的進製 a b a b a b 1 如果a b 0的時候 a b a b 負整數運算也可以,因為補...

兩個數相加(python版)

給出兩個非空的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照逆序的方式儲存的,並且它們的每個節點只能儲存一位數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。class solution object def a...