2011-08-24 86 views
0

所以,我想我有一個很奇怪的問題。在CUDA程序中添加功能

所以,假設我已經有一個程序放在我的GPU上,並且在那個程序中我調用了一個函數X.但是那個函數X還沒有被聲明。

我希望能夠動態地修改該函數X,方法是完全更改代碼並將其放入程序中,而不用重新編譯其餘部分或丟失任何指針。

爲了將它與我們大多數人都知道的東西進行比較,我希望能夠像OpenGL中的着色器那樣做。在執行過程中,我可以更改一個着色器的代碼,只重新編譯該着色器,激活該程序,現在我使用這個着色器。

那麼,有沒有可能。或者我需要一直重新編譯整個事物。如果我必須重新編譯,是否會丟失我在全局內存中創建的各種數組?

由於

W¯¯

+1

你能否提供一個代碼示例來演示你想要做什麼?這聽起來像使用函數指針可能是一個解決方案,但你的問題陳述有點含糊。 –

+0

我不確定我是否理解了這個問題,但全局內存在不同的內核調用中可用。因此,您可以在給定時間更改內核調用,並訪問已分配的全局內存空間。共享內存空間不會發生這種情況。 – pQB

+0

對不起,我還沒有任何源代碼......它是爲我的未來項目! – widgg

回答

1

如果使用NVCC的-cuda標誌進行編譯,就可以得到中間體C++源,其流PTX到處理器。理論上,您可以後處理該中間輸出以動態生成PTX並將其發送出去。你甚至可以讓PTX自我修改,但這是我的聯盟。

+0

我會研究一下......謝謝 – widgg