예제 #1
0
 public OpenCLSytem(string kernel_source)
 {
     OpenCLEnvironment.SetupSingleDevice("*A*", CL.OpenCLDeviceTyp.Cpu);
     m_pCommandQueue = OpenCLEnvironment.CreateCommandQueue();
     m_pProgram      = OpenCLEnvironment.CreateProgramFromSource(kernel_source, "testProgramm");
     m_pProgram.Build(0, null);
     m_pKernel = m_pProgram.CreateKernel("add");
 }
예제 #2
0
 public Example(string path, Game pGame)
 {
     OpenCLEnvironment.SetupSingleDevice("*A*", OpenCLDeviceTyp.Cpu, pGame);
     m_pCommandQueue = OpenCLEnvironment.CreateCommandQueue();
     m_pProgram      = OpenCLEnvironment.CreateProgramFromSource(System.IO.File.ReadAllText(path), "testProgramm");
     m_pProgram.Build(0, null);
     m_pKernel = m_pProgram.CreateKernel("add");
 }
예제 #3
0
        public void popCorn()
        {
            float[] a = new float[WORKGROUP_SIZE];
            float[] b = new float[WORKGROUP_SIZE];

            for (int i = 0; i < WORKGROUP_SIZE; i++)
            {
                a[i] = 1.0f * i;
                b[i] = 1.0f * i;
            }
            m_a = OpenCLEnvironment.CreateBuffer("bufferA", BufferFlags.ReadOnly | BufferFlags.CopyHostPtr,
                                                 WORKGROUP_SIZE, BufferType.Float, a);
            m_b = OpenCLEnvironment.CreateBuffer("bufferB", BufferFlags.ReadOnly,
                                                 WORKGROUP_SIZE, BufferType.Float);
            m_c = OpenCLEnvironment.CreateBuffer("bufferC", BufferFlags.WriteOnly,
                                                 WORKGROUP_SIZE, BufferType.Float);

            Events ev = m_pCommandQueue.EnqueueWriteBuffer(m_b, true, 0, (sizeof(float) * WORKGROUP_SIZE), b);

            ev.ReleaseEvents();

            m_pKernel.SetArguments(m_a, m_b, m_c);
            m_pCommandQueue.Finish();
        }