Class IJobParallelForSPMDExtensions
- Namespace
- Misaki.HighPerformance.Mathematics.SPMD
- Assembly
- Misaki.HighPerformance.Mathematics.SPMD.dll
public static class IJobParallelForSPMDExtensions
- Inheritance
-
IJobParallelForSPMDExtensions
- Inherited Members
Methods
ScheduleParallelSPDM<T, TNumber0>(JobScheduler, ref T, int, int, bool, JobPriority, params ReadOnlySpan<JobHandle>)
Schedule the SPMD job for parallel execution across multiple threads, with the specified total count, batch size, and job execution context.
public static JobHandle ScheduleParallelSPDM<T, TNumber0>(this JobScheduler jobScheduler, ref T job, int totalIteration, int batchSize, bool preferLocal, JobPriority priority, params ReadOnlySpan<JobHandle> dependencies) where T : IJobSPMD<TNumber0> where TNumber0 : unmanaged, INumber<TNumber0>, IBinaryNumber<TNumber0>, IMinMaxValue<TNumber0>, IBitwiseOperators<TNumber0, TNumber0, TNumber0>
Parameters
jobSchedulerJobSchedulerThe job scheduler to use for scheduling the job.
jobTThe SPMD job to schedule.
totalIterationintThe total number of iterations to execute across all lanes.
batchSizeintThe number of iterations to execute in each batch for parallel execution.
preferLocalboolWhether to prefer scheduling the job on the local thread for better cache locality.
priorityJobPriorityThe priority of the job.
dependenciesReadOnlySpan<JobHandle>Any job handles that this job depends on, which must complete before this job can start.
Returns
Type Parameters
TTNumber0The 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.
ScheduleParallelSPDM<T, TNumber0, TNumber1>(JobScheduler, ref T, int, int, bool, JobPriority, params ReadOnlySpan<JobHandle>)
Schedule the SPMD job for parallel execution across multiple threads, with the specified total count, batch size, and job execution context.
public static JobHandle ScheduleParallelSPDM<T, TNumber0, TNumber1>(this JobScheduler jobScheduler, ref T job, int totalIteration, int batchSize, bool preferLocal, JobPriority priority, params ReadOnlySpan<JobHandle> dependencies) where T : IJobSPMD<TNumber0, TNumber1> 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>
Parameters
jobSchedulerJobSchedulerThe job scheduler to use for scheduling the job.
jobTThe SPMD job to schedule.
totalIterationintThe total number of iterations to execute across all lanes.
batchSizeintThe number of iterations to execute in each batch for parallel execution.
preferLocalboolWhether to prefer scheduling the job on the local thread for better cache locality.
priorityJobPriorityThe priority of the job.
dependenciesReadOnlySpan<JobHandle>Any job handles that this job depends on, which must complete before this job can start.
Returns
Type Parameters
TTNumber0The first numeric type used in the SPMD job.
TNumber1The 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.
ScheduleParallelSPDM<T, TNumber0, TNumber1, TNumber2>(JobScheduler, ref T, int, int, bool, JobPriority, params ReadOnlySpan<JobHandle>)
Schedule the SPMD job for parallel execution across multiple threads, with the specified total count, batch size, and job execution context.
public static JobHandle ScheduleParallelSPDM<T, TNumber0, TNumber1, TNumber2>(this JobScheduler jobScheduler, ref T job, int totalIteration, int batchSize, bool preferLocal, JobPriority priority, params ReadOnlySpan<JobHandle> dependencies) where T : IJobSPMD<TNumber0, TNumber1, TNumber2> 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>
Parameters
jobSchedulerJobSchedulerThe job scheduler to use for scheduling the job.
jobTThe SPMD job to schedule.
totalIterationintThe total number of iterations to execute across all lanes.
batchSizeintThe number of iterations to execute in each batch for parallel execution.
preferLocalboolWhether to prefer scheduling the job on the local thread for better cache locality.
priorityJobPriorityThe priority of the job.
dependenciesReadOnlySpan<JobHandle>Any job handles that this job depends on, which must complete before this job can start.
Returns
Type Parameters
TTNumber0The 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.
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.
ScheduleParallelSPDM<T, TNumber0, TNumber1, TNumber2, TNumber3>(JobScheduler, ref T, int, int, bool, JobPriority, params ReadOnlySpan<JobHandle>)
Schedule the SPMD job for parallel execution across multiple threads, with the specified total count, batch size, and job execution context.
public static JobHandle ScheduleParallelSPDM<T, TNumber0, TNumber1, TNumber2, TNumber3>(this JobScheduler jobScheduler, ref T job, int totalIteration, int batchSize, bool preferLocal, JobPriority priority, params ReadOnlySpan<JobHandle> dependencies) where T : IJobSPMD<TNumber0, TNumber1, TNumber2, TNumber3> 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>
Parameters
jobSchedulerJobSchedulerThe job scheduler to use for scheduling the job.
jobTThe SPMD job to schedule.
totalIterationintThe total number of iterations to execute across all lanes.
batchSizeintThe number of iterations to execute in each batch for parallel execution.
preferLocalboolWhether to prefer scheduling the job on the local thread for better cache locality.
priorityJobPriorityThe priority of the job.
dependenciesReadOnlySpan<JobHandle>Any job handles that this job depends on, which must complete before this job can start.
Returns
Type Parameters
TTNumber0The 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.
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.
ScheduleParallelSPDM<T, TNumber0, TNumber1, TNumber2, TNumber3, TNumber4>(JobScheduler, ref T, int, int, bool, JobPriority, params ReadOnlySpan<JobHandle>)
Schedule the SPMD job for parallel execution across multiple threads, with the specified total count, batch size, and job execution context.
public static JobHandle ScheduleParallelSPDM<T, TNumber0, TNumber1, TNumber2, TNumber3, TNumber4>(this JobScheduler jobScheduler, ref T job, int totalIteration, int batchSize, bool preferLocal, JobPriority priority, params ReadOnlySpan<JobHandle> dependencies) where T : IJobSPMD<TNumber0, TNumber1, TNumber2, TNumber3, TNumber4> 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>
Parameters
jobSchedulerJobSchedulerThe job scheduler to use for scheduling the job.
jobTThe SPMD job to schedule.
totalIterationintThe total number of iterations to execute across all lanes.
batchSizeintThe number of iterations to execute in each batch for parallel execution.
preferLocalboolWhether to prefer scheduling the job on the local thread for better cache locality.
priorityJobPriorityThe priority of the job.
dependenciesReadOnlySpan<JobHandle>Any job handles that this job depends on, which must complete before this job can start.
Returns
Type Parameters
TTNumber0The 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.
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.
ScheduleParallelSPDM<T, TNumber0, TNumber1, TNumber2, TNumber3, TNumber4, TNumber5>(JobScheduler, ref T, int, int, bool, JobPriority, params ReadOnlySpan<JobHandle>)
Schedule the SPMD job for parallel execution across multiple threads, with the specified total count, batch size, and job execution context.
public static JobHandle ScheduleParallelSPDM<T, TNumber0, TNumber1, TNumber2, TNumber3, TNumber4, TNumber5>(this JobScheduler jobScheduler, ref T job, int totalIteration, int batchSize, bool preferLocal, JobPriority priority, params ReadOnlySpan<JobHandle> dependencies) where T : IJobSPMD<TNumber0, TNumber1, TNumber2, TNumber3, TNumber4, TNumber5> 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>
Parameters
jobSchedulerJobSchedulerThe job scheduler to use for scheduling the job.
jobTThe SPMD job to schedule.
totalIterationintThe total number of iterations to execute across all lanes.
batchSizeintThe number of iterations to execute in each batch for parallel execution.
preferLocalboolWhether to prefer scheduling the job on the local thread for better cache locality.
priorityJobPriorityThe priority of the job.
dependenciesReadOnlySpan<JobHandle>Any job handles that this job depends on, which must complete before this job can start.
Returns
Type Parameters
TTNumber0The 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.
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.
ScheduleParallelSPDM<T, TNumber0, TNumber1, TNumber2, TNumber3, TNumber4, TNumber5, TNumber6>(JobScheduler, ref T, int, int, bool, JobPriority, params ReadOnlySpan<JobHandle>)
Schedule the SPMD job for parallel execution across multiple threads, with the specified total count, batch size, and job execution context.
public static JobHandle ScheduleParallelSPDM<T, TNumber0, TNumber1, TNumber2, TNumber3, TNumber4, TNumber5, TNumber6>(this JobScheduler jobScheduler, ref T job, int totalIteration, int batchSize, bool preferLocal, JobPriority priority, params ReadOnlySpan<JobHandle> dependencies) where T : IJobSPMD<TNumber0, TNumber1, TNumber2, TNumber3, TNumber4, TNumber5, TNumber6> 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>
Parameters
jobSchedulerJobSchedulerThe job scheduler to use for scheduling the job.
jobTThe SPMD job to schedule.
totalIterationintThe total number of iterations to execute across all lanes.
batchSizeintThe number of iterations to execute in each batch for parallel execution.
preferLocalboolWhether to prefer scheduling the job on the local thread for better cache locality.
priorityJobPriorityThe priority of the job.
dependenciesReadOnlySpan<JobHandle>Any job handles that this job depends on, which must complete before this job can start.
Returns
Type Parameters
TTNumber0The 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.
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.
ScheduleParallelSPDM<T, TNumber0, TNumber1, TNumber2, TNumber3, TNumber4, TNumber5, TNumber6, TNumber7>(JobScheduler, ref T, int, int, bool, JobPriority, params ReadOnlySpan<JobHandle>)
Schedule the SPMD job for parallel execution across multiple threads, with the specified total count, batch size, and job execution context.
public static JobHandle ScheduleParallelSPDM<T, TNumber0, TNumber1, TNumber2, TNumber3, TNumber4, TNumber5, TNumber6, TNumber7>(this JobScheduler jobScheduler, ref T job, int totalIteration, int batchSize, bool preferLocal, JobPriority priority, params ReadOnlySpan<JobHandle> dependencies) where T : 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>
Parameters
jobSchedulerJobSchedulerThe job scheduler to use for scheduling the job.
jobTThe SPMD job to schedule.
totalIterationintThe total number of iterations to execute across all lanes.
batchSizeintThe number of iterations to execute in each batch for parallel execution.
preferLocalboolWhether to prefer scheduling the job on the local thread for better cache locality.
priorityJobPriorityThe priority of the job.
dependenciesReadOnlySpan<JobHandle>Any job handles that this job depends on, which must complete before this job can start.
Returns
Type Parameters
TTNumber0The 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.