lib/accy/src/kernel/library/random/squares/tuning.zig

daab053ee43316e1809a84551d573ddd1e5bf3d2

 1 const random = @import("../root.zig");
 2 const profile = @import("profile.zig");
 3 const types = @import("types.zig");
 4 
 5 const base = random.base;
 6 const std = base.std;
 7 const entry = base.entry;
 8 const tuning = base.tuning;
 9 
10 const Squares = types.Squares;
11 const squares_family_version = types.squares_family_version;
12 const squaresFamilyFingerprint = profile.squaresFamilyFingerprint;
13 
14 pub fn squaresTuningExtents(instance: Squares) [1]u64 {
15     return .{instance.count};
16 }
17 
18 pub fn squaresTuningOperation(instance: Squares) entry.Operation {
19     _ = instance;
20     return .{ .random = .squares };
21 }
22 
23 pub fn squaresFamilyTuningKey(
24     backing_allocator: std.mem.Allocator,
25     device_fingerprint: u64,
26     instance: Squares,
27 ) !tuning.FamilyTuningKey {
28     const family_fingerprint = try squaresFamilyFingerprint(backing_allocator, instance);
29     const extents = squaresTuningExtents(instance);
30     return tuning.FamilyTuningKey.init(
31         device_fingerprint,
32         family_fingerprint,
33         entry.operationFingerprint(squaresTuningOperation(instance)),
34         instance.dtype,
35         squares_family_version,
36         extents[0..],
37     ) orelse unreachable;
38 }