我正在寫可以使用函子的cuda內核,這些函數是作爲模板參數傳遞的。例如:有沒有辦法避免在很多文件中實例化大量模板?
template<typename Functor> void myKernel(float arg1, float* arg2, Functor f) {
// Do stuff that will involve f
}
這些函子在頭文件,我包括在每個CPP文件中定義,並且爲每一個我必須與所有的函子實例化所有的內核:
template<> myKernel<Add>(float, float*, Add)
template<> myKernel<Sub>(float, float*, Sub)
這是很多代碼重複,我們必須記住爲每個新的函子添加一個新行。 有沒有辦法定義所有這一切?
預處理宏? – Amit
您是否知道顯式實例化? https://msdn.microsoft.com/en-us/library/by56e477.aspx –
我希望有一個不涉及marcros的解決方案。 – Pafnouti