c++ - random_ints(a,N) 有什么作用以及如何在我的代码中使用它?

标签 c++ cuda

<分区>

http://developer.download.nvidia.com/CUDA/training/GTC_Express_Sarah_Tariq_June2011.pdf

在上面的教程(幻灯片 29)中,他们启动了 3 个指向 int 的指针:

int *a, *b, *c;

显然这是类型 (int *),但它们以某种方式使内核可以使用语法 a[index] 访问其索引。

他们还使用一些(对我来说)未知的命令来初始化他们的值:

a = (int *)malloc(size); random_ints(a, N);

那么这个命令有什么作用呢?首先,它将指针 *a 转换为指向一个 int(但后来 a 神奇地变成了一个 vector )。我找不到任何关于 random_ints 精确功能的来源(而且我的编译器也无法识别它,因为它可能需要一些包含)。我猜它使 a具有随机整数的长度为 N 的 vector (尽管 a 的类型为 int )。

我尝试通过对 vector <int> * a; 做同样的事情来解决这个问题等等等等,但我仍然无法将其传递给我的内核(无论我尝试什么,它都不会添加元素)。

我在 C++ 中工作。提前致谢。

编辑:这可能是伪代码吗?因为显式 C++ 示例以不同的(可理解的方式)执行此操作

最佳答案

  • 在C/C++中你可以像普通数组一样使用指针。见:

例子

int* p = new int[2];
p[1] = 2;  
*(p + 1) = 2; // same as line above - just other syntax
*(1 + p) = 2; // and other way
 1[p] = 2; // don't use it - but still valid
  • 您可以在 C++ 中通过 malloc 分配内存(它源自 C 方式)但仅限于 POD 类型,如 int

例子

int* p = (int*)malloc(12 * sizeof(int)); // C way equivalent to C++: new int [12]

请注意,您必须通过free(p) 释放此指针,而不是通过delete [] p

  • 我猜想这个函数的实现只是将N个随机数赋给指针表示的int数组:

例子:

void random_ints(int* a, int N)
{
   int i;
   for (i = 0; i < N; ++i)
    a[i] = rand();
}

关于c++ - random_ints(a,N) 有什么作用以及如何在我的代码中使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13002182/

相关文章:

c++ - 用于反转 C++ 中以零结尾的数字

c++ - 在控制台应用程序中使用 GDI+

python - 异步内核启动后返回 pyCUDA 中的主机代码

c++ - 如何使用构造函数声明指向用户定义对象的指针?

c++ - 无法将 'v8::MaybeLocal<v8::String>' 转换为 'v8::Local<v8::Value>'

c++ - 错误/usr/include/string.h :652:42: error: ‘memcpy’ was not declared in this scope while building caffe

c - Cuda 中的纹理坐标

c - CUDA 上的二维数组

arrays - 从示例代码实现 CUDA VecAdd

c++ - 如何在应用程序中使用四核 CPU