CUDA:在内核中使用 realloc

发布于 2024-10-23 23:04:55 字数 81 浏览 1 评论 0原文

我知道可以在内核内部使用malloc在GPU的全局内存上分配内存。是否也可以使用realloc

I know that it is possible to use malloc inside the kernel to allocate memory on GPU's global memory. Is it also possible to use realloc?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

别低头,皇冠会掉 2024-10-30 23:04:55

您可以为您的数据类型编写自己的重新分配设备函数。

只需为新数组分配新空间,将旧值复制到新数组,释放旧数组空间,返回具有更多空间的新数组。

大约像下面的代码片段:

__device__ MY_TYPE* myrealloc(int oldsize, int newsize, MY_TYPE* old)
{
    MY_TYPE* newT = (MY_TYPE*) malloc (newsize*sizeof(MY_TYPE));

    int i;

    for(i=0; i<oldsize; i++)
    {
        newT[i] = old[i];
    }

    free(old);
    return newT;
}

但一定要调用它,如果你真的需要它。还要添加适当的错误检查。

You could write you own realloc device function for your data type.

Just allocate the new space for a new array, copy the old values to the new, free the old array space, return the new with more space.

Approximately like the following code fragment:

__device__ MY_TYPE* myrealloc(int oldsize, int newsize, MY_TYPE* old)
{
    MY_TYPE* newT = (MY_TYPE*) malloc (newsize*sizeof(MY_TYPE));

    int i;

    for(i=0; i<oldsize; i++)
    {
        newT[i] = old[i];
    }

    free(old);
    return newT;
}

But be sure to call it, if you really need it. Also add proper error checking.

墨小沫ゞ 2024-10-30 23:04:55

在Cuda编程指南中,当他们介绍mallocfree函数时,没有提到realloc。我会假设它不存在。

如果您想确切地了解它,为什么不编写一个简单的内核并尝试使用它呢?

In the Cuda Programming Guide, when they introduce malloc and free functions, there is no mention of realloc. I would assume that it does not exist.

If you want to know it for sure, why don't you write a simple kernel and try using it?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文