cudaMemcpy不';不能在64位中工作

cudaMemcpy不';不能在64位中工作,cuda,32bit-64bit,Cuda,32bit 64bit,我制作了一个非常简单的CUDA内核,它用f[I]=I填充一个包含100个元素的数组(并在另一个内核中使用assert检查它是否确实这样做了) 数组的后半部分未定义 我尝试将compute_uu和sm_uu从32位的默认值从35位更改回20位,但没有成功 我尝试在所有地方添加错误检查,但没有得到任何输出,这意味着所有函数都返回了成功 我搜索过,但似乎没有与64位转换相关的特殊问题。这是什么?这是不正确的: int* a_h[100]; 应该是: int a_h[100]; 您需要一个包含100

我制作了一个非常简单的CUDA内核,它用f[I]=I填充一个包含100个元素的数组(并在另一个内核中使用assert检查它是否确实这样做了)

数组的后半部分未定义

我尝试将compute_uu和sm_uu从32位的默认值从35位更改回20位,但没有成功

我尝试在所有地方添加错误检查,但没有得到任何输出,这意味着所有函数都返回了成功

我搜索过,但似乎没有与64位转换相关的特殊问题。这是什么?这是不正确的:

int* a_h[100];
应该是:

int a_h[100];

您需要一个包含100个
int
值的数组。不是100个
int
指针的数组
int
值的大小在32位和64位之间不会改变
int
指针确实会改变它们的大小。

它以前是如何编译的,真是太神奇了:/谢谢!所以让我在指针类型中写入和读取整数值,甚至不用皱眉。shivers@Francesco当前位置我们不要把这归咎于编译器,好吗。代码没有语法错误,代码中也没有任何无效的内存访问或强制转换。如果有什么困扰您的地方,我建议您学习Python….@Talonmes在我看来,整数和指针在逻辑上是完全不同的,但可能只有我一个人。@Francesco:而且,刚刚用gcc编译了您的代码,我得到了以下编译器警告:
warning:格式'%d'需要'int'类型的参数,但参数3的类型为“int*”
。因此,要么您需要一个更好的编译器,要么您也忽略了编译器警告
f[0]=0
f[1]=2
f[2]=4
...
int* a_h[100];
int a_h[100];