Пример #1
0
        public ReadOnlyCollection <ComputeDevice> CreateSubDevices(uint num_devices)
        {
            CLDeviceHandle[] handles = new CLDeviceHandle[num_devices];
            cl_device_partition_property[] properties = new cl_device_partition_property[] {
                cl_device_partition_property.CL_DEVICE_PARTITION_EQUALLY,
                (cl_device_partition_property)(uint)(MaxComputeUnits / num_devices),
                0
            };
            ComputeErrorCode error = CL12.CreateSubDevices(Handle, num_devices, properties, handles, out num_devices);

            ComputeException.ThrowOnError(error);

            ComputeDevice[] subDevices = new ComputeDevice[num_devices];
            for (int i = 0; i < num_devices; i++)
            {
                subDevices[i] = new ComputeDevice(this.Platform, handles[i]);
            }

            this.subDevices = subDevices;

            return(new ReadOnlyCollection <ComputeDevice> (this.subDevices));
        }