Search code examples
tensorflowx86tizen

How can I use Tensorflow in tizen studio?


I want to use tensorflow in tizen.

Tizen studio's architecture is x86.
But tensorflow is only 64-bit. How can I use tensorflow in tizen studio??


Solution

  • Download packages for target device

    • tensorflow
    • python
    • db4
    mkdir tmp
    cd tmp
    
    BASE_URL='http://download.tizen.org/snapshots/tizen/5.0-base/latest/repos/standard/packages/armv7l/'
    wget -O - $BASE_URL 2>/dev/null | egrep 'db4-[0-9]' | awk -F'"' '{print $2}' | xargs -i wget $BASE_URL{}
    wget -O - $BASE_URL 2>/dev/null | egrep 'python-[0-9]' | awk -F'"' '{print $2}' | xargs -i wget $BASE_URL{}
    
    UNIFIED_URL='http://download.tizen.org/snapshots/tizen/5.0-unified/latest/repos/standard/packages/armv7l/'
    wget -O - $UNIFIED_URL 2>/dev/null | grep 'tensorflow-v' | awk -F'"' '{print $2}' | xargs -i wget $UNIFIED_URL{}
    

    Install packages on target device

    sdb root on; sdb shell 'mount -o remount,rw /'
    sdb push *.rpm /tmp
    
    sdb shell 'cd /tmp; rpm -ivh --force db4*.rpm; rpm -ivh --force *python*.rpm; rpm -ivh --force tensorflow*.rpm'
    
    cd ..
    rm -r tmp
    

    Download packages needed for building

    • tensorflow
    • tensorflow-devel
    • libpython-2.7
    • libgfortran
    • libgomp
    mkdir tmp
    cd tmp
    
    BASE_URL='http://download.tizen.org/snapshots/tizen/5.0-base/latest/repos/standard/packages/armv7l/'
    wget -O - $BASE_URL 2>/dev/null | grep 'libpython-2.7' | awk -F'"' '{print $2}' | xargs -i wget $BASE_URL{}
    wget -O - $BASE_URL 2>/dev/null | grep 'libgfortran-' | awk -F'"' '{print $2}' | xargs -i wget $BASE_URL{}
    wget -O - $BASE_URL 2>/dev/null | grep 'libgomp-' | awk -F'"' '{print $2}' | xargs -i wget $BASE_URL{}
    
    UNIFIED_URL='http://download.tizen.org/snapshots/tizen/5.0-unified/latest/repos/standard/packages/armv7l/'
    wget -O - $UNIFIED_URL 2>/dev/null | grep 'tensorflow' | grep -v 'lite' | awk -F'"' '{print $2}' | xargs -i wget $UNIFIED_URL{}
    

    Extract header and so files and selectively import to project lib folder

    ls *.rpm | xargs -i bash -c "rpm2cpio {} | cpio -idmv"
    
    cd usr/lib/
    ln -s libpython2.7.so.1.0 libpython2.7.so
    ln -s libgfortran.so.3 libgfortran.so
    
    cp libgfortran.so* libgomp.so.1* libpython2.7.so* libpywrap_tensorflow_internal.so ../../../lib/
    
    cd ../include
    cp -r tensorflow ../../../inc/
    
    cd ../../..
    rm -r tmp
    

    Set up include path in Tizen Studio project

    screenshot

    Set up library path and add libraries to Tizen Studio project

    screenshot

    Note that if you want to build the project for emulator, you have to use library files for x86 architecture, so you would have to replace "armv7l" in all the URLs above with "i686"