簡體   English   中英

cuda中矢量加法的分段故障

[英]Segmentation fault with vector addition in cuda

我正在搞亂cuda的玩具程序。

我聲明一個浮點數組傳遞到gpu和一個數字到該浮點數組的每個元素,並將其傳回主機系統並打印數組。 然而,這沒有成功,它給我分段錯誤。

這是代碼

#include <iostream>
using namespace std;

__global__ void kern(float *a, float *C){
    for (int i = 0; i < 3; i++) C[i] = a[i] + i;
}

int main(){
    float *A = new float[3];
    for(int i = 0; i < 3; i++){
        A[i] = i;
    }

    float * d;
    float * C;
    cudaMalloc(&C, sizeof(float)*3);
    cudaMalloc(&d, sizeof(float)*3);
    cudaMemcpy(&d, A, sizeof(float)*3, cudaMemcpyHostToDevice);
    kern<<<1, 1>>>(d, C);

    cudaMemcpy(&A, C, sizeof(float)*3, cudaMemcpyDeviceToHost);

    cout << A[2];

}

另外我對Malloc不熟悉我的大部分經驗都是使用cpp,因此我對新的數據類型[]感覺更舒服; Cuda還有相同的東西嗎?

將其更改為:

cudaMemcpy(&d, A, sizeof(float)*3, cudaMemcpyHostToDevice);
cudaMemcpy(&A, C, sizeof(float)*3, cudaMemcpyDeviceToHost);

對此:

cudaMemcpy(d, A, sizeof(float)*3, cudaMemcpyHostToDevice);
cudaMemcpy(A, C, sizeof(float)*3, cudaMemcpyDeviceToHost);

此外,通過CUDA調用存儲返回代碼總是更好,它們可以讓您更好地了解出現了什么問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM