그래서 CUDAfy에서 복잡한 계산을 수행하므로 CPU에 걸리는 현재 시간을 줄일 수 있으므로 변수를 전달할 수있는 "CUDAfy-ed"메소드를 사용하려고합니다. 예를 들어 .NET Math.Sin (x) 또는 Math.Cos (x) 함수를 사용하여 아이디어와 매우 유사한 값을 반환합니다. 나는 이것을 작동 시키려고 노력하고있다. 그러나 CUDAfy 번역기에서 오류를 뱉어 내고 있기 때문에 CUDAfy의 힘 내에서/가능한지하려고 노력하고 있는가? 아니면 내가 잘못된 경로를 따라이 작업을 할 것인가?CUDAfy 인스턴스화 클래스
예 : MathHelper.cs에서
public static void Main(){
CudafyModule km = CudafyTranslator.Cudafy();
GPGPU gpu = CudafyHost.GetDevice(CudafyModes.Target, CudafyModes.DeviceId);
gpu.LoadModule(km);
double Value;
double[] dev_Value = gpu.Allocate<double>(10);
gpu.Launch(1,1).SumOfSines(dev_Value);
Console.WriteLine(Value);
gpu.FreeAll();}
public static void SumOfSines(double[] Value)
{
int numThreads = thread.blockDim.x * thread.gridDim.x;
int threadID = thread.threadIdx.x + thread.blockIdx.x * thread.blockDim.x;
for (int i = threadID; i < 1000000; i += numThreads)
{
for (double a = 0; a < 100; a++)
{
double angle = MathHelper.DegreesToRadians((double)a); //can I do this?
Value[i] += Math.Sin(angle);
}
}
}
가이 계산을 만드는 방법 DegreesToRadians를 가지고 파일 : 나는이 작업을 수행 할 때
public static double DegreesToRadians(double deg)
{
double rad = deg * (Math.PI/180.0);
return rad;
}
IT는 CUDAfy 번역기에 에러를 뱉어.