2015-10-24 47 views
1

有沒有辦法從SEXP對象中提取C樣式函數指針?R內部:從SEXP對象中提取函數指針

Writing R Extensions zero-finding example幾乎是我想要的。 f.check的主體從R傳遞到C,然後使用eval進行調用。由於我在CUDA內部工作,因此我無法以此方式在SEXP對象上調用eval,或者直接在Rcpp中使用Function類型。我必須將SEXP中的原始函數指針解壓縮並傳遞給CUDA內核。

+0

我一定很困惑。你需要一個指向R函數的指針,但我不明白在GPU內部這將如何非常有用。 –

+0

我剛剛意識到指向R閉包可能不起作用,但如果有某種方法從'Rcpp :: cppFunction'的輸出中提取C++函數指針,那可能會更好。我的總體目標是在R中指定一個函數,然後在CUDA內核中對其進行評估。 – landau

回答

1

GPU只能運行由專門爲架構設計的代碼組成的內核。我對CUDA知之甚少,但我認爲其原理與OpenCL相同,OpenCL幾乎與C語言一樣,具有處理GPU內存和並行體系結構的API。你不能在GPU中運行R或C++代碼。所有的指針都會給你一個卡在GPU中的數字。您無法從GPU調用主內存中的函數。