如何在CUDA内核中添加向量元素
How can I add vector elements in a cuda kernel?
#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;
};
因此,这是我的基本C 向量添加程序,尽管它不会编译,因为它不知道该在添加索引时该如何处理" "(" no oterator" "匹配这些操作数")。有人知道为什么这在内核内不起作用吗?我认为这可能与它是 host 函数或类似的事实有关,尽管我不知道如何解决这个问题。
问候,预先感谢。
您不能在设备代码中使用STL ...您将不得不使用数组或其他CUDA构造(例如推力库)。
相关文章:
- 添加存储在向量中的大整数的函数出现问题
- 不允许在向量中添加更多元素
- 如何将元素添加到向量的字符串位置
- 有没有办法向这个向量添加元素?
- 这种方式是否可以接受向向量添加unique_ptr?
- C++:添加新结构时,结构指针向量中的所有元素都会更新
- C++ 将子类的对象添加到父类的向量中
- 如何在提升间进程中构建具有给定计数的向量并向其添加元素
- 将不同类型的变量添加到向量中
- 将树节点添加到向量向量中的 n 元树遍历的平均和最坏情况时间复杂度是多少?
- 使用 std::transform 将向量向量 (a) 添加到另一个向量向量 (b)
- 继承层次结构并将元素添加到向量
- 测试驱动开发 c++:如何将对象添加到向量中,将歌曲添加到播放列表并对其进行测试
- 如何将对象添加到类中的静态向量
- 对象如何将自身添加到对象类中的向量中?
- 为什么我们需要在优先级队列声明中添加一个向量作为参数?
- C++ 如何在向量中添加向量?vector.push_back( 向量<> )?
- 如何在CUDA内核中添加向量元素
- 向 NS2 添加向量;编译器错误
- 向向量添加向量