Added .clang-format file and formatted everything

Signed-off-by: Fabian Sauter <sauter.fabian@mailbox.org>
This commit is contained in:
Fabian Sauter 2022-05-02 15:11:40 +02:00
parent f731f2e55c
commit 24cd307042
47 changed files with 5157 additions and 4354 deletions

View file

@ -1,19 +1,22 @@
#pragma once
#include <vector>
#include <string>
#include <iostream>
#include <string>
#include <vector>
#include "KomputeModelML.hpp"
namespace godot {
KomputeModelML::KomputeModelML() {
KomputeModelML::KomputeModelML()
{
std::cout << "CALLING CONSTRUCTOR" << std::endl;
this->_init();
}
void KomputeModelML::train(Array yArr, Array xIArr, Array xJArr) {
void
KomputeModelML::train(Array yArr, Array xIArr, Array xJArr)
{
assert(yArr.size() == xIArr.size());
assert(xIArr.size() == xJArr.size());
@ -56,15 +59,19 @@ void KomputeModelML::train(Array yArr, Array xIArr, Array xJArr) {
{
std::vector<uint32_t> spirv(
(uint32_t*)kp::shader_data::shaders_glsl_logisticregression_comp_spv,
(uint32_t*)(kp::shader_data::shaders_glsl_logisticregression_comp_spv
+ kp::shader_data::shaders_glsl_logisticregression_comp_spv_len));
(uint32_t*)
kp::shader_data::shaders_glsl_logisticregression_comp_spv,
(uint32_t*)(kp::shader_data::
shaders_glsl_logisticregression_comp_spv +
kp::shader_data::
shaders_glsl_logisticregression_comp_spv_len));
std::shared_ptr<kp::Algorithm> algo = mgr.algorithm(params, spirv);
mgr.sequence()->eval<kp::OpTensorSyncDevice>(params);
std::shared_ptr<kp::Sequence> sq = mgr.sequence()
std::shared_ptr<kp::Sequence> sq =
mgr.sequence()
->record<kp::OpTensorSyncDevice>({ wIn, bIn })
->record<kp::OpAlgoDispatch>(algo)
->record<kp::OpTensorSyncLocal>({ wOutI, wOutJ, bOut, lOut });
@ -92,20 +99,22 @@ void KomputeModelML::train(Array yArr, Array xIArr, Array xJArr) {
}
}
Array KomputeModelML::predict(Array xI, Array xJ) {
Array
KomputeModelML::predict(Array xI, Array xJ)
{
assert(xI.size() == xJ.size());
Array retArray;
// We run the inference in the CPU for simplicity
// BUt you can also implement the inference on GPU
// BUt you can also implement the inference on GPU
// GPU implementation would speed up minibatching
for (size_t i = 0; i < xI.size(); i++) {
float xIVal = xI[i];
float xJVal = xJ[i];
float result = (xIVal * this->mWeights->data()[0]
+ xJVal * this->mWeights->data()[1]
+ this->mBias->data()[0]);
float result =
(xIVal * this->mWeights->data()[0] +
xJVal * this->mWeights->data()[1] + this->mBias->data()[0]);
// Instead of using sigmoid we'll just return full numbers
Variant var = result > 0 ? 1 : 0;
@ -115,12 +124,14 @@ Array KomputeModelML::predict(Array xI, Array xJ) {
return retArray;
}
Array KomputeModelML::get_params() {
Array
KomputeModelML::get_params()
{
Array retArray;
KP_LOG_INFO(this->mWeights->size() + this->mBias->size());
if(this->mWeights->size() + this->mBias->size() == 0) {
if (this->mWeights->size() + this->mBias->size() == 0) {
return retArray;
}
@ -132,22 +143,25 @@ Array KomputeModelML::get_params() {
return retArray;
}
void KomputeModelML::_init() {
void
KomputeModelML::_init()
{
std::cout << "CALLING INIT" << std::endl;
}
void KomputeModelML::_process(float delta) {
void
KomputeModelML::_process(float delta)
{}
}
void
KomputeModelML::_register_methods()
{
register_method((char*)"_process", &KomputeModelML::_process);
register_method((char*)"_init", &KomputeModelML::_init);
void KomputeModelML::_register_methods() {
register_method((char *)"_process", &KomputeModelML::_process);
register_method((char *)"_init", &KomputeModelML::_init);
register_method((char *)"train", &KomputeModelML::train);
register_method((char *)"predict", &KomputeModelML::predict);
register_method((char *)"get_params", &KomputeModelML::get_params);
register_method((char*)"train", &KomputeModelML::train);
register_method((char*)"predict", &KomputeModelML::predict);
register_method((char*)"get_params", &KomputeModelML::get_params);
}
}