/// <summary> /// Split the device into smaller aggregate devices containing one or more compute /// units that all share part of a cache hierarchy. The value accompanying this /// property may be drawn from the following list: /// /// <list type="bullet"> /// <item><see cref="AffinityDomain.Numa"/> - Split the device into sub-devices comprised of compute units that share a NUMA node.</item> /// <item><see cref="AffinityDomain.L4Cache"/> - Split the device into sub-devices comprised of compute units that share a level 4 data cache.</item> /// <item><see cref="AffinityDomain.L3Cache"/> - Split the device into sub-devices comprised of compute units that share a level 3 data cache.</item> /// <item><see cref="AffinityDomain.L2Cache"/> - Split the device into sub-devices comprised of compute units that share a level 2 data cache.</item> /// <item><see cref="AffinityDomain.L1Cache"/> - Split the device into sub-devices comprised of compute units that share a level 1 data cache.</item> /// <item><see cref="AffinityDomain.NextPartitionable"/> - Split the device along the next partitionable affinity domain. The implementation shall find the first level along which the device or sub-device may be further subdivided in the order NUMA, L4, L3, L2, L1, and partition the device into sub-devices comprised of compute units that share memory subsystems at this level.</item> /// </list> /// /// The user may determine what happened by checking <see cref="PartitionType"/> on the sub-devices. /// </summary> /// <param name="affinityDomain">Specifies the cache hierarchy shared by the partitioned compute units.</param> /// <returns>A collection of sub-devices representing the created partitions.</returns> public DisposableCollection <Device> PartitionByAffinityDomain(AffinityDomain affinityDomain) { return(UnsafeNativeMethods.PartitionByAffinityDomain(ID, affinityDomain)); }