Last Mile Wireless Workshop (2006). MMPI A Collaborative Framework for Wireless Devices. Daniel C. ... tention rate of the new material they are covering.
Last Mile Wireless Workshop (2006)
MMPI A Collaborative Framework for Wireless Devices Daniel C. Doolan, Sabin Tabirca Department of Computer Science, University College Cork, Ireland
Abstract The Mobile Message Passing Interface (MMPI) is a newly developed Java based library that provides message passing functions for Bluetooth enabled mobile devices. The library allows for the rapid development of Bluetooth enabled applications. It abstracts the developer from the underlying Bluetooth specific code and provides an accessible set of message passing functions to carry out inter-device communication. The main features of the library are presented and some practical applications of its use within the domains of Parallel Computation, Bluetooth enabled Gaming and Mobile Learning (M-Learning) are explored. Categories and Subject Descriptors (according to ACM CCS): D.1.3 [Programming Techniques]: Concurrent Programming K.3.1 [Computers and Education]: Computer Uses in Education - Collaborative Learning, Computerassisted Instruction (CAI)
1. Introduction Sales for mobile devices now outstrip that of standard personal computers by a ratio of about 4:1. By June 2005 over 700 million Java enabled phones were on the market. Ireland has seen a significant increase in mobile phone usage in just a few years. In 2001 market penetration in Ireland stood at a mere 67% [RTE01], by March 2005 it had reached 94% [RTE05b] with 100% being achieved by September. Ireland now joins Spain, Finland the Netherlands and Austria as the few European countries with 100% mobile phone usage [RTE05a]. The top country is currently Luxembourg with a staggering 156% penetration. Western Europe should exceed 100% usage by 2007. It is expected that half the worlds population (four billion people) will be users of mobile phone technology by 2015 [RTE04]. Personal Digital Assistants are also seeing a great increase in their uptake around the world. This is partly due to new facilities such as wireless email access and GPS positioning. The third quarter of 2005 showed a 21% increase in sales over the corresponding period of the previous year [Mag05]. Last year (2005) saw the shipping of almost 15 million PDA’s. This trend has continued into this year with the first quarter sales for 2006 running at 3.653 Million units. One can clearly see that mobile computing is one of the most successful technological developments to have emerged on to the global stage.
Processor speeds of mobile devices are continuously rising for example 4th October 2005 saw the announcement of the 1Ghz Cortex-A8 processor by ARM [ARM05a] [ARM05b] [Pil05]. With processing power such as this in the not too distant future the phones of tomorrow may be as powerful as the desktop computers of today. Many of the current day Smartphones such as the Nokia 6630 and 6680 operate with a 220Mhz processor [Bak05] [Mur05]. It is clear that there is potentially a huge market for mobile applications. The majority of applications available for mobile devices seem to be games. With more and more powerful processors the rendering capabilities of such devices are rapidly increasing. This allows for more complex and interesting games to be developed. People may sometimes find that playing against a computer can become boring after a while. This is where Bluetooth technology can be useful to allow gamers to play against each other, adding unpredictability and extra challenge to the game. The number of Bluetooth enabled games that are currently available are quite limited, but perhaps this may evolve in the future. In such case it would prove extremely useful to have a library to abstract the programmer from having to develop Bluetooth specific code for every Bluetooth enabled game they may develop [DHCK05]. Bluetooth gaming is just one aspect, another more practical use is within the realm of M-Learning. The modern day class room, usually beings the day with the teacher having
Daniel C. Doolan, Sabin Tabirca / MMPI A Collaborative Framework for Wireless Devices
to request the students to “turn off their mobiles”, as they can prove to be a distraction during class due to unwanted phone calls and text messages. All teenagers of the 21st century are more than adept in the use of mobile technology such as phones. Many spend hours each day using the phone for chatting, messaging, downloading wallpaper and ringtones and of course playing java games. The provision of a means to allow students to interact with their phones within the learning environment could significantly increase the retention rate of the new material they are covering. It has long been known that the best way to remember is to “see, hear and do”. Therefore by providing a means such as using their phones to “do” they can be motivated to learn with a tool that they have completely mastered and enjoy to use. As well as the necessity to have a multi-modal method to learn well, one must also be interested in the subject topic. Many students find subjects such as Mathematics a daunting task to master, and quickly loose interest in the subject. Allowing them to learn in an interactive way, by using their phones could help to regain their interest. This is one of the main requirement necessary for one to learn, no matter what the topic.
Another area where mobile technology can be of use is within the area of parallel computing. Modern Mobile devices are very small in size, therefore their processing speed and battery life is limited. Many of the 3G phones of today have processor speeds in the order of 220Mhz giving an integer arithmetic speed of about 60 million operations per second. The battery life is usually sufficient to last for several days when used “as a phone”. Running processor intensive applications such as games can dramatically reduce the battery runtime.
People may not always have access to powerful laptops of desktop system, but one can say that they always have access to at least one mobile device. As with desktop systems if a problem is too large to compute in a reasonable time on one system, the solution is to use multiple systems to compute the result. The same is even more so prevalent with mobile devices. One may have a problem that would take too long to compute in a reasonable time, but also a single device may not have sufficient battery power to complete the computation. This is where collaborative mobile computing comes into play. By using Bluetooth technology and message passing one can develop parallel programs, thereby reducing processing times and ensuring sufficient battery power to complete the task. One example of its use is at a meeting where a large problem needs to be computed but, their isn’t access to a powerful computer. Typically everybody at the meeting would have a mobile device, hence the devices can collaborate to get the job done, there by the “whole being greater than the sum of its parts”.
1.1. Motivation Clearly their is a need for a library to allow for the collaborative interaction of mobile devices. Hence the development of the Mobile Message Passing Library to achieve this. The primary aim of this paper is to describe that library, and how it may be applied to the fields of parallel computing, Bluetooth gaming, and M-Learning.
1.2. What is Bluetooth, Why is it Important? Bluetooth (also known as IEEE 802.15) [Blua] [Blub] is a low power short range communications system (maximum range approximately 100 meters for a Class 1 product). It was named in honour of Harald Blatand “Bluetooth” II, King of Denmark from 940 to 981. He was renowned for getting people to talk to each other. Hence the modern usage of “Bluetooth” within the realm of short range communications. The Bluetooth specification was first developed by Ericsson, later being formalised by the Bluetooth Special Interest Group (SIG). It was established by Sony Ericsson, IBM, Intel, Toshiba and Nokia. It is a wireless system whose core consists of a radio frequency (RF) transceiver, baseband and protocol stack. Communication is carried out using the 2.4Ghz band (in the U.S known as the Industrial-ScientificMedical (ISM) band). The frequency band is divided into 79 separate channels 1Mhz apart (from 2.402 to 2.480Ghz). The system also employs channel hopping, changing channels 1,600 times per second. The Bluetooth 1.2 specification defines the maximum data rate to be 1 Mbits/s (723Kbits/s real throughput). The Bluetooth 2.0 specification (Enhanced Data Rate) was ratified in November of 2004. Under this new specification the maximum throughput is 3 Mbits/s (2.1Mbits/s actual throughput). Bluetooth has many uses, for example one can connect to the Internet using their Personal Computer (PC) via a modern day phone. It allows for connection speeds several times faster than that of a 56K modem. This is achieved by using a Bluetooth connection between the phone and PC. It has sufficient bandwidth to enable streaming of audio files. Several wireless HiFi systems are currently available that no longer require looms of cable to connect up the speakers. This even allows for the placement of speakers throughout a house. Many Global Positioning Systems (GPS) units are Bluetooth enabled allowing the GPS data to be transmitted to another Bluetooth enabled device such as PDA’s or Laptops. A Client / Server application can be easily developed using Bluetooth as the communications medium. This allows the developer to produce networked games or perhaps parallel computation applications on a set of devices, for example over a Piconet.
Daniel C. Doolan, Sabin Tabirca / MMPI A Collaborative Framework for Wireless Devices
1.3. Message Passing Message Passing is the standard by which the majority of parallel computing machines operate on. The Message Passing Interface (MPI) was introduced in 1992 greatly simplifying the process of writing parallel programs. MPI is a library specification for message passing. One of the most well known and freely available MPI implementations is the MPICH library [MPI]. Parallel computing has traditionally been limited to the C or Fortran programming languages although Java based systems have been developed such as mpiJava [HPJ]. The mpiJava implementation is simply a wrapper class that accesses the C implementation through a series of Java Native Interface (JNI) calls. Message Passing in Java (MPJ) is an example of a complete Java solution to message passing [MPJ] [MB00]. All mpiJava programs have an identical structure (Listing 1). The world is created by calling MPI.Init(args) this sets up the message passing system. All code that appears between the Init method and the finalize method may run in parallel. The majority of programs carry out tasks based on their assigned rank based on the total number of nodes in the system. Function calls to get the rank and size are nearly the first lines to be seen after the initialisation method. The final method to be called is Finalize() which tears down the world. Parallel computation can no longer take place after this method call, and so is typically found at the end on an MPI program. import mpi.*; class HelloWorld { static public void main(String[] args) throws ←MPIException { int me,size; MPI.Init(args); me = MPI.COMM_WORLD.Rank(); size = MPI.COMM_WORLD.Size(); System.out.println("Hello From Processor "+me); MPI.Finalize(); } }
Listing 1: Example of an MPI Application
1.4. Bluetooth Networks Essentially there are two types of Bluetooth networks that may be formed: the Piconet and the Scatternet (Figure 1). The Piconet is a network that is limited to a maximum of eight devices. The Scatternet is a collection of Piconet networks. In this type of network at least one node must as both a Client and a Server. This is the bridging node that connects one Piconet to the other. The simplest form and probably the most common is where two devices are connected together in a Client Server manner. This is known as a Point to Point connection (as opposed to a Point to Multipoint connection). Typical examples of this network type are phones connected with a Bluetooth Headset, PDA’s connected with GPS units and PDA’s / Phones connected to Keyboards.
Figure 1: Example of the Scatternet Structure
2. The Mobile Message Passing Interface (MMPI) The Mobile Message Passing Interface is a Java based library developed for mobile devices. It allows for inter-device communication in the same manner as any other MPI implementation. The MMPI system was however developed with mobile devices in mind and so employs Bluetooth as the wireless inter-device communications mechanism. The MMPI system abstracts the developer from having to write Bluetooth specific code. The MMPI library simplifies the sending and receiving of data between devices by the issuing of just one or two simple method calls. This level of abstraction has many advantages, such as reducing development time, and maintenance costs. It allows the developer to focus on the problem at hand, and not have to worry about how the communication is carried out. The MMPI library was developed with Piconets in mind, this limits the maximum number of devices in the network to eight.
2.1. General Structure The MMPI library consists of three classes (Figure 2): MMPI, BTServer and BTClient. The MMPI class contains all the message passing methods, for example scatter(. . .), gather(. . .). The client and server classes are necessary for creating the appropriate type of connection. Only a single instance of either the BTServer or the BTClient will be created for any node in the system. The creation of a server or a client object depends on a status flag that is passed to the constructor of the MMPI object.
Daniel C. Doolan, Sabin Tabirca / MMPI A Collaborative Framework for Wireless Devices
of communicating with all connected clients and vice versa (the formation of a Star Network Topology). However one client cannot establish a connection between another client.
MMPI
BTServer
BTClient
Figure 2: MMPI Class Structure
It is necessary to have such client and server objects, because underneath the MMPI system is a Bluetooth client / server system. Both the BTClient and BTServer objects are responsible for establishing the connections between nodes. The end result of the instantiation of one of these objects is the creation of DataInputStreams and DataOutputStreams (which are made accessable to the MMPI object). This allows the MMPI object to read from and write any other node in the system simply by accessing the appropriate element in the array of DataInputStreams or DataOutputStreams. The library has several methods for both point to point communication and global communication (Listing 2). The number of nodes in the system can be established by calling the getSize() method. Each node in the system is assigned a particular id that may be used for many purposes, most importantly for the sending and receiving of messages. The identifier of a node may be retrieved by calling the getRank() method(). public MMPI(int nodeType) public int getRank() public int getSize() public void send(Object buf, int offset, int count, int ←dataType, int dest) public void recv(Object buf, int offset, int count, int ←dataType, int source) public void scatter(Object sendBuf, int sendCount, int ←sendDataType, Object recvBuf, int recvCount, int ←recvDataType, int root} public void gather(Object sendBuf, int sendCount, int ←sendDataType,Object recvBuf, int recvCount, int ←recvDataType, int root) public void reduce(Object sendBuf, Object recvBuff, int ←count, int dataType, int op, int root) public void bcast(Object buf, int offset, int count, int ←dataType, int root) public void finalize()
The second phase of the world creation process is to establish connections between all the nodes. This requires the server to broadcast the address of all the clients it has found to each client in the system. Each client may then establish connections as appropriate. To ensure that the correct connections are made this process is synchronised through the Server node. For example Client 1 establishes a Server connection, a message indicating this is passed to the server which forwards it on to the appropriate Client. This facilitates the creation of client / server connections between all the client nodes in the system. The end result is that a single client node could have a number of both Server and Client connections (Figure 3). Main Node
Client 1
Client 2
Client 3
Client 4
S CH 1 0
S CH 1 0
S CH 1 0
S CH 1 0
C CH 2 1
C CH 3 1
C CH 4 1
C CH 2 2
C CH 3 2
C CH 1 1 C CH 1 2
S CH 2 2
C CH 1 3
S CH 3 3
S CH 2 3
C CH 1 4
S CH 4 4
S CH 3 4
C CH 2 3 S CH 2 4
Figure 3: Interconnection for Five Nodes
The type of connection that is established depends on the Rank of the node in question. All clients at position zero in the array of DataStreams have Server connections, allowing for connection with the Main Node (Server). The number of possible DataStreams is based on the size of the world. If an element of the DataStreams array exceeds that of its rank then Server connections will be established. On the other hand if an element in the array is greater than zero and less than the rank for that node, Client connections will be established. One may also see that each new Server connection that is established is running on a separate channel. The procedure above allows for the expansions of the standard Bluetooth Star network up to a fully interconnect mesh network topology.
Listing 2: Main MMPI Class Methods 3. Library Application 2.2. Interconnecting the Nodes The creation of the MMPI world is carried out by starting up several mobile devices (as clients). Each of the client nodes will establish a Server connection that will advertise itself as being ready to establish connections. Once all the clients are ready the Server node may be started. The Server carries out Device Discovery of the local devices within its catchment area. At the end of this process the Server Node is capable
The following examples show how the library may be applied to the application domains of Bluetooth Gaming, MLearning, and Parallel Computation (including both Matrix Multiplication and Fractal Image generation). 3.1. Bluetooth Gaming With many games the amount of information that needs to be sent is generally quite small. The game of chess is a good
Daniel C. Doolan, Sabin Tabirca / MMPI A Collaborative Framework for Wireless Devices
example where the moves of one player should be sent to the device of the second player and vice versa. This akin to the standard parallel computation “Ping Pong” exercise that all students of parallel computing learn, and is one of the simplest forms of communication.
Figure 4: MMPI Based Pac-Man
Using the example of Pac-Man (Figure 4) to begin a game one firstly needs to choose a mode for the system (client/server). This is a requirement of the MMPI library, as Bluetooth itself is client/server based. It is essential that one device is started as a server so that it can carry out the device discover, and resource discovery processes thus instigating the MMPI world. Once the world is initialised a game loop may be entered into (Algorithm 1). This requires the drawing of the background scene, reading user inputs, and the broadcasting of same to the other devices in the world. Therefore that positions of characters can be kept in sync on all devices. Algorithm 1 MMPI Game Structure 1: create MMPI World 2: get Node ID (Rank) 3: get communicator size 4: for ( ; ; ) do 5: Draw Background Scene 6: get User Inputs 7: for ( i= 0; i< commsize ;i++ ) do 8: broadcast Moves 9: Update Character Positions 10: end for 11: end for
3.2. M-Learning Applying the MMPI system to M-Learning one may develop what is essentially a client / server communication mechanism (Algorithm 2). The two halves to the coin are that of the Teacher (Server) and the Student (Client). The teachers device may be used for the issuing of questions to the students, and for analysing the responses returned by the students. Once a students answer has been checked another
Algorithm 2 Student / Teacher M-Learning 1: loop 2: if (RANK == MASTER) then 3: Acquire next Question 4: Send question to Client devices 5: for (each client device) do 6: get suggested Answer from client 7: validate the result STATE return message on status of result 8: end for 9: end if 10: if (RANK != MASTER) then 11: Get the question from the MASTER 12: User enters proposed solution 13: Send the solution to the MASTER 14: Get the validated result 15: end if 16: end loop
message may be issued to inform the student as to whether the answer they submitted was correct or not. The process by which a teachers phone may select a question may come in many forms. For a multiple choice type quiz, the questions may be stored with a simple text file. An alternative option is to allow the teacher to put together a question themselves using an appropriate data input form, this could take too much time in the classroom situation. There are some solutions to this however, the teacher may use a Bluetooth Keyboard to input questions to their phone faster. They could also use a PDA’s instead of a phone, and so would have the advantage of a larger screen and better processing abilities. Again they could also use a wireless keyboard to input data to the PDA. The case of mathematics is a very good application of this system, as questions such as linear, and quadratic equations can be randomly created at runtime. From the student perspective their phone will receive questions, and are provided with a data input form to submit the answer. Once the answer has been checked by the teachers phone, the student will see a message to indicate if their answer was correct or not. This system therefore provides teachers with a new way to interact within the classroom, that could help motivate and stimulate students that would otherwise find the subject matter less than palatable. 3.3. Parallel Computation The use of the library for both fractal generation and matrix multiplication are explored here. 3.3.1. Matrix Multiplication The best possible complexity one can achieve for matrix multiplication is O(n2 ) as all n2 cells need to be visited.
Daniel C. Doolan, Sabin Tabirca / MMPI A Collaborative Framework for Wireless Devices
Strassen’s algorithm gives a time complexity of O(n2.807 ) [Str69]. The Coppersmith-Winograd algorithm is the most efficient to date, its complexity being O(n2.376 ) [CW90]. The product C of two matrices A ∈ Mn,m (R) and B ∈ Mm,p (R) is defined as m−1
(A × B)i j =
∑ aik bk j , i = 0, ..., n − 1,
j = 0, ..., p − 1. (1)
k=0
The sizes of the matrices must satisfy (n × m)(m × p) = (n × p). Matrix multiplication is an associative process thereby a · (b · c) = (a · b) · c. For the parallel computation we consider that the matrices are square A, B,C ∈ Mn (R) and the number of processors or mobile devices to use in computation is p. The matrices A and C are split into p similar np × n sub-matrices as follows A0 · B A0 C0 A1 · B C1 A1 . (2) ... = ... · B = ... A p−1 · B A p−1 C p−1 This partitions the computation of C = A · B into p computation Ci = Ai · B, i = 0, 1, ..., p − 1,
(3)
where each processor/mobile device i computes a smaller product. To accommodate this the matrix A scattered evenly among all the nodes in the system. This is followed by the broadcasting of the matrix B. Once this communication has been completed each device can compute its own section of the matrix my calling the product(. . .) method (Algorithm 3).
3.3.2. Fractal Generation Another example of parallel computation lies within the area of the generation of complex computer based graphics. The generation of the Mandelbrot Set is a good example of this, and is often referred to as an “embarrassingly parallel computation”. The image area may divide up into sections for processing to individual nodes with out the reliance for the need of further information from neighboring sources. The creation of a Mandelbrot Set image is an iterative process (Algorithm 4) where by a method is iterated for each pixel in the generated image. Should the absolute value of the resultant Complex number generated from the iterative process lie outside a threshold R then a particular colouration will be applied to the current pixel location. The M Set may be defined as: n o Jc = Z0 ∈ C| lim Zn 6= ∞ where: n→∞
Z0 = C, Zn+1 = f (Zn ), n ≥ 0 and is obtained by iterating the function f (z) = z2 + c. Many other Mandel like sets may be produced when the generation function has the form of f (z) = zu + cv . Algorithm 4 The Mandelbrot Set Algorithm for each (x,y) in [xmin , xmax ] × [ymin , ymax ] do c = x + i × y; find the orbit of z0 while under the threshold R if (all the orbit points are not under the threshold) then draw (x,y) end if end for
Algorithm 3 Matrix Multiplication 1: create MMPI World 2: get Node ID (Rank) 3: get communicator size 4: if (RANK == MASTER) then 5: initialise matrices 6: end if 7: scatter(A) 8: broadcast(B) 9: compute Sub Matrix Product 10: gather(C) 11: if (RANK != MASTER) then 12: output results 13: end if
For any node in the system to be able to generate a section of the image only a few parameters are required such as the xmin, ymin, xmax, ymax coordinates of the complex plain that represents the required imaging area. Therefore the communication costs to get all node processing the a specified area is extremely small. Once a node has finished processing an area of the plain, the resultant image is passed back to the root node for on screen display.
The process of matrix multiplication involves quite high communication costs as most mobile devices use the Bluetooth 1.2 standard of 723Kbits/s. Even with the new 2.0 standard communication for this type of computation is still high. The amount of data to transmit, the broadcasting of an entire matrix to all devices within the network proves to be the highest cost.
In the case of Cyclic decomposition smaller strips are used {S0 , S1 , ..., S p−1 }. Partitioning of p strips onto the nodes is performed in a cyclic matter, so node i would rep ceive the strips {Si+ j×nrNodes : j = 0, 1, ..., nrNodes − 1}. Dynamic balancing methods divide the image plane into equal sized cells, and holds these within a workpool. As each node completes the processing of a cell a new cell
There are several methods of load balancing that may be applied to this process, including: Uniform Block, Cyclic and Dynamic methods. Both Uniform Block and Cyclic balancing methods divide the imaging area into equal sized strips. Using the Uniform block approach the ith node may receive column image areas of the form i × w/nrNodes, i × w/nrNodes + 1, ..., (i + 1) × w/nrNodes − 1.
Daniel C. Doolan, Sabin Tabirca / MMPI A Collaborative Framework for Wireless Devices
for processing is sent back to the corresponding node. The granularity by which the imaging area in divided into cells can have significant impact on workload and communication costs.
[MB00] M. BAKER D. C.: A proposed java message passing api and environment for high performance computing. , in Proceedings of IEEE International Parallel & Distributed Processing Symposium (2000), 552–559.
4. Conclusion
[MPI] MPI: The message passing interface (mpi) standard. http://www.-unix.mcs.anl.gov/mpi/mpich/.
The general structure of the Mobile Message Passing Interface has been discussed, including the means by which a fully interconnected Bluetooth Mesh network is formed. The library can simplify both the design and implementation of Bluetooth Games. It abstracts the programmer from having to constantly write Bluetooth specific code throughout the program. Several examples have been presented where by the library may be used for Bluetooth gaming, M-Learning and Parallel Computation. It is clear that as we head into the future mobile computing will become far more important, chief among this progression will be the need for collaborative communications between all manner of mobile computing devices.
[MPJ] MPJ: Distributed systems group (portsmouth), message passing in java (mpj) project. http://dsg. port.ac.uk/projects/mpj. [Mur05] M URTAZIN E.: Review gsm/umts smartphone nokia n90, Sep 2005. http://www.mobile-review. com/review/nokia-n90-en.shtml. [Pil05] P ILATO F.: Arm reveals 1ghz mobile phones processors, Oct 2005. http://www.www.mobilemag. com/content/100/102/C4788/. [RTE01] RTE: Internet and mobile penetration still rising, Mar 2001. http://www.rte.ie/business/2001/ 0308/odtr.html.
5. Acknowledgements
[RTE04] RTE: Half the world to have mobile phones by 2015, Feb 2004. http://www.rte.ie/business/2004/ 0225/phones.html.
Research Funding Source: “Irish Research Council for Science, Engineering and Technology” Funded by the “National Development Plan”.
[RTE05a] RTE: Mobile penetration now stands at http://www.rte.ie/business/ 100%, Dec 2005. 2005/1220/mobilephones.html.
References
[RTE05b] RTE: Mobile penetration now stands at 94%, Mar 2005. http://www.rte.ie/business/2005/ 0318/comreg.html.
[ARM05a] ARM: Arm cortex-a8, 2005. http://www. arm.com/products/CPUs/ARM_Cortex-A8.html. [ARM05b] ARM: Introduces industry’s fastest processor for low-power mobile and consumer applications, Oct 2005. http://www.arm.com/news/10548.html. [Bak05] BAKER A.: Mini review - enhancements in nokia 6680, Jun 2005. http://www.i-symbian.com/forum/ images/articles/43/Mini_Review-Nokia_6680_ Enhancements.pdf. [Blua] B LUETOOTH . COM: The official bluetooth website. http://www.bluetooth.com/bluetooth/. [Blub] B LUETOOTH . ORG: The official bluetooth membership site. [CW90] C OPPERSMITH D., W INOGRAD S.: Matrix multiplication via arithmetic progressions. Journal of Symbolic Computation 9 (1990), 251–280. [DHCK05] D. H URLEY C. K AHVEDZIC B. I.: Bluetooth gaming checkers, 2005. http://sort.ucd.ie/ projects/bluetoothgaming/. [HPJ] HPJAVA: mpijava. http://www.hpjava.org/ mpiJava.html. [Mag05] M AGAZINE M.: Gartner predicts pda sales to sky rocket this year, Nov 2005.
[Str69] S TRASSEN V.: Gaussian elimination is not optimal. Numer. Math 13 (1969), 354–356.