Skip to content

Instantly share code, notes, and snippets.

@CodingKoopa
Last active April 7, 2025 21:19
Show Gist options
  • Select an option

  • Save CodingKoopa/a8ead4aed2939437e00d552b7375a12b to your computer and use it in GitHub Desktop.

Select an option

Save CodingKoopa/a8ead4aed2939437e00d552b7375a12b to your computer and use it in GitHub Desktop.
Parallel k-NN ImHex Pattern

Pattern Data view

image

2D viz

image

import std.array;
fn extract_comp(u64 num_points, u64 num_dims, std::Array<std::Array<float, num_dims>,
num_points> points, u8 dim) {
std::Array<float, num_points> ret;
for (u64 point = 0, point < num_points, point += 1) {
ret.data[point] = points.data[point].data[dim];
}
return ret;
};
struct TrainPoints<auto NumPoints, auto NumDims> {
std::Array<std::Array<float, NumDims>, NumPoints> p [[inline]];
std::Array<float, NumPoints> x_arr = extract_comp(NumPoints, NumDims, p, 0);
std::Array<float, NumPoints> y_arr = extract_comp(NumPoints, NumDims, p, 1);
} [[hex::visualize("scatter_plot", x_arr.data, y_arr.data)]];
struct TrainingFile {
u64 id;
u64 num_points;
u64 num_dims;
TrainPoints<num_points, num_dims> points;
};
struct QueryFile {
u64 id;
u64 num_queries;
u64 num_dims;
u64 num_neighbors;
TrainPoints<num_queries, num_dims> queries;
};
struct Results<auto NumDims, auto NumQueries, auto NumNeighbors> {
std::Array<TrainPoints<NumNeighbors, NumDims>, NumQueries> r [[inline]];
};
struct ResultFile {
u64 training_file_id;
u64 query_file_id;
u64 result_file_id;
u64 num_queries;
u64 num_dims;
u64 num_neighbors;
Results<num_dims, num_queries, num_neighbors> results;
};
struct File {
char file_type[8];
match (file_type) {
("TRAINING"): TrainingFile training;
("QUERY\0\0\0"): QueryFile query;
("RESULT\0\0"): ResultFile r;
}
};
File f @ 0x0 [[inline]];
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment