UNPKG

shadow-function

Version:

ioing lib - shadow Function, worker Function

65 lines (57 loc) 1.82 kB
// Kernel template // Author: Peter Jensen (function () { // Kernel configuration var kernelConfig = { kernelName: "Test", kernelInit: init, kernelCleanup: cleanup, kernelSimd: simd, kernelNonSimd: nonSimd, kernelIterations: 100000000 }; // Hook up to the harness benchmarks.add (new Benchmark (kernelConfig)); // Kernel Initializer function init () { // Do initial sanity check and initialize data for the kernels. // The sanity check should verify that the simd and nonSimd results // are the same. // It is recommended to do minimal object creation in the kernels // themselves. If global data needs to be initialized, here would // be the place to do it. // If the sanity checks fails the kernels will not be executed // Returns: // true: First run (unoptimized) of the kernels passed // false: First run (unoptimized) of the kernels failed return simd (1) === nonSimd (1); } // Kernel Cleanup function cleanup () { // Do final sanity check and perform cleanup. // This function is called when all the kernel iterations have been // executed, so they should be in their final optimized version. The // sanity check done during initialization will probably be of the // initial unoptimized version. // Returns: // true: Last run (optimized) of the kernels passed // false: last run (optimized) of the kernels failed return simd (1) === nonSimd (1); } // SIMD version of the kernel function simd (n) { var s = 0; for (var i = 0; i < n; ++i) { s += i; } return s; } // Non SIMD version of the kernel function nonSimd (n) { var s = 0; for (var i = 0; i < n; ++i) { s += i; } return s; } } ());