Class KernelDeviceProfile


  • public class KernelDeviceProfile
    extends java.lang.Object
    Created by Barney on 02/09/2015.
    • Field Detail

      • logger

        private static java.util.logging.Logger logger
      • NUM_EVENTS

        private static final int NUM_EVENTS
      • TABLE_COLUMN_HEADER_WIDTH

        private static final int TABLE_COLUMN_HEADER_WIDTH
        See Also:
        Constant Field Values
      • TABLE_COLUMN_COUNT_WIDTH

        private static final int TABLE_COLUMN_COUNT_WIDTH
        See Also:
        Constant Field Values
      • TABLE_COLUMN_WIDTH

        private static final int TABLE_COLUMN_WIDTH
      • tableHeader

        private static java.lang.String tableHeader
      • parentKernelProfile

        private final KernelProfile parentKernelProfile
      • kernel

        private final java.lang.Class<? extends Kernel> kernel
      • device

        private final Device device
      • format

        private final java.text.DecimalFormat format
      • invocationCountGlobal

        private final java.util.concurrent.atomic.AtomicLong invocationCountGlobal
    • Constructor Detail

      • KernelDeviceProfile

        public KernelDeviceProfile​(KernelProfile parentProfile,
                                   java.lang.Class<? extends Kernel> kernel,
                                   Device device)
    • Method Detail

      • updateProfileReport

        private ProfileReport updateProfileReport​(ProfileReport report,
                                                  long invocationCount,
                                                  long[] currentTimes)
      • getElapsedTimeCurrentThread

        public double getElapsedTimeCurrentThread​(int stage)
        Elapsed time for a single event only and for the current thread, i.e. since the previous stage rather than from the start.
      • getElapsedTimeCurrentThread

        public double getElapsedTimeCurrentThread​(int from,
                                                  int to)
        Elapsed time for all events from through to for the current thread.
      • getReportCurrentThread

        public java.lang.ref.WeakReference<ProfileReport> getReportCurrentThread()
        Retrieves the most recent complete report available for the current thread calling this method.
        Note1: If the profile report is intended to be kept in memory, the object should be cloned with ProfileReport.clone()
        Note2: If the thread didn't execute this KernelDeviceProfile instance respective kernel and device, it will return null.
        Returns:
        • the profiling report for the current most recent execution
        • null, if no profiling report is available for such thread
      • getReportLastThread

        public java.lang.ref.WeakReference<ProfileReport> getReportLastThread()
        Retrieves the most recent complete report available for the last thread that executed this KernelDeviceProfile instance respective kernel and device.
        Note1: If the profile report is intended to be kept in memory, the object should be cloned with ProfileReport.clone()
        Returns:
        • the profiling report for the current most recent execution
        • null, if no profiling report is available yet
      • getCumulativeElapsedTimeCurrrentThread

        public double getCumulativeElapsedTimeCurrrentThread​(ProfilingEvent stage)
        Elapsed time for a single event only, i.e. since the previous stage rather than from the start, summed over all executions, for the current thread, if it has executed the kernel on the device assigned to this KernelDeviceProfile instance.
        Parameters:
        stage - the event stage
      • getCumulativeElapsedTimeAllCurrentThread

        public double getCumulativeElapsedTimeAllCurrentThread()
        Elapsed time of entire execution, summed over all executions, for the current thread, if it has executed the kernel on the device assigned to this KernelDeviceProfile instance.
      • getElapsedTimeLastThread

        public double getElapsedTimeLastThread​(int stage)
        Elapsed time for a single event only and for the last thread that finished executing a kernel, i.e. single event only - since the previous stage rather than from the start.
        Parameters:
        stage - the event stage
      • getElapsedTimeLastThread

        public double getElapsedTimeLastThread​(int from,
                                               int to)
        Elapsed time for all events from through to for the last thread that executed this KernelDeviceProfile instance respective kernel and device.
        Parameters:
        from - the first event to consider that defines the elapsed period start
        to - the last event to consider for elapsed period
      • getCumulativeElapsedTimeGlobal

        public double getCumulativeElapsedTimeGlobal​(ProfilingEvent stage)
        Elapsed time for a single event only, i.e. since the previous stage rather than from the start, summed over all executions, for the last thread that executed this KernelDeviceProfile instance respective kernel and device.
        Parameters:
        stage - the event stage
      • getCumulativeElapsedTimeAllGlobal

        public double getCumulativeElapsedTimeAllGlobal()
        Elapsed time of entire execution, summed over all executions, for all the threads, that executed the kernel on this device.
      • getTableHeader

        public static java.lang.String getTableHeader()
      • getLastAsTableRow

        public java.lang.String getLastAsTableRow()
      • getCumulativeAsTableRow

        public java.lang.String getCumulativeAsTableRow()
      • getAverageAsTableRow

        public java.lang.String getAverageAsTableRow()
      • internalCumulativeAsTableRow

        private java.lang.String internalCumulativeAsTableRow​(boolean mean)
      • appendRowHeaders

        private static void appendRowHeaders​(java.lang.StringBuilder builder,
                                             java.lang.String device,
                                             java.lang.String count)
      • appendCell

        private static void appendCell​(java.lang.StringBuilder builder,
                                       java.lang.String cell)
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object