예제 #1
0
        private static Int64 GetInfo(Event e, CLProfilingInfo info)
        {
            Byte[] bytes = new Byte[8];

            SizeT paramValueSizeRet = SizeT.Zero;

            GCHandle bytesHandle = GCHandle.Alloc(bytes, GCHandleType.Pinned);
            {
                OpenCLError.Validate(OpenCLDriver.clGetEventProfilingInfo(e.CLEvent, info, new SizeT(bytes.LongLength), bytesHandle.AddrOfPinnedObject(), ref paramValueSizeRet));
            }
            bytesHandle.Free();

            return BitConverter.ToInt64(bytes, 0);
        }
예제 #2
0
 public static Int64 QueuedTick(Event e)
 {
     return GetInfo(e, CLProfilingInfo.Queued);
 }
예제 #3
0
 public static Int64 SubmitTick(Event e)
 {
     return GetInfo(e, CLProfilingInfo.Submit);
 }
예제 #4
0
 public static Int64 EndTick(Event e)
 {
     return GetInfo(e, CLProfilingInfo.End);
 }
예제 #5
0
 public static TimeSpan DurationTimespan(Event e)
 {
     return TimeSpan.FromSeconds(DurationSeconds(e));
 }
예제 #6
0
 public static Int64 DurationTicks(Event e)
 {
     return EndTick(e) - StartTick(e);
 }
예제 #7
0
 public static Double DurationSeconds(Event e)
 {
     return DurationTicks(e) * 1.0E-9;
 }
예제 #8
0
 public static Double DurationMilliseconds(Event e)
 {
     return DurationTicks(e) * 1.0E-6;
 }