diff --git a/examples/android/android-simple/app/src/main/cpp/KomputeJniNative.cpp b/examples/android/android-simple/app/src/main/cpp/KomputeJniNative.cpp index 25b266229..b15c89f3d 100644 --- a/examples/android/android-simple/app/src/main/cpp/KomputeJniNative.cpp +++ b/examples/android/android-simple/app/src/main/cpp/KomputeJniNative.cpp @@ -88,4 +88,27 @@ Java_com_ethicalml_kompute_KomputeJni_kompute( return vectorToJFloatArray(env, pred); } + +JNIEXPORT jfloatArray JNICALL +Java_com_ethicalml_kompute_KomputeJni_komputeParams( + JNIEnv *env, + jobject thiz, + jfloatArray xiJFloatArr, + jfloatArray xjJFloatArr, + jfloatArray yJFloatArr) { + + SPDLOG_INFO("Creating manager"); + + std::vector xiVector = jfloatArrayToVector(env, xiJFloatArr); + std::vector xjVector = jfloatArrayToVector(env, xjJFloatArr); + std::vector yVector = jfloatArrayToVector(env, yJFloatArr); + + KomputeModelML kml; + kml.train(yVector, xiVector, xjVector); + + std::vector params = kml.get_params(); + + return vectorToJFloatArray(env, params); +} + } diff --git a/examples/android/android-simple/app/src/main/java/com/ethicalml/kompute/KomputeJni.kt b/examples/android/android-simple/app/src/main/java/com/ethicalml/kompute/KomputeJni.kt index 6a3d3e6c6..66808f434 100755 --- a/examples/android/android-simple/app/src/main/java/com/ethicalml/kompute/KomputeJni.kt +++ b/examples/android/android-simple/app/src/main/java/com/ethicalml/kompute/KomputeJni.kt @@ -46,7 +46,7 @@ class KomputeJni : AppCompatActivity() { } Log.i("KomputeJni", "Vulkan Result: " + successVulkanInit) - binding.komputeJniTextview.text = "N/A" + binding.predictionTextView.text = "N/A" } fun KomputeButtonOnClick(v: View) { @@ -54,7 +54,12 @@ class KomputeJni : AppCompatActivity() { val xiEditText = findViewById(R.id.XIEditText) val xjEditText = findViewById(R.id.XJEditText) val yEditText = findViewById(R.id.YEditText) - val komputeJniTextview = findViewById(R.id.kompute_jni_textview) + + val wOneEditText = findViewById(R.id.wOneTextView) + val wTwoEditText = findViewById(R.id.wTwoTextView) + val biasEditText = findViewById(R.id.biasTextView) + + val komputeJniTextview = findViewById(R.id.predictionTextView) val xi = xiEditText.text.removeSurrounding("[", "]").split(",").map { it.toFloat() }.toFloatArray() val xj = xjEditText.text.removeSurrounding("[", "]").split(",").map { it.toFloat() }.toFloatArray() @@ -66,12 +71,23 @@ class KomputeJni : AppCompatActivity() { Log.i("KomputeJni", out.contentToString()) komputeJniTextview.text = out.contentToString() + + val params = komputeParams(xi, xj, y) + + Log.i("KomputeJni", "Params:") + Log.i("KomputeJni", params.contentToString()) + + wOneEditText.text = params[0].toString() + wTwoEditText.text = params[1].toString() + biasEditText.text = params[2].toString() } external fun initVulkan(): Boolean external fun kompute(xi: FloatArray, xj: FloatArray, y: FloatArray): FloatArray + external fun komputeParams(xi: FloatArray, xj: FloatArray, y: FloatArray): FloatArray + companion object { init { System.loadLibrary("kompute-jni") diff --git a/examples/android/android-simple/app/src/main/res/layout/activity_kompute_jni.xml b/examples/android/android-simple/app/src/main/res/layout/activity_kompute_jni.xml index f7ddae50d..97b680177 100644 --- a/examples/android/android-simple/app/src/main/res/layout/activity_kompute_jni.xml +++ b/examples/android/android-simple/app/src/main/res/layout/activity_kompute_jni.xml @@ -18,7 +18,7 @@ + android:layout_height="10dp" /> + android:layout_height="10dp" /> + android:layout_height="10dp" /> + android:layout_height="10dp" /> + android:layout_height="10dp" />