$ SET PATH=%PATH%;
$ export PATH=$PATH:
$ cd /src/
$ /ndk-build –C /src/ arch=intel64 compiler=gcc target=android clean tbb tbbmalloc –j
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="intel.example.pitbbcalc.MainActivity" > <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/title" android:textAppearance="?android:attr/textAppearanceLarge" /> <Button android:id="@+id/startButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/start" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <TextView android:id="@+id/pi_equally" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/pi_equally" android:textAppearance="?android:attr/textAppearanceLarge" /> <TextView android:id="@+id/pi_val" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" /> </LinearLayout> </LinearLayout> </RelativeLayout>
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">PiTBBCalc</string> <string name="action_settings">Settings</string> <string name="start">Start</string> <string name="title">Calculation of π</string> <string name="pi_equally">π = </string> </resources>
package intel.example.pitbbcalc; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; public class MainActivity extends Activity { private native double onClickCalc(); private TextView piEqually; private TextView piVal; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button startButton = (Button) findViewById(R.id.startButton); piEqually = (TextView) findViewById(R.id.pi_equally); piVal = (TextView) findViewById(R.id.pi_val); piEqually.setVisibility(View.INVISIBLE); piVal.setVisibility(View.INVISIBLE); startButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO double val = onClickCalc(); piVal.setText(String.valueOf(val)); piEqually.setVisibility(View.VISIBLE); piVal.setVisibility(View.VISIBLE); } }); System.loadLibrary("PiTBBCalc"); System.loadLibrary("tbb"); } @Override public boolean onCreateOptionsMenu(Menu menu) { // ; , . getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // . // Home/Up, // AndroidManifest.xml . int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }
#include <jni.h> #include <math.h> double piIntFunc (const double x) { return sqrt(1 - pow(x, 2.0)); } double calcPi() { const unsigned int n = pow(10.0, 7); double a(-1), b(1); double h = (b - a) / n; double x (a); for (unsigned int i (0); i < n; ++i) { sum += piIntFunc(x); x += h; } sum *= h; return 2 * sum; } extern "C" JNIEXPORT jdouble JNICALL Java_intel_example_pitbbcalc_MainActivity_onClickCalc(JNIEnv *env, jobject obj) { return calcPi(); }
LOCAL_PATH := $(call my-dir) TBB_PATH := <tbb_sources> TBB_BUILD_PATH := /build/linux_intel64_gcc_android_cc4.9_NDKr10b_version_android-L_release include $(CLEAR_VARS) LOCAL_MODULE := PiTBBCalc LOCAL_SRC_FILES := PiTBBCalc.cpp LOCAL_CFLAGS += -DTBB_USE_GCC_BUILTINS -std=c++11 -fexceptions -Wdeprecated-declarations -I$(TBB_PATH)/include -I$(TBB_PATH)$(TBB_BUILD_PATH) LOCAL_LDLIBS := -llog -ltbb -L./ -L$(TBB_PATH)$(TBB_BUILD_PATH) LOCAL_SHARED_LIBRARIES += libtbb include $(BUILD_SHARED_LIBRARY) include $(CLEAR_VARS) LOCAL_MODULE := libtbb LOCAL_SRC_FILES := $(TBB_PATH)$(TBB_BUILD_PATH)/libtbb.so include $(PREBUILT_SHARED_LIBRARY)
APP_ABI := x86_64 APP_GNUSTL_FORCE_CPP_FEATURES := exceptions rtti APP_STL := gnustl_shared
double sum = tbb::parallel_reduce( tbb::blocked_range<unsigned int>(0,n), double(0), // [&](const tbb::blocked_range<unsigned int>& r, double sum)->double { for( int i=r.begin(); i!=r.end(); ++i ) { sum += piIntFunc(x); x += h; } return sum; // }, []( double x, double y )->double { return x+y; // } );
Source: https://habr.com/ru/post/260083/
All Articles