当在__global__
Cuda中时,我想永久地从内存中清除变量访问冲突。样品:
for (uint i = 0; i < 4294967295; i++)
{
int len = count_numbers(i);
char * iStr = new char[len]();
auto iChar = to_str(iStr, i);
uint p1, p2, p3, p4;
get_md5(iChar, len, &p1, &p2, &p3, &p4);
if (myhashp1 == p1 && myhashp2 == p2 && myhashp3 == p3 && myhashp4 == p4)
{
printf("good!");
printf(" i=");
printf("%d", i);
printf("\n");
bool good = true;
break;
}
else
{
bool good = false;
}
delete (&iChar);
delete (&iStr);
}
CUDA Memory Checker检测到1个线程导致访问冲突。
答案 0 :(得分:1)
您正在使用new的阵列版本:
char * iStr = new char[len]();
所以你需要删除数组版本:
delete[] iChar;
我假设to_str()
在填写后只返回相同的指针,所以不要删除它,你将删除两次相同的东西。