internal static unsafe JobHandle ScheduleXO <T>(this T jobData, BurstTensorData pinX, FencedMemoryAlloc pinO, int arrayLength, int innerloopBatchCount, FencingHelperMode fencingMode = FencingHelperMode.UpdateResourcesFencesOnScheduling) where T : struct, IJobParallelFor, BurstCPUOps.IJobResourceDeclarationXO { var fenceBeforeJobStart = GetFenceBeforeJobStartXO(pinX, pinO); JobHandle jobFence; fixed(float * ptrX = &pinX.array[pinX.offset]) { var ptrO = pinO.data; jobFence = ScheduleXOInternal(jobData, fenceBeforeJobStart, ptrX, ptrO, arrayLength, innerloopBatchCount); } if (fencingMode == FencingHelperMode.UpdateResourcesFencesOnScheduling) { jobFence.SetXOFences(pinX, pinO); } return(jobFence); }
internal static unsafe JobHandle ScheduleXBO <T>(this T jobData, BurstTensorData pinX, BurstTensorData pinB, BurstTensorData pinO, int arrayLength, int innerloopBatchCount, FencingHelperMode fencingMode = FencingHelperMode.UpdateResourcesFencesOnScheduling) where T : struct, IJobParallelFor, BurstCPUOps.IJobResourceDeclarationXBO { var fenceBeforeJobStart = GetFenceBeforeJobStartXBO(pinX, pinB, pinO); JobHandle jobFence; { void *ptrX = pinX.array.RawAddressAt(pinX.offset); void *ptrB = pinB.array.RawAddressAt(pinB.offset); void *ptrO = pinO.array.RawAddressAt(pinO.offset); jobFence = ScheduleXBOInternal(jobData, fenceBeforeJobStart, ptrX, ptrB, ptrO, arrayLength, innerloopBatchCount); } if (fencingMode == FencingHelperMode.UpdateResourcesFencesOnScheduling) { jobFence.SetXBOFences(pinX, pinB, pinO); } return(jobFence); }
internal static unsafe JobHandle ScheduleXO <T>(this T jobData, BurstTensorData pinX, int offsetX, BurstTensorData pinO, int offsetO, FencingHelperMode fencingMode = FencingHelperMode.UpdateResourcesFencesOnScheduling) where T : struct, IJob, BurstCPUOps.IJobResourceDeclarationXO { var fenceBeforeJobStart = GetFenceBeforeJobStartXO(pinX, pinO); JobHandle jobFence; fixed(float * ptrX = &pinX.array[pinX.offset], ptrO = &pinO.array[pinO.offset]) { jobFence = ScheduleXOInternal(jobData, fenceBeforeJobStart, ptrX + offsetX, ptrO + offsetO); } if (fencingMode == FencingHelperMode.UpdateResourcesFencesOnScheduling) { jobFence.SetXOFences(pinX, pinO); } return(jobFence); }
internal static unsafe JobHandle ScheduleO <T>(this T jobData, IDependableMemoryResource O, FencingHelperMode fencingMode = FencingHelperMode.UpdateResourcesFencesOnScheduling) where T : struct, IJob, BurstCPUOps.IJobResourceDeclarationO { var fenceBeforeJobStart = O.reuse; JobHandle jobFence; { jobFence = ScheduleOInternal(jobData, fenceBeforeJobStart, O.rawPtr); } if (fencingMode == FencingHelperMode.UpdateResourcesFencesOnScheduling) { O.fence = jobFence; } return(jobFence); }
internal static unsafe JobHandle ScheduleO <T>(this T jobData, BurstTensorData pinO, FencingHelperMode fencingMode = FencingHelperMode.UpdateResourcesFencesOnScheduling) where T : struct, IJob, BurstCPUOps.IJobResourceDeclarationO { var fenceBeforeJobStart = pinO.reuse; JobHandle jobFence; fixed(float *ptrO = &pinO.array[pinO.offset]) { jobFence = ScheduleOInternal(jobData, fenceBeforeJobStart, ptrO); } if (fencingMode == FencingHelperMode.UpdateResourcesFencesOnScheduling) { pinO.fence = jobFence; } return(jobFence); }
internal static unsafe JobHandle ScheduleXO <T>(this T jobData, IDependableMemoryResource X, IDependableMemoryResource O, FencingHelperMode fencingMode = FencingHelperMode.UpdateResourcesFencesOnScheduling) where T : struct, IJob, BurstCPUOps.IJobResourceDeclarationXO { var fenceBeforeJobStart = GetFenceBeforeJobStartXO(X, O); JobHandle jobFence; { jobFence = ScheduleXOInternal(jobData, fenceBeforeJobStart, X.rawPtr, O.rawPtr); } if (fencingMode == FencingHelperMode.UpdateResourcesFencesOnScheduling) { jobFence.SetXOFences(X, O); } return(jobFence); }
internal static unsafe JobHandle ScheduleXBO <T>(this T jobData, FencedMemoryAlloc pinX, FencedMemoryAlloc pinB, FencedMemoryAlloc pinO, int arrayLength, int innerloopBatchCount, FencingHelperMode fencingMode = FencingHelperMode.UpdateResourcesFencesOnScheduling) where T : struct, IJobParallelFor, BurstCPUOps.IJobResourceDeclarationXBO { var fenceBeforeJobStart = GetFenceBeforeJobStartXBO(pinX, pinB, pinO); var ptrX = pinX.data; var ptrB = pinB.data; var ptrO = pinO.data; JobHandle jobFence = ScheduleXBOInternal(jobData, fenceBeforeJobStart, ptrX, ptrB, ptrO, arrayLength, innerloopBatchCount); if (fencingMode == FencingHelperMode.UpdateResourcesFencesOnScheduling) { jobFence.SetXBOFences(pinX, pinB, pinO); } return(jobFence); }
internal static unsafe JobHandle ScheduleXO <T>(this T jobData, BurstTensorData pinX, BurstTensorData pinO, FencingHelperMode fencingMode = FencingHelperMode.UpdateResourcesFencesOnScheduling) where T : struct, IJob, BurstCPUOps.IJobResourceDeclarationXO { var fenceBeforeJobStart = GetFenceBeforeJobStartXO(pinX, pinO); JobHandle jobFence; { void *ptrX = pinX.array.RawAddressAt(pinX.offset); void *ptrO = pinO.array.RawAddressAt(pinO.offset); jobFence = ScheduleXOInternal(jobData, fenceBeforeJobStart, ptrX, ptrO); } if (fencingMode == FencingHelperMode.UpdateResourcesFencesOnScheduling) { jobFence.SetXOFences(pinX, pinO); } return(jobFence); }
internal static unsafe JobHandle ScheduleO <T>(this T jobData, BurstTensorData pinO, int offsetO, int arrayLength, int innerloopBatchCount, FencingHelperMode fencingMode = FencingHelperMode.UpdateResourcesFencesOnScheduling) where T : struct, IJobParallelFor, BurstCPUOps.IJobResourceDeclarationO { var fenceBeforeJobStart = pinO.reuse; JobHandle jobFence; { void *ptrO = pinO.array.RawAddressAt(pinO.offset + offsetO); jobFence = ScheduleOInternal(jobData, fenceBeforeJobStart, ptrO, arrayLength, innerloopBatchCount); } if (fencingMode == FencingHelperMode.UpdateResourcesFencesOnScheduling) { pinO.fence = jobFence; } return(jobFence); }
internal static unsafe JobHandle ScheduleXBO <T>(this T jobData, IDependableMemoryResource X, IDependableMemoryResource B, IDependableMemoryResource O, int arrayLength, int innerloopBatchCount, FencingHelperMode fencingMode = FencingHelperMode.UpdateResourcesFencesOnScheduling) where T : struct, IJobParallelFor, BurstCPUOps.IJobResourceDeclarationXBO { var fenceBeforeJobStart = GetFenceBeforeJobStartXBO(X, B, O); JobHandle jobFence; { jobFence = ScheduleXBOInternal(jobData, fenceBeforeJobStart, X.rawPtr, B.rawPtr, O.rawPtr, arrayLength, innerloopBatchCount); } if (fencingMode == FencingHelperMode.UpdateResourcesFencesOnScheduling) { jobFence.SetXBOFences(X, B, O); } return(jobFence); }