2011-08-24 85 views
0

所以,我想我有一个很奇怪的问题。在CUDA程序中添加功能

所以,假设我已经有一个程序放在我的GPU上,并且在那个程序中我调用了一个函数X.但是那个函数X还没有被声明。

我希望能够动态地修改该函数X,方法是完全更改代码并将其放入程序中,而不用重新编译其余部分或丢失任何指针。

为了将它与我们大多数人都知道的东西进行比较,我希望能够像OpenGL中的着色器那样做。在执行过程中,我可以更改一个着色器的代码,只重新编译该着色器,激活该程序,现在我使用这个着色器。

那么,有没有可能。或者我需要一直重新编译整个事物。如果我必须重新编译,是否会丢失我在全局内存中创建的各种数组?

由于

W¯¯

+1

你能否提供一个代码示例来演示你想要做什么?这听起来像使用函数指针可能是一个解决方案,但你的问题陈述有点含糊。 –

+0

我不确定我是否理解了这个问题,但全局内存在不同的内核调用中可用。因此,您可以在给定时间更改内核调用,并访问已分配的全局内存空间。共享内存空间不会发生这种情况。 – pQB

+0

对不起,我还没有任何源代码......它是为我的未来项目! – widgg

回答

1

如果使用NVCC的-cuda标志进行编译,就可以得到中间体C++源,其流PTX到处理器。理论上,您可以后处理该中间输出以动态生成PTX并将其发送出去。你甚至可以让PTX自我修改,但这是我的联盟。

+0

我会研究一下......谢谢 – widgg