log in |
21)
Message boards :
Wish List :
Android app?
(Message 1830)
Posted 15 May 2020 by manalog Yes Valter, the strings you posted are correct. Looking forward to crunch some wu. I will put an old phone with the broken screen H24 on this project. I have seen that the WUs coming from Juanro49's device are validating correctly :) Perhaps you could put the application in "beta" mode so that few people in the forum can start testing if everything goes well before making the app public. On the other hand, I think that we will have to compare the running time because we should figure out if this app is optimized or not to work on Android. Also, it misses all SIMD extensions, right? |
22)
Message boards :
Wish List :
Android app?
(Message 1827)
Posted 14 May 2020 by manalog Good news, so it seems to be working even if the app is not compiled with the android tools and library. I tried to compile the app in this way (http://gene.disi.unitn.it/test/forum_thread.php?id=270) but it was too difficult for me; I think if someone wants to try it it should be the best way to ensure efficiency and optimization. By the way, this is a great result. So let's sum up, which android platforms has been tested by now? Aarch64? Arm (32 bit)? Intel x86? I do not own a rooted android device, but I think we could ask valterc to set the server to provide a beta android app (with the same binary of OpenWRT) so that we can test it. |
23)
Message boards :
Number crunching :
Please fix computer #57018 - only invalids!
(Message 1801)
Posted 22 Apr 2020 by manalog I have found another one of these bad hosts: #34120 |
24)
Message boards :
Number crunching :
SSE3 optimization and Android binary
(Message 1792)
Posted 19 Apr 2020 by manalog I tried all day, but I am not able to do it. Now I receive BoincFile.cpp:22:18: fatal error: string: No such file or directory
#include <string>
^
compilation terminated.
Makefile:79: recipe for target 'BoincFile.o' failed
make: *** [BoincFile.o] Error 1
and this is weird because string.h is a basic C++ library.I give up the idea, I hope that someone more experienced than me may do it. In case, my only suggestion is to build for all the possible platforms: once you are able to compile it's a matter of minutes to compile for several platforms, and it would be an added value to tn-grid. For example, in this moment no projects are able to run on android-x86. [/code] |
25)
Message boards :
Number crunching :
SSE3 optimization and Android binary
(Message 1790)
Posted 19 Apr 2020 by manalog double post |
26)
Message boards :
Number crunching :
SSE3 optimization and Android binary
(Message 1789)
Posted 19 Apr 2020 by manalog Thank you for your hints, Daniel. I tried to go further in the compilation. Please keep in mind that I am an absolute beginner in the field so it is possible that I am doing silly mistakes. What I've done: 1) Downloaded the android-r21 ndk. I think they changed something from the older version, in particular the compiler binary; 2) Compiled boinc for android-arm using the scripts provided in the source tree. The script compiled also an android toolkit (android-tc) and everything went smooth (and very fast despite I am using just a Core2Duo laptop) 3) I modified the Makefile present in PC-IM source tree using your suggestion:
# SSE2, 64-bit
#ARCH += -march=core2 -mtune=core2 -m64
# AVX, 64-bit
#ARCH += -march=core2 -mtune=generic -msse4.2 -mpopcnt -maes -mpclmul -mavx -m64
# AVX+FMA, 64-bit
#ARCH += -march=core2 -mtune=generic -msse4.2 -mpopcnt -maes -mpclmul -mavx -mfma -m64
# AVX2+FMA, 64-bit
#ARCH += -march=core2 -mtune=generic -msse4.2 -mpopcnt -maes -mpclmul -mavx -mfma -mavx2 -m64
# 32-bit, no SIMD
#ARCH += -m32 -mno-sse
# SSE2, 32-bit
#ARCH += -march=core2 -mtune=core2 -m32
# AVX, 32-bit
#ARCH += -march=core2 -mtune=generic -msse4.2 -mpopcnt -maes -mpclmul -mavx -m32
# AVX+FMA, 32-bit
#ARCH += -march=core2 -mtune=generic -msse4.2 -mpopcnt -maes -mpclmul -mavx -mfma -m32
#--- nuovo ---
ARCH += -march=armv7-a -mtune=cortex-a7 -mfpu=vfpv4 -mfloat-abi=softfp
LDFLAGS += -Wl,--fix-cortex-a8
#PIE ?= 0
#$(info Using PIE=$(PIE))
#ifeq ($(PIE),1)
#CFLAGS += -fPIE
#LDFLAGS += -fPIE -pie
#BOINC_DIR = ../../_boinc32pie/
#else
LDFLAGS += -fno-PIE -no-pie
BOINC_DIR = /home/matteo/Software/boinc
#endif
#TOOLPATH = ../../$(TOOLDIR)
CFLAGS = --sysroot=/home/matteo/Software/android-ndk-r21/toolchains/llvm/prebuilt/linux-x86_64/sysroot/ -DANDROID -DDECLARE_TIMEZONE -Ic:"/home/matteo/Software/android-ndk-r21/toolchains/llvm/prebuilt/linux-x86_64/include/c++/4.9.x/"
LDFLAGS = --sysroot=/home/matteo/Software/android-ndk-r21/toolchains/llvm/prebuilt/linux-x86_64/sysroot/
CC = /home/matteo/Software/android-ndk-r21/toolchains/llvm/prebuilt/linux-x86_64/bin/clang
CXX = /home/matteo/Software/android-ndk-r21/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++
#--- vecchio ---
#CC ?= gcc
#CXX ?= g++
#ARCH += -march=core2 -mtune=core2 -m64 -msse3 -mssse3
#BOINC_DIR ?= ../../..
BOINC_API_DIR ?= $(BOINC_DIR)/api
BOINC_LIB_DIR ?= $(BOINC_DIR)/lib
BOINC_ZIP_DIR ?= $(BOINC_DIR)/zip
BOINC_LIBS ?= $(BOINC_API_DIR)/libboinc_api.a $(BOINC_LIB_DIR)/libboinc.a
ifdef BOINC_STUB
BOINC_DIR = ../boinc_stub
BOINC_LIBS =
endif
FREETYPE_DIR = /usr/include/freetype2
CPPFLAGS += -I$(BOINC_DIR) -I$(BOINC_LIB_DIR) -I$(BOINC_API_DIR) -I$(BOINC_ZIP_DIR) -I$(FREETYPE_DIR) -Isimd
#CFLAGS += -c -O3 $(ARCH) -Wall -Wextra -pedantic -Werror $(VARIANTFLAGS) -MMD -MP
#CXXFLAGS += $(CFLAGS) -std=gnu++11
#LDFLAGS += $(ARCH) -L/usr/X11R6/lib -L.
LIBS ?= -static-libgcc -static-libstdc++ -pthread -Wl,-Bstatic -lbz2
CXXSOURCES = BoincFile.cpp Graph.cpp boinc_functions.cpp utility.cpp pc.cpp main.cpp
CSOURCES = erf.c
OBJECTS = $(CXXSOURCES:.cpp=.o) $(CSOURCES:.c=.o)
EXECUTABLE = ../bin/pc
all: $(EXECUTABLE)
$(EXECUTABLE): $(OBJECTS)
$(CXX) $(LDFLAGS) $(OBJECTS) -o $@ $(LIBS) $(BOINC_LIBS)
.cpp.o:
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $< -o $@
.c.o:
$(CC) $(CPPFLAGS) $(CFLAGS) $< -o $@
clean:
rm -rf ../bin/$(EXECUTABLE) *.o *~ *.d
.PHONY: all clean
-include $(CXXSOURCES:.cpp=.d) $(CSOURCES:.c=.d)
Unfortunately, this does not work because it misses a "config.h" file needed by "parse.h": /home/matteo/Software/boinc/lib/parse.h:26:10: fatal error: 'config.h' file not found This is weird because I am using the official source tree of boinc and it should be error free. Daniel, do you still have the binary you compiled? Perhaps they are still valuable and we don't have to re-do the work again ;) They are no longer present in the archived you linked in your old post. |
27)
Message boards :
Number crunching :
SSE3 optimization and Android binary
(Message 1747)
Posted 3 Apr 2020 by manalog Ok so regarding the SIMD optimization I'll remain stick to the package provided by the server. It's fine as long as I am using my (slow) cpu efficiently. Regarding Android, I think it is very easy for anyone with a clue on programming. I'm a complete newbie and nonetheless I was close to success only by following the official guide. I compiled the android_tc and and boinc libraries only by copying the commands. The problem was with the final step, that is, compiling "pc". I stopped just because the script provided by Boinc assumes that your app has a configure script, while "pc" has only a script that calls g++ and make and I do not know how to fix this, but just because I am ignorant: I recognize that it just matter of typing the right commands (calling the c++ compiler from the android toolchain) ;) I can work on that by studying the procedure, but if you want take a look at it before I spend time just learning the basics. This is the script: #!/bin/sh
set -e
#
# See: http://boinc.berkeley.edu/trac/wiki/AndroidBuildApp
#
# Script to compile a generic application on Android
export ANDROID_TC="${ANDROID_TC:-$HOME/android-tc}"
export ANDROIDTC="${ANDROID_TC_X86:-$ANDROID_TC/x86}"
export TCBINARIES="$ANDROIDTC/bin"
export TCINCLUDES="$ANDROIDTC/i686-linux-android"
export TCSYSROOT="$ANDROIDTC/sysroot"
export STDCPPTC="$TCINCLUDES/lib/libstdc++.a"
export PATH="$TCBINARIES:$TCINCLUDES/bin:$PATH"
export CC=i686-linux-android-gcc
export CXX=i686-linux-android-g++
export LD=i686-linux-android-ld
export CFLAGS="--sysroot=$TCSYSROOT -DANDROID -Wall -I$TCINCLUDES/include -O3 -fomit-frame-pointer -fPIE"
export CXXFLAGS="--sysroot=$TCSYSROOT -DANDROID -Wall -O3 -fomit-frame-pointer -fPIE"
export LDFLAGS="-L$TCSYSROOT/usr/lib -L$TCINCLUDES/lib -llog -fPIE -pie"
export GDB_CFLAGS="--sysroot=$TCSYSROOT -Wall -g -I$TCINCLUDES/include"
make clean
if [ -e "./configure" ]; then
./configure --host=i686-linux --prefix="$TCINCLUDES" --libdir="$TCINCLUDES/lib" --disable-shared --enable-static
fi
make
all the files called by the script are created by other scripts included in the directory.[/code] |
28)
Message boards :
Science :
SARS-CoV-2 virus
(Message 1744)
Posted 3 Apr 2020 by manalog This is a very interesting answer, thank you! |
29)
Message boards :
Number crunching :
SSE3 optimization and Android binary
(Message 1743)
Posted 3 Apr 2020 by manalog Hi all, I tried to compile "pc" using SSE3 instruction in order to run it on Core2 processor. The results of the test run do not seem exciting:
WITH SSE3
bin/pc input/tile.txt output/output.txt 0.05 1 393 0
Loading: 0.164
computeStandardDeviations: 0.001
computeCorrelations: 0.350
pcAlgorithm, l 0: 0.013
pcAlgorithm, l 1: 0.698
pcAlgorithm, l 2: 0.349
pcAlgorithm, l 3: 0.046
pcAlgorithm, l 4: 0.015
pcAlgorithm, l 5: 0.004
pcAlgorithm, l 6: 0.001
pcAlgorithm, l 7: 0.000
pcAlgorithm, l 8: 0.000
I file output/output.txt e output/ref_output.txt sono identici
WITHOUT SSE3
bin/pc input/tile.txt output/output.txt 0.05 1 393 0
Loading: 0.167
computeStandardDeviations: 0.001
computeCorrelations: 0.374
pcAlgorithm, l 0: 0.013
pcAlgorithm, l 1: 0.691
pcAlgorithm, l 2: 0.355
pcAlgorithm, l 3: 0.048
pcAlgorithm, l 4: 0.015
pcAlgorithm, l 5: 0.004
pcAlgorithm, l 6: 0.001
pcAlgorithm, l 7: 0.000
pcAlgorithm, l 8: 0.000
I file output/output.txt e output/ref_output.txt sono identici
WITHOUT SSE3
bin/pc input/tile2.txt output/output2.txt 0.05 1 2470 0
Loading: 0.354
computeStandardDeviations: 0.001
computeCorrelations: 0.083
pcAlgorithm, l 0: 0.001
pcAlgorithm, l 1: 0.026
pcAlgorithm, l 2: 0.440
pcAlgorithm, l 3: 3.057
pcAlgorithm, l 4: 6.627
pcAlgorithm, l 5: 7.104
pcAlgorithm, l 6: 5.675
pcAlgorithm, l 7: 3.771
pcAlgorithm, l 8: 3.020
pcAlgorithm, l 9: 1.796
pcAlgorithm, l 10: 1.053
pcAlgorithm, l 11: 0.550
pcAlgorithm, l 12: 0.270
pcAlgorithm, l 13: 0.098
pcAlgorithm, l 14: 0.029
pcAlgorithm, l 15: 0.006
pcAlgorithm, l 16: 0.001
pcAlgorithm, l 17: 0.000
pcAlgorithm, l 18: 0.000
I file output/output2.txt e output/ref_output2.txt sono identici
WITH SSE3:
bin/pc input/tile2.txt output/output2.txt 0.05 1 2470 0
Loading: 0.229
computeStandardDeviations: 0.001
computeCorrelations: 0.086
pcAlgorithm, l 0: 0.001
pcAlgorithm, l 1: 0.027
pcAlgorithm, l 2: 0.445
pcAlgorithm, l 3: 3.089
pcAlgorithm, l 4: 6.959
pcAlgorithm, l 5: 7.226
pcAlgorithm, l 6: 5.636
pcAlgorithm, l 7: 3.744
pcAlgorithm, l 8: 2.985
pcAlgorithm, l 9: 1.796
pcAlgorithm, l 10: 1.055
pcAlgorithm, l 11: 0.556
pcAlgorithm, l 12: 0.272
pcAlgorithm, l 13: 0.104
pcAlgorithm, l 14: 0.031
pcAlgorithm, l 15: 0.007
pcAlgorithm, l 16: 0.001
pcAlgorithm, l 17: 0.000
pcAlgorithm, l 18: 0.000
I file output/output2.txt e output/ref_output2.txt sono identici Actually, it looks that the version of pc provided by Tn-grid, although it only supports SSE2, runs like the version I compiled for SSE3 using -march=core2 -mtune=core2 -m64 -msse3 -mssse3 . Should I leave the idea to optimize "pc" for SSE3 or there is some option I can add to achieve some tangible improvement?I take the occasion to ask someone more experienced than me if it is easy to compile pc for Android-x86_64 and Android-arm. I would like to do it and of course I would give the binary to anyone if I succeed. I compiled the android toolchain from the boinc package but then I do not know in which way should I modify the "make" file in the pc-boinc source to point to the android libraries and compiler instead of the standard g++ compiler. Sorry for my confusion but I am not a programmer, I just wanted to make a tentative in order to crunch Tn-grid's WUs on Android devices too. Considered that it looks like a very easy task for someone who know how to do it: is there any volunteer who wants to compile tn-grid for Android instead of me? Or perhaps suggesting me the needed steps? I think it could be of great value for the whole community! |
30)
Message boards :
Science :
SARS-CoV-2 virus
(Message 1740)
Posted 3 Apr 2020 by manalog This is really a great news! Nonetheless it makes me raise a question... As far as I understood of this project (the science behind is a bit difficult for the non-scientists) I know that one of your main goal is to publish the "OneGeneE" database, where you are going to provide to the researchers with all the gene networks expansions we are computing. Now, I assume that you are going to publish this database after the computation of all the queued genes for the Homo Sapiens research. This, according to the "science status" page, will require 3,37 years from now. This can be ok if we consider a "normal" basic research with a large possible timespan. Things are different if we are talking about knowing more of the pandemic that is struggling the world now: it is evident that science needs all the results as soon as possible, in terms of months. So I was wondering, could it be possible that you publish the OneGeneE database just after we finish the computation of the SARS-CoV-2 related genes? In this way researches from all over the world could benefit immediately from the great job you do in Trento and perhaps speeding up the search for a cure. After all, at the actual pace, the computation on the 1242 genes you inserted would require only 24 days! Is this possible? Or must the computation go through other steps before the publication? In particular I've read somewhere on this site about another software you have to run after boinc's results plus lab tests that of course require time and work of human beings. Is this the case also for the publication of the database? Thank you for answering my doubts and thank you for your job. |
31)
Message boards :
Number crunching :
Optimization
(Message 684)
Posted 23 Dec 2016 by manalog I tried SSE2 optimized app on my Xeon L5420 running linux and times are passed from 8500s to 4500s! It's really impressive, thank you for your work. |
32)
Message boards :
Science :
OneGenE experiments
(Message 550)
Posted 9 May 2016 by manalog Great! Thank you for this update, I'm very interested in the purpose of the project. So you are computing models of expansion of local gene networks: do you still need to modulate computing power to laboratory needs or this phase does need only huge computing power? I suggest you to put in the "server status" page the status of the research, maybe putting the decreasing number of gene still to expand, I think is very useful to sprone users to contribute. Have luck, I will continue my support. |
33)
Message boards :
News :
gene@home: Scientific Results (June 2015)
(Message 548)
Posted 25 Mar 2016 by manalog Hi, any news from the research? |