Interface IJobSPMD<TNumber0, TNumber1, TNumber2, TNumber3, TNumber4, TNumber5, TNumber6, TNumber7>
- Namespace
- Misaki.HighPerformance.Mathematics.SPMD
- Assembly
- Misaki.HighPerformance.Mathematics.SPMD.dll
A job interface for Single Program Multiple Data (SPMD) execution, allowing for efficient parallel processing of data across multiple lanes.
public interface IJobSPMD<TNumber0, TNumber1, TNumber2, TNumber3, TNumber4, TNumber5, TNumber6, TNumber7> where TNumber0 : unmanaged, INumber<TNumber0>, IBinaryNumber<TNumber0>, IMinMaxValue<TNumber0>, IBitwiseOperators<TNumber0, TNumber0, TNumber0> where TNumber1 : unmanaged, INumber<TNumber1>, IBinaryNumber<TNumber1>, IMinMaxValue<TNumber1>, IBitwiseOperators<TNumber1, TNumber1, TNumber1> where TNumber2 : unmanaged, INumber<TNumber2>, IBinaryNumber<TNumber2>, IMinMaxValue<TNumber2>, IBitwiseOperators<TNumber2, TNumber2, TNumber2> where TNumber3 : unmanaged, INumber<TNumber3>, IBinaryNumber<TNumber3>, IMinMaxValue<TNumber3>, IBitwiseOperators<TNumber3, TNumber3, TNumber3> where TNumber4 : unmanaged, INumber<TNumber4>, IBinaryNumber<TNumber4>, IMinMaxValue<TNumber4>, IBitwiseOperators<TNumber4, TNumber4, TNumber4> where TNumber5 : unmanaged, INumber<TNumber5>, IBinaryNumber<TNumber5>, IMinMaxValue<TNumber5>, IBitwiseOperators<TNumber5, TNumber5, TNumber5> where TNumber6 : unmanaged, INumber<TNumber6>, IBinaryNumber<TNumber6>, IMinMaxValue<TNumber6>, IBitwiseOperators<TNumber6, TNumber6, TNumber6> where TNumber7 : unmanaged, INumber<TNumber7>, IBinaryNumber<TNumber7>, IMinMaxValue<TNumber7>, IBitwiseOperators<TNumber7, TNumber7, TNumber7>
Type Parameters
TNumber0The first numeric type used in the SPMD job.
TNumber1The first numeric type used in the SPMD job.
TNumber2The first numeric type used in the SPMD job.
TNumber3The first numeric type used in the SPMD job.
TNumber4The first numeric type used in the SPMD job.
TNumber5The first numeric type used in the SPMD job.
TNumber6The first numeric type used in the SPMD job.
TNumber7The first numeric type used in the SPMD job.
Remarks
Always use TNumber0 as the primary type for determining lane width and job scheduling, even if it's not used in the job execution.
Methods
Execute<TLane0, TLane1, TLane2, TLane3, TLane4, TLane5, TLane6, TLane7>(TLane0, TLane0, ref readonly JobExecutionContext)
void Execute<TLane0, TLane1, TLane2, TLane3, TLane4, TLane5, TLane6, TLane7>(TLane0 indices, TLane0 mask, ref readonly JobExecutionContext ctx) where TLane0 : unmanaged, ISPMDLane<TLane0, TNumber0> where TLane1 : unmanaged, ISPMDLane<TLane1, TNumber1> where TLane2 : unmanaged, ISPMDLane<TLane2, TNumber2> where TLane3 : unmanaged, ISPMDLane<TLane3, TNumber3> where TLane4 : unmanaged, ISPMDLane<TLane4, TNumber4> where TLane5 : unmanaged, ISPMDLane<TLane5, TNumber5> where TLane6 : unmanaged, ISPMDLane<TLane6, TNumber6> where TLane7 : unmanaged, ISPMDLane<TLane7, TNumber7>
Parameters
indicesTLane0maskTLane0ctxJobExecutionContext
Type Parameters
TLane0TLane1TLane2TLane3TLane4TLane5TLane6TLane7