Table of Contents

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

jobScheduler JobScheduler

The job scheduler to use for scheduling the job.

job T

The SPMD job to schedule.

totalIteration int

The total number of iterations to execute across all lanes.

batchSize int

The number of iterations to execute in each batch for parallel execution.

preferLocal bool

Whether to prefer scheduling the job on the local thread for better cache locality.

priority JobPriority

The priority of the job.

dependencies ReadOnlySpan<JobHandle>

Any job handles that this job depends on, which must complete before this job can start.

Returns

JobHandle

Type Parameters

T
TNumber0

The 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

jobScheduler JobScheduler

The job scheduler to use for scheduling the job.

job T

The SPMD job to schedule.

totalIteration int

The total number of iterations to execute across all lanes.

batchSize int

The number of iterations to execute in each batch for parallel execution.

preferLocal bool

Whether to prefer scheduling the job on the local thread for better cache locality.

priority JobPriority

The priority of the job.

dependencies ReadOnlySpan<JobHandle>

Any job handles that this job depends on, which must complete before this job can start.

Returns

JobHandle

Type Parameters

T
TNumber0

The first numeric type used in the SPMD job.

TNumber1

The 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

jobScheduler JobScheduler

The job scheduler to use for scheduling the job.

job T

The SPMD job to schedule.

totalIteration int

The total number of iterations to execute across all lanes.

batchSize int

The number of iterations to execute in each batch for parallel execution.

preferLocal bool

Whether to prefer scheduling the job on the local thread for better cache locality.

priority JobPriority

The priority of the job.

dependencies ReadOnlySpan<JobHandle>

Any job handles that this job depends on, which must complete before this job can start.

Returns

JobHandle

Type Parameters

T
TNumber0

The first numeric type used in the SPMD job.

TNumber1

The first numeric type used in the SPMD job.

TNumber2

The 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

jobScheduler JobScheduler

The job scheduler to use for scheduling the job.

job T

The SPMD job to schedule.

totalIteration int

The total number of iterations to execute across all lanes.

batchSize int

The number of iterations to execute in each batch for parallel execution.

preferLocal bool

Whether to prefer scheduling the job on the local thread for better cache locality.

priority JobPriority

The priority of the job.

dependencies ReadOnlySpan<JobHandle>

Any job handles that this job depends on, which must complete before this job can start.

Returns

JobHandle

Type Parameters

T
TNumber0

The first numeric type used in the SPMD job.

TNumber1

The first numeric type used in the SPMD job.

TNumber2

The first numeric type used in the SPMD job.

TNumber3

The 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

jobScheduler JobScheduler

The job scheduler to use for scheduling the job.

job T

The SPMD job to schedule.

totalIteration int

The total number of iterations to execute across all lanes.

batchSize int

The number of iterations to execute in each batch for parallel execution.

preferLocal bool

Whether to prefer scheduling the job on the local thread for better cache locality.

priority JobPriority

The priority of the job.

dependencies ReadOnlySpan<JobHandle>

Any job handles that this job depends on, which must complete before this job can start.

Returns

JobHandle

Type Parameters

T
TNumber0

The first numeric type used in the SPMD job.

TNumber1

The first numeric type used in the SPMD job.

TNumber2

The first numeric type used in the SPMD job.

TNumber3

The first numeric type used in the SPMD job.

TNumber4

The 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

jobScheduler JobScheduler

The job scheduler to use for scheduling the job.

job T

The SPMD job to schedule.

totalIteration int

The total number of iterations to execute across all lanes.

batchSize int

The number of iterations to execute in each batch for parallel execution.

preferLocal bool

Whether to prefer scheduling the job on the local thread for better cache locality.

priority JobPriority

The priority of the job.

dependencies ReadOnlySpan<JobHandle>

Any job handles that this job depends on, which must complete before this job can start.

Returns

JobHandle

Type Parameters

T
TNumber0

The first numeric type used in the SPMD job.

TNumber1

The first numeric type used in the SPMD job.

TNumber2

The first numeric type used in the SPMD job.

TNumber3

The first numeric type used in the SPMD job.

TNumber4

The first numeric type used in the SPMD job.

TNumber5

The 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

jobScheduler JobScheduler

The job scheduler to use for scheduling the job.

job T

The SPMD job to schedule.

totalIteration int

The total number of iterations to execute across all lanes.

batchSize int

The number of iterations to execute in each batch for parallel execution.

preferLocal bool

Whether to prefer scheduling the job on the local thread for better cache locality.

priority JobPriority

The priority of the job.

dependencies ReadOnlySpan<JobHandle>

Any job handles that this job depends on, which must complete before this job can start.

Returns

JobHandle

Type Parameters

T
TNumber0

The first numeric type used in the SPMD job.

TNumber1

The first numeric type used in the SPMD job.

TNumber2

The first numeric type used in the SPMD job.

TNumber3

The first numeric type used in the SPMD job.

TNumber4

The first numeric type used in the SPMD job.

TNumber5

The first numeric type used in the SPMD job.

TNumber6

The 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

jobScheduler JobScheduler

The job scheduler to use for scheduling the job.

job T

The SPMD job to schedule.

totalIteration int

The total number of iterations to execute across all lanes.

batchSize int

The number of iterations to execute in each batch for parallel execution.

preferLocal bool

Whether to prefer scheduling the job on the local thread for better cache locality.

priority JobPriority

The priority of the job.

dependencies ReadOnlySpan<JobHandle>

Any job handles that this job depends on, which must complete before this job can start.

Returns

JobHandle

Type Parameters

T
TNumber0

The first numeric type used in the SPMD job.

TNumber1

The first numeric type used in the SPMD job.

TNumber2

The first numeric type used in the SPMD job.

TNumber3

The first numeric type used in the SPMD job.

TNumber4

The first numeric type used in the SPMD job.

TNumber5

The first numeric type used in the SPMD job.

TNumber6

The first numeric type used in the SPMD job.

TNumber7

The 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.