Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在cuda内核中添加向量元素? #包括 #包括 #包括 #包括 使用名称空间std; __全局无效核(向量*a,向量*b,向量*c) { int index=threadIdx.x; c[指数]=a[指数]+b[指数]; }; int main() { //帕尔·康斯坦丁初始值 int N=3; 载体a(3,1); 载体b(3,1); 向量c(3,0); int size=N*sizeof(向量); //设备变量 向量d_a; 向量d_b; 向量d_c; //字节设备geheugen vrijmaken操作位置&a Cudamaloc((空白**)和a,尺寸); Cudamaloc((空心**)和b,尺寸); Cudamaloc((空隙**)和c,尺寸); //Kopieer投入公司van&a naar&d_a cudaMemcpy(&d_a,&a,size,cudamemcpyhostodice); cudaMemcpy(&d_b,&b,size,cudamemcpyhostodice); printf((char*)a[1]); printf((char*)c[1]); //沃尔核 内核(d_a、d_b和d_c); //Kopieer resultaat terug naar主机 cudaMemcpy(&c和&d_c,尺寸,cudaMemcpyDeviceToHost); printf((char*)c[1]); 返回0; };_C++_Cuda - Fatal编程技术网

C++ 如何在cuda内核中添加向量元素? #包括 #包括 #包括 #包括 使用名称空间std; __全局无效核(向量*a,向量*b,向量*c) { int index=threadIdx.x; c[指数]=a[指数]+b[指数]; }; int main() { //帕尔·康斯坦丁初始值 int N=3; 载体a(3,1); 载体b(3,1); 向量c(3,0); int size=N*sizeof(向量); //设备变量 向量d_a; 向量d_b; 向量d_c; //字节设备geheugen vrijmaken操作位置&a Cudamaloc((空白**)和a,尺寸); Cudamaloc((空心**)和b,尺寸); Cudamaloc((空隙**)和c,尺寸); //Kopieer投入公司van&a naar&d_a cudaMemcpy(&d_a,&a,size,cudamemcpyhostodice); cudaMemcpy(&d_b,&b,size,cudamemcpyhostodice); printf((char*)a[1]); printf((char*)c[1]); //沃尔核 内核(d_a、d_b和d_c); //Kopieer resultaat terug naar主机 cudaMemcpy(&c和&d_c,尺寸,cudaMemcpyDeviceToHost); printf((char*)c[1]); 返回0; };

C++ 如何在cuda内核中添加向量元素? #包括 #包括 #包括 #包括 使用名称空间std; __全局无效核(向量*a,向量*b,向量*c) { int index=threadIdx.x; c[指数]=a[指数]+b[指数]; }; int main() { //帕尔·康斯坦丁初始值 int N=3; 载体a(3,1); 载体b(3,1); 向量c(3,0); int size=N*sizeof(向量); //设备变量 向量d_a; 向量d_b; 向量d_c; //字节设备geheugen vrijmaken操作位置&a Cudamaloc((空白**)和a,尺寸); Cudamaloc((空心**)和b,尺寸); Cudamaloc((空隙**)和c,尺寸); //Kopieer投入公司van&a naar&d_a cudaMemcpy(&d_a,&a,size,cudamemcpyhostodice); cudaMemcpy(&d_b,&b,size,cudamemcpyhostodice); printf((char*)a[1]); printf((char*)c[1]); //沃尔核 内核(d_a、d_b和d_c); //Kopieer resultaat terug naar主机 cudaMemcpy(&c和&d_c,尺寸,cudaMemcpyDeviceToHost); printf((char*)c[1]); 返回0; };,c++,cuda,C++,Cuda,提前问候和感谢。您不能在设备代码中使用STL。。。您将不得不使用数组或其他CUDA构造,如。好的,这可能解决了100000000个未来问题,确实需要阅读一些CUDA编程。在CUDA方面,可能会感兴趣(它不使用STL向量)。在推力方面,您可能会感兴趣。如果您熟悉STL,您会发现它非常容易理解。使用size()函数查找特定容器(如vector)的大小。 #include <cuda.h> #include <cuda_runtime.h> #include <iostr

提前问候和感谢。

您不能在设备代码中使用STL。。。您将不得不使用数组或其他CUDA构造,如。

好的,这可能解决了100000000个未来问题,确实需要阅读一些CUDA编程。在CUDA方面,可能会感兴趣(它不使用STL向量)。在推力方面,您可能会感兴趣。如果您熟悉STL,您会发现它非常容易理解。使用
size()
函数查找特定容器(如vector)的大小。
#include <cuda.h>
#include <cuda_runtime.h>
#include <iostream>
#include <vector>
using namespace std;

__global__ void kernel(vector <int> *a,vector <int> *b, vector <int> *c)
{
    int index=threadIdx.x;
    c[index]=a[index]+b[index];
};

int main ()
{
    //Paar constanten initializeren
    int N=3;
    vector <int> a (3,1);
    vector <int> b (3,1);
    vector <int> c (3,0);
    int size=N*sizeof(vector <int>);
    //Device variabelen
    vector <int> d_a;
    vector <int> d_b;
    vector <int> d_c;

    //<size> bytes device-geheugen vrijmaken op locatie &a
    cudaMalloc( (void **) &a, size);
    cudaMalloc ( (void **) &b, size);
    cudaMalloc ( (void **) &c, size);

    //Kopieer inputs van &a naar &d_a
    cudaMemcpy(&d_a,&a,size,cudaMemcpyHostToDevice);
    cudaMemcpy(&d_b,&b,size,cudaMemcpyHostToDevice);

    printf( (char *) a[1]);
    printf( (char *) c[1]);
    //Voer kernel uit

    kernel<<<N,1>>>(&d_a,&d_b,&d_c);

    //Kopieer resultaat terug naar host 
    cudaMemcpy(&c,&d_c,size,cudaMemcpyDeviceToHost);

    printf( (char *) c[1]);

    return 0;
};