Я изучаю различные варианты сопоставления общих конструкций кода C# с кодом C++ CUDA для работы на графическом процессоре. Структура системы выглядит следующим образом (стрелки обозначают вызовы методов):Превращение методов C# в методы C++
C# программы -> C# GPU Lib -> C++ CUDA реализация Lib
Метод в библиотеке GPU может выглядеть примерно так:
public static void Map<T>(this ICollection<T> c, Func<T,T> f)
{
//Call 'f' on each element of 'c'
}
Это метод расширения для ICollection <> типы, которые выполняют функцию для каждого элемента. Однако, что я хотел бы сделать, это вызвать библиотеку C++ и заставить ее запускать методы на графическом процессоре. Это потребует, чтобы функция каким-то образом была переведена на C++-код. Это возможно?
Чтобы разработать, если пользователь моей библиотеки выполняет метод (в C#) с каким-либо произвольным кодом в нем, я хотел бы перевести этот код в эквивалент C++, чтобы я мог запускать его на CUDA. У меня такое ощущение, что нет простого способа сделать это, но я хотел бы знать, есть ли способ сделать это или добиться некоторого эффекта.
Одна вещь, о которой мне было интересно, - это захват функции для перевода в выражении и ее использование для сопоставления с эквивалентом C++. У кого-нибудь есть опыт?
БОЛЬШАЯ ссылка, спасибо! – endian 2008-10-14 08:06:09