MCPcopy
hub / github.com/tensorflow/tfjs / profileKernel

Method profileKernel

tfjs-core/src/profiler.ts:40–79  ·  view source on GitHub ↗
(kernelName: string, inputs: NamedTensorMap, f: () => Tensor[])

Source from the content-addressed store, hash-verified

38 }
39
40 profileKernel(kernelName: string, inputs: NamedTensorMap, f: () => Tensor[]):
41 KernelProfile {
42 let outputs: Tensor[];
43 const holdResultWrapperFn = () => {
44 outputs = f();
45 };
46 let timer: Promise<BackendTimingInfo>;
47 const start = util.now();
48 if (this.backendTimer.timerAvailable()) {
49 timer = this.backendTimer.time(holdResultWrapperFn);
50 } else {
51 holdResultWrapperFn();
52 for (const output of outputs) {
53 output.dataSync();
54 }
55 timer = Promise.resolve({kernelMs: util.now() - start});
56 }
57 if (env().getBool('CHECK_COMPUTATION_FOR_ERRORS')) {
58 for (let i = 0; i < outputs.length; i++) {
59 const output = outputs[i];
60 // Dangling promise here because we don't want to propagate up
61 // asynchronicity.
62 output.data().then(tensorVals => {
63 checkComputationForErrors(tensorVals, output.dtype, kernelName);
64 });
65 }
66 }
67
68 const kernelProfile = {
69 kernelName,
70 outputs,
71 inputs,
72 timeMs: timer.then(timing => timing.kernelMs),
73 extraInfo: timer.then(
74 timing => timing.getExtraProfileInfo != null ?
75 timing.getExtraProfileInfo() :
76 '')
77 };
78 return kernelProfile;
79 }
80
81 logKernelProfile(kernelProfile: KernelProfile): void {
82 const {kernelName, outputs, timeMs, inputs, extraInfo} = kernelProfile;

Callers 2

runKernelFuncMethod · 0.80
profiler_test.tsFile · 0.80

Calls 9

envFunction · 0.90
getBoolMethod · 0.80
getExtraProfileInfoMethod · 0.80
nowMethod · 0.65
timerAvailableMethod · 0.65
timeMethod · 0.65
dataSyncMethod · 0.65
dataMethod · 0.65

Tested by

no test coverage detected