From 648ec502b1468e0402c5ad9648d3956d092cb422 Mon Sep 17 00:00:00 2001 From: Alejandro Saucedo Date: Sat, 26 Nov 2022 16:58:28 +0000 Subject: [PATCH] Updated example to map results Signed-off-by: Alejandro Saucedo --- .../logistic_regression/shader/my_shader.comp | 5 +- examples/logistic_regression/src/main.cpp | 46 +++++++++++-------- 2 files changed, 28 insertions(+), 23 deletions(-) diff --git a/examples/logistic_regression/shader/my_shader.comp b/examples/logistic_regression/shader/my_shader.comp index a7f75b0f3..6934fd29a 100644 --- a/examples/logistic_regression/shader/my_shader.comp +++ b/examples/logistic_regression/shader/my_shader.comp @@ -1,6 +1,6 @@ #version 450 -layout (constant_id = 0) const uint M = 0; +layout (constant_id = 0) const float m = 0; layout (local_size_x = 1) in; @@ -14,8 +14,6 @@ layout(set = 0, binding = 6) buffer bbin { float bin[]; }; layout(set = 0, binding = 7) buffer bbout { float bout[]; }; layout(set = 0, binding = 8) buffer blout { float lout[]; }; -float m = float(M); - float sigmoid(float z) { return 1.0 / (1.0 + exp(-z)); } @@ -52,3 +50,4 @@ void main() { lout[idx] = calculateLoss(yHat, yCurr); } + diff --git a/examples/logistic_regression/src/main.cpp b/examples/logistic_regression/src/main.cpp index e2a35ee21..3fc18f344 100644 --- a/examples/logistic_regression/src/main.cpp +++ b/examples/logistic_regression/src/main.cpp @@ -21,35 +21,41 @@ main() std::shared_ptr> y = mgr.tensor({ 0, 0, 0, 1, 1 }); std::shared_ptr> wIn = mgr.tensor({ 0.001, 0.001 }); - std::shared_ptr> wOutI = mgr.tensor({ 0, 0, 0, 0, 0 }); - std::shared_ptr> wOutJ = mgr.tensor({ 0, 0, 0, 0, 0 }); + std::shared_ptr> wOutI = + mgr.tensor({ 0, 0, 0, 0, 0 }); + std::shared_ptr> wOutJ = + mgr.tensor({ 0, 0, 0, 0, 0 }); std::shared_ptr> bIn = mgr.tensor({ 0 }); - std::shared_ptr> bOut = mgr.tensor({ 0, 0, 0, 0, 0 }); + std::shared_ptr> bOut = + mgr.tensor({ 0, 0, 0, 0, 0 }); - std::shared_ptr> lOut = mgr.tensor({ 0, 0, 0, 0, 0 }); + std::shared_ptr> lOut = + mgr.tensor({ 0, 0, 0, 0, 0 }); - const std::vector> params = { - xI, xJ, y, wIn, wOutI, wOutJ, bIn, bOut, lOut - }; - - const std::vector shader = std::vector( - shader::MY_SHADER_COMP_SPV.begin(), shader::MY_SHADER_COMP_SPV.end()); - - std::shared_ptr algo = mgr.algorithm( - params, shader, kp::Workgroup({ 5 }), std::vector({ 5.0 })); + std::vector> params = { xI, xJ, y, + wIn, wOutI, wOutJ, + bIn, bOut, lOut }; mgr.sequence()->eval(params); + std::vector spirv2{ 0x1, 0x2 }; + + std::vector spirv( + shader::MY_SHADER_COMP_SPV.begin(), + shader::MY_SHADER_COMP_SPV.end()); + + std::shared_ptr algorithm = mgr.algorithm( + params, spirv, kp::Workgroup({ 5 }), std::vector({ 5.0 })); + std::shared_ptr sq = mgr.sequence() ->record({ wIn, bIn }) - ->record(algo) + ->record(algorithm) ->record({ wOutI, wOutJ, bOut, lOut }); // Iterate across all expected iterations for (size_t i = 0; i < ITERATIONS; i++) { - sq->eval(); for (size_t j = 0; j < bOut->size(); j++) { @@ -59,12 +65,12 @@ main() } } - std::cout << "RESULTS" << std::endl; - std::cout << "w1: " << wIn->data()[0] << std::endl; - std::cout << "w2: " << wIn->data()[1] << std::endl; - std::cout << "b: " << bIn->data()[0] << std::endl; + KP_LOG_WARN("Result wIn i: {}, wIn j: {}, bIn: {}", + wIn->data()[0], + wIn->data()[1], + bIn->data()[0]); - if (wIn->data()[0] > 0.0 || + if (wIn->data()[0] > 0.01 || wIn->data()[1] < 1.0 || bIn->data()[0] > 0.0) { throw std::runtime_error("Result does not match");