コード例 #1
0
ファイル: OpenCL.cs プロジェクト: o70078/C-LifeGame
        public static IntPtr CreateProgramWithBinary(IntPtr context, uint num_devices, IntPtr[] device_list, IntPtr[] lengths, byte[][] binaries, int[] binary_status, out ErrorCode errcode_ret)
        {
            IntPtr program;

            GCHandle[] pinnedArrays = new GCHandle[binaries.Length];
            // Pin arrays
            for (int i = 0; i < binaries.Length; i++)
            {
                pinnedArrays[i] = GCHandle.Alloc(binaries[i], GCHandleType.Pinned);
            }

            IntPtr[] pointerArray = new IntPtr[binaries.Length];
            for (int i = 0; i < binaries.Length; i++)
            {
                pointerArray[i] = pinnedArrays[i].AddrOfPinnedObject();
            }

            program = OpenCLAPI.clCreateProgramWithBinary(context, num_devices, device_list, lengths, pointerArray, binary_status, out errcode_ret);

            for (int i = 0; i < binaries.Length; i++)
            {
                pinnedArrays[i].Free();
            }

            return(program);
        }