J'explore différentes options pour mapper des constructions de code C# courantes en code CUDA C++ pour l'exécution sur un GPU. La structure du système est la suivante (flèches représentent les appels de méthode):Transformation de méthodes C# en méthodes C++
C# programme -> C# GPU lib -> implémentation C++ CUDA lib
Une méthode dans la bibliothèque GPU pourrait ressembler à ceci:
public static void Map<T>(this ICollection<T> c, Func<T,T> f)
{
//Call 'f' on each element of 'c'
}
Ceci est une méthode d'extension à ICollection <> types qui exécute une fonction sur chaque élément. Cependant, ce que je voudrais faire, c'est appeler la bibliothèque C++ et lui faire exécuter les méthodes sur le GPU. Cela nécessiterait que la fonction soit, d'une manière ou d'une autre, traduite en code C++. Est-ce possible? Pour développer, si l'utilisateur de ma bibliothèque exécute une méthode (en C#) avec du code arbitraire, je voudrais traduire ce code dans l'équivélant C++ de sorte que je puisse l'exécuter sur CUDA. J'ai l'impression qu'il n'y a pas de moyen facile de le faire, mais j'aimerais savoir s'il y a moyen de le faire ou d'obtenir le même résultat. Une chose dont je m'interrogeais est de capturer la fonction à traduire dans une expression et de l'utiliser pour la mapper à un équivélant C++. Quelqu'un a une expérience avec ça?
GRAND lien, merci !!! – endian
Je pense que vous trouverez que vous ne pouvez pas exécuter C# sur un GPU comme vous l'avez dit, mais plutôt que vous pouvez lancer des noyaux CUDA à partir de C#. – cr333