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);
        }
Example #4
0
        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);
        }
Example #6
0
        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);
        }
Example #10
0
        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);
        }