mirror of
https://github.com/tiennm99/fbird.git
synced 2026-07-10 13:03:15 +00:00
65 lines
1.8 KiB
JavaScript
Vendored
65 lines
1.8 KiB
JavaScript
Vendored
// 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;
|
|
}
|
|
|
|
} ());
|