The document outlines Starmap, an in-browser planetarium software project for education. It discusses problems encountered with stars bunching up, and the solution of converting hours to degrees to fix the math. The project imports star coordinates and creates virtual stars in the browser, simulating earth's rotation. It has advantages of being easily expandable, open source, and graphics-light. Short term needs include adding more constellations and long term goals involve other astronomical objects and improved user interface.
Krishantering m奪ste vara enkel f旦r att fungera. Det norska f旦retaget Pilotech AS har utvecklat en digital plattform d辰r Morten K淡pke, som 辰r pappan bakom innovationen, har digitaliserat beredskapsplanen. Det 辰r en allt-i-ett l旦sning, InCaseIT, d辰r du kan v辰lja moduler som passar din organisation. Pilotech 辰r en samarbetspartner till Jans辰ter Kriskommunikation.
The document outlines Starmap, an in-browser planetarium software project for education. It discusses problems encountered with stars bunching up, and the solution of converting hours to degrees to fix the math. The project imports star coordinates and creates virtual stars in the browser, simulating earth's rotation. It has advantages of being easily expandable, open source, and graphics-light. Short term needs include adding more constellations and long term goals involve other astronomical objects and improved user interface.
Krishantering m奪ste vara enkel f旦r att fungera. Det norska f旦retaget Pilotech AS har utvecklat en digital plattform d辰r Morten K淡pke, som 辰r pappan bakom innovationen, har digitaliserat beredskapsplanen. Det 辰r en allt-i-ett l旦sning, InCaseIT, d辰r du kan v辰lja moduler som passar din organisation. Pilotech 辰r en samarbetspartner till Jans辰ter Kriskommunikation.
The document proposes an operation zone based load balancer to improve user responsiveness on multicore embedded systems. It aims to reduce the costs of frequent task migration by the existing load balancers. The proposed approach divides the CPU utilization range into three zones - cold, warm and hot. The load balancer operates less frequently in the cold zone and more frequently in the hot zone, with intermediate behavior in the warm zone. Evaluation shows the approach reduces scheduling latency compared to CPU affinity based and non-affinity based systems under stress tests.
This document summarizes a research paper on a user-aware power management system for mobile devices. The proposed system consists of four main components: a user-space client, a sleep time manager, a sleep level controller, and a battery timer. It aims to extend battery life by controlling when devices suspend, shut off, or reboot based on the determined sleep patterns of users. Evaluation of the system showed that it could save 18-34% more power compared to existing systems.
This document describes a distributed compilation system called DistCom that utilizes idle computing resources across a network to speed up software build processes. It presents a distributed server/client model using object files as the basic unit. It also discusses CPU scheduling techniques for remote PC resources and cross-compiling for heterogeneous architectures. An evaluation shows DistCom can reduce a mobile platform build time by 65% compared to a local build, achieving performance similar to an 8-core PC using 10 distributed machines.
This document discusses NUMA (Non-Uniform Memory Access) architectures and strategies for optimizing performance on NUMA systems. It proposes a user-space scheduler called UNAS that would automatically bind processes to NUMA nodes to improve locality and avoid unnecessary latency. UNAS would monitor NUMA topology and usage, distribute workloads across nodes, and migrate processes and memory as needed to maintain balance and minimize contention. The goal is to provide good performance out of the box without requiring manual tuning.
This document describes a technique called Booting Booster (BB) to reduce the booting time of consumer electronics devices. BB includes kernel-space and user-space components that work together to optimize the booting process. It uses approaches like an improved RCU synchronization algorithm, isolating critical boot services into a group, and lightweight initialization to reduce the overall booting time from 8.1 seconds to 3.5 seconds based on tests of a Samsung smart TV.
8. 8/13
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# Here we give our module name and source file(s)
LOCAL_MODULE := stream
LOCAL_SRC_FILES := stream.c
LOCAL_LDLIBS := -lgomp
LOCAL_CFLAGS := -O3 -fopenmp
#include $(BUILD_SHARED_LIBRARY)
include $(BUILD_EXECUTABLE)
How to write a source code
A tests/device/test-openmp/BROKEN_BUILD 1 line
A tests/device/test-openmp/jni/Android.mk 9 lines
A tests/device/test-openmp/jni/Application.mk 1 line
A tests/device/test-openmp/jni/openmp.c 22 lines
9. 9/13
$ cat ./openmptest.c
#include <omp.h> /* for openmap */
#include <stdio.h>
int main (int argc, char *argv[ ]) {
int id, nthreads;
#pragma omp parallel private(id)
{
id = omp_get_thread_num();
printf("Hello World from thread %d n", id);
#pragma omp barrier
if ( id == 0 ) {
nthreads = omp_get_num_threads();
printf("There are %d threadsn",nthreads);
} }
return 0;
} /* end of main() */
How to write a source code
$ ./arm-linux-androideabi-gcc openmptest.c -L
/usr/local/ktoolchain-cortexa9-ver2.5-20120515-bionic/arm-linux-androideabi/lib
-lgomp -o openmptest [ENTER]
$
$ file ./openmptest
./openmptest: ELF 32-bit LSB executable, ARM, version 1 (SYSV),
dynamically linked (uses shared libs), not stripped
$
10. 10/13
An example of 40 pieces of Fibonacci numbers - http://en.wikipedia.org/wiki/Fibonacci_number
How to write a source code for evaluation
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <omp.h>
#include <unistd.h> /* for open/close.. */
#include <fcntl.h> /* for O_RDONLY */
#include <sysioctl.h> /* for ioctl */
#include <systypes.h> /* for lseek() */
int Fibonacci(int n)
{ int x, y;
if (n < 2)
return n;
else {
x = Fibonacci(n - 1);
y = Fibonacci(n - 2);
return (x + y);
} }
int FibonacciTask(int n)
{ int x, y;
if (n < 2)
return n;
else {
#pragma omp task shared(x)
x = Fibonacci(n - 1);
#pragma omp task shared(y)
y = Fibonacci(n - 2);
#pragma omp taskwait
return (x + y);
} }
#define MAX 41
int main(int argc, char * argv[])
{
int FibNumber[MAX] = {0};
struct timeval time_start, time_end;
int i = 0;
// omp related print message
printf("Number of CPUs=%dn", omp_get_num_procs());
printf("Number of max threads=%dn",
omp_get_max_threads());
gettimeofday(&time_start, NULL);
#pragma omp parallel
{
#pragma omp single private(i)
for(i = 1; i < MAX; i++) {
FibNumber[i] = FibonacciTask(i);
}
}
gettimeofday(&time_end, NULL);
time_end.tv_usec = time_end.tv_usec-time_start.tv_usec;
time_end.tv_sec = time_end.tv_sec-time_start.tv_sec;
time_end.tv_usec += (time_end.tv_sec*1000000);
printf("Time of Fibonacci with OpenMP : %lf secn",
time_end.tv_usec / 1000000.0);
for(i = 0; i < MAX; i++)
printf("%d ", FibNumber[i]);
printf("n--------------------------------------
n");
return
(1)
(2)
(3)
11. 11/13
Evaluation
Singlecore Dualcore Quadcore
before 7.4 7.4 7.4
after 7.4 4.3 2.7
0
1
2
3
4
5
6
7
8
ExecutionTime(Seconds)
Fibonacci comparison between before (w/o biomp) and after (w/ biomp)
40 numbers of Fibonacci sequence
41% reduced
over Singlecore
64% reduced
over Singlecore
#7:
This patch enables OpenMP support in the Android NDK by modifying the following:
Specify that pthreads are supported in -lc instead of -lpthread (linux-android.h)
Change the order of ANDROID_LIB_SPEC and LINUX_TARGET_LIB_SPEC so the above change will take precedence (linux-eabi.h)
Modified autoconf for libgomp to check to see if the pthread libraries exist in libc (configure.ac)
Added include to env.c so PAGE_SIZE is defined.
To enable these changes, add "--enable-libgomp" to configure command under build-gcc.sh.
#8: https://android-review.googlesource.com/#/c/48617/
http://source.android.com/source/submit-patches.html
https://android-review.googlesource.com/#/settings/new-agreement
https://android-review.googlesource.com/#/admin/projects/
repo init -u https://android.googlesource.com/toolchain/manifest
https://android-review.googlesource.com/#/ Patch list
[invain@invain gcc]$ git commit -s
[gcc-geunsik 92c478d] Support OpenMP for task parallelism on Android-ICS/GCC-4.6.3
5 files changed, 63 insertions(+), 4 deletions(-)
[invain@invain gcc]$ ../repo upload
Upload project gcc/ to remote branch master:
branch gcc-geunsik ( 1 commit, Tue Dec 25 14:28:35 2012 +0900):
92c478db Support OpenMP for task parallelism on Android-ICS/GCC-4.6.3
to https://android-review.googlesource.com/ (y/N)? y
Counting objects: 23, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (12/12), done.
Writing objects: 100% (12/12), 2.00 KiB, done.
Total 12 (delta 11), reused 0 (delta 0)
remote: Receiving objects: 100% (12/12)
remote: Resolving deltas: 100% (11/11)
remote: Processing changes: new: 1, done
remote:
remote: New Changes:
remote: https://android-review.googlesource.com/48617
remote:
To https://android-review.googlesource.com/p/toolchain/gcc
* [new branch] gcc-geunsik -> refs/for/master
----------------------------------------------------------------------
[FAILED] gcc/ gcc-geunsik (Upload failed)
[invain@invain gcc]$