В общем мой вопрос из разряда, а как это работает ? В частности библиотека Cudafy (
http://cudafy.codeplex.com)
Например в примере ниже, вызывается метод статической функции thekernel() класса simple_kernel из другого класса gpu.
Если честно, никогда бы не подумал что это возможно.
Прочитал статью из
msdn.microsoft.com/en-us/library/dd264736.aspx единственное, что понял динамическая компоновка, позволяет избежать ошибок на этапе компиляции, но не во время выполнения.
Поэтому до сих пор больше вопросов, чем ответов.
/*
* This software is based upon the book CUDA By Example by Sanders and Kandrot
* and source code provided by NVIDIA Corporation.
* It is a good idea to read the book while studying the examples!
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Cudafy;
using Cudafy.Host;
using Cudafy.Translator;
namespace CudafyByExample
{
public class simple_kernel
{
public static void Execute()
{
CudafyModule km = CudafyTranslator.Cudafy(eArchitecture.OpenCL);
GPGPU gpu = CudafyHost.GetDevice(CudafyModes.Target, CudafyModes.DeviceId);
gpu.LoadModule(km);
gpu.Launch().thekernel(); // or gpu.Launch(1, 1, "kernel");
Console.WriteLine("Hello, World!");
}
[Cudafy]
public static void thekernel()
{
}
}
}
>