因爲沒有使用profiler,僅僅經過簡單的傳輸函數測試,以下測試了10000個點,1000000個點,100000000個點的速度:數組
均按時鐘週期來計時,經過MAX調整數據函數
int main(){ clock_t start,finish; int *d_data,*h_data; h_data = (int *)calloc(MAX, sizeof(int)); memset(h_data,0,MAX*sizeof(int)); cudaMalloc((void **) &d_data,MAX*sizeof(int)); start = clock(); cudaMemcpy(d_data,h_data,MAX*sizeof(int),cudaMemcpyHostToDevice); cudaMemcpy(h_data,d_data,MAX*sizeof(int),cudaMemcpyDeviceToHost); finish = clock(); cudaFree(d_data); free(h_data); cout<<"time is "<<finish-start<<endl; getchar(); return 0; }
測試結果測試
測試結果 | 10,000個節點 | 1,000,000個節點 | 100,000,000個節點 |
第一次測試 | 0 | 7 | 822 |
第二次測試 | 0 | 8 | 715 |
第三次測試 | 1 | 7 | 696 |
測試圖表以下:spa
因此在小批量數組的狀況下,徹底能夠在cpu中完成數據操做,而後device上面作簡單的加和或者乘積運算。code