J'ai une routine qui est conçue pour être appelée dans l'un des trois modes de traitement; SingleCpuThread, ParallelCpuThreads et ParallelGpuThreads.Utilisation de Alea Gpu DeviceFunction lorsque la routine est traitée sur le processeur
Dans la routine, le calcul est effectué à l'aide de Alea.DeviceFunction afin d'être conforme à Alea lorsque la routine est appelée dans le mode ParallelGpuProcessing. Question: Lorsque la même routine est appelée sous les deux autres modes, et que le calcul est effectué en utilisant DeviceFunction, est-ce en utilisant le Gpu et en encourageant le surcoût et le marshaling, etc.? Et si c'est le cas (ce qui serait mauvais), quelle est la meilleure façon de laisser la même routine utiliser les fonctions .Math de dot net au lieu de .DeviceFunction, sans dupliquer la routine entière pour les versions séparées Cpu-happy et Gpu-happy de la routine ?
Merci pour votre réponse. Si je vous comprends bien, alors ... Lorsque l'application s'exécute en mode de traitement ParallelGpuThreads (mon énumération), alors mes données sont sur le GPU et les DeviceFunctions s'exécutent sur le GPU, et il n'y a aucun problème. Cependant, lorsque l'application s'exécute sous les modes de traitement SingleCpuThread, ParallelCpuThreads (mes enums), alors mes données sont sur le CPU et les DeviceFunctions peuvent ou non s'exécuter sur le GPU, ce qui peut poser problème ou non, cela exigerait que les données soient rassemblées en Gpu inutilement (un coup de performance). – cayman
Étant donné que la fonction DeviceFunctions est capable de fonctionner sur Cpu est fonction par fonction, existe-t-il une documentation à ce sujet ou existe-t-il un autre moyen de savoir avec certitude? Les DeviceFunctions que mes routines utilisent sont ... - DeviceFunction.IsNaN - DeviceFunction.Log10 - DeviceFunction.Sqrt - DeviceFunction.Abs – cayman