我有一個例程,設計爲在三種處理模式中的任何一種下調用; SingleCpuThread,ParallelCpuThreads和ParallelGpuThreads。當在Cpu上處理例程時使用Alea Gpu DeviceFunction
在例程中,使用Alea.DeviceFunction執行數學運算,以便在ParallelGpuProcessing模式下調用該例程時符合Alea。
問題:當在其他兩種模式下調用相同的例程,並且正在使用DeviceFunction執行數學運算時,是否使用Gpu並導致開銷和封送處理等?如果是這樣(這會很糟糕),讓同樣的例程使用dotnet的.Math函數而不是.DeviceFunction的最好方法是什麼,而不需要將整個例程複製爲單獨的Cpu-happy和例程的Gpu-happy版本?
感謝您的回覆。如果我理解正確,那麼...... 當應用程序在ParallelGpuThreads(我的枚舉)的處理模式下運行時,那麼我的數據位於Gpu上,並且DeviceFunctions正在Gpu上執行,並且沒有問題。但是,當應用程序在SingleCpuThread,ParallelCpuThreads(我的枚舉)處理模式下運行時,則我的數據位於Cpu上,並且DeviceFunctions可能正在或未正在Gpu上執行,因爲這可能是也可能不是問題,因爲這將需要數據不必要地彙集到Gpu(性能受到影響)。 – cayman
由於DeviceFunctions是否可以在Cpu上進行確定是逐個函數,有沒有這方面的任何文檔或是否有任何其他方法可以確定? 我的程序正在使用的DeviceFunctions是... - DeviceFunction.IsNaN - DeviceFunction.Log10 - DeviceFunction.Sqrt - DeviceFunction.Abs – cayman