http://developer.download.nvidia.com/CUDA/training/GTC_Express_Sarah_Tariq_June2011.pdf
在上面的教程(幻灯片29)中,他们启动了3个指向int的指针:
int *a, *b, *c;
Run Code Online (Sandbox Code Playgroud)
显然这是类型(int*),但它们以某种方式使内核可以使用语法访问其索引 a[index]
他们还使用一些(对我来说)未知命令来初始化它们的值:
a = (int *)malloc(size); random_ints(a, N);
Run Code Online (Sandbox Code Playgroud)
那么这个命令做什么呢?首先,它将指针*a转换为指向一个int(但后来a神奇地变成了一个向量).我找不到任何关于random_int精确做什么的来源(我的编译器也不认识它,因为它可能需要一些包含).我猜它a使用随机整数形成一个长度为N的向量(虽然a是类型int).
我尝试通过与vector <int> * a;etc等同样的事情解决这个问题,但是我仍然无法将其传递给我的内核(无论我尝试什么,它都不会添加元素).
我在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
Run Code Online (Sandbox Code Playgroud)
int例
int* p = (int*)malloc(12 * sizeof(int)); // C way equivalent to C++: new int [12]
Run Code Online (Sandbox Code Playgroud)
请注意,您必须释放此指针free(p),而不是通过delete [] p.
例:
void random_ints(int* a, int N)
{
int i;
for (i = 0; i < N; ++i)
a[i] = rand();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7750 次 |
| 最近记录: |