#include import Crafter.Math; import std; using namespace Crafter; int main() { // std::random_device rd; // std::mt19937 gen(rd()); // std::uniform_real_distribution dist(0, 100); // Vector<_Float16, 8, 8> vA; // for(std::uint32_t i = 0; i < 8; i++) { // vA.v[i] = dist(gen); // } // VectorF16<4, 2, 1> vfA(&vA); // Vector<_Float16, 16, 16> vB; // for(std::uint32_t i = 0; i < 16; i++) { // vB.v[i] = dist(gen); // } // VectorF16<4, 2, 2> vfB(&vB); // VectorF16<4, 2, 1> vfC = vfA + vfB; // auto start = std::chrono::high_resolution_clock::now(); // for(std::uint32_t i = 0; i < 90000000; i++) { // vfC = vfC + vfB; // } // auto end = std::chrono::high_resolution_clock::now(); // std::cout << std::chrono::duration_cast(end-start) << std::endl; // std::println("{}", vfC); std::random_device rd; std::mt19937 gen(rd()); std::uniform_real_distribution dist(0, 100); Vector<_Float16, 32, 32> vA; for(std::uint32_t i = 0; i < 32; i++) { vA.v[i] = dist(gen); } std::string log; std::chrono::duration totalVector(0); std::tuple, VectorF16<4, 2, 4>, VectorF16<4, 2, 4>, VectorF16<4, 2, 4>> vfA {VectorF16<4, 2, 4>(&vA), VectorF16<4, 2, 4>(&vA), VectorF16<4, 2, 4>(&vA), VectorF16<4, 2, 4>(&vA)}; for(std::uint32_t i = 0; i < 1000000; i++) { auto start = std::chrono::high_resolution_clock::now(); vfA = VectorF16<4, 2, 4>::Normalize(std::get<0>(vfA), std::get<1>(vfA), std::get<2>(vfA), std::get<3>(vfA)); auto end = std::chrono::high_resolution_clock::now(); totalVector += end-start; } std::chrono::duration totalScalar(0); Vector<_Float16, 4, 4> vB; for(std::uint32_t i = 0; i < 4; i++) { vB.v[i] = dist(gen); } for(std::uint32_t i = 0; i < 1000000; i++) { auto start2 = std::chrono::high_resolution_clock::now(); vB.Normalize(); auto end2 = std::chrono::high_resolution_clock::now(); totalScalar += end2-start2; } std::println("{} {} {} {}", std::get<0>(vfA), std::get<1>(vfA), std::get<2>(vfA), std::get<3>(vfA)); std::println("{}", vB); std::println("Vector: {}, Scalar: {}", std::chrono::duration_cast(totalVector), std::chrono::duration_cast(totalScalar*8)); }