Thesis about Cell Computing Model

Star InactiveStar InactiveStar InactiveStar InactiveStar Inactive
 
Student Benjamin Hadorn
Year 2006
University Berner Fachhochschule BFH
Department Computer Science

Abstract

The thesis about Cell Computing Model (CCM) is about a new paradigm in the world of computer science. Its intention is to define a software model whose construction and behavior is similar to biological organism and living systems. Related approachs can be found in grid computing or in evolutionary algorithms.

The goal of this thesis was to build a software framework which gets its behavior from the interaction of dynamically generated software cells

Deliverables

Following documents and products are published (All documents are in German):

  • Thesis description [pdf]

    This contains the description and the targets of the thesis.

  • Document about the Cell Computing Model [pdf]

    This is the screen version of the document about the thesis. It contains

    • the specification of Cell Computing Model
    • the documentation and some examples of Zeus-Framework
    • the project management of the thesis
    • the manual how to use the Zeus-Framework
    • the measurements using Zeus-Applications
  • The Zeus-Framework (Version 0.3.0) [gz]

    The product of the thesis. Contains the framework and examples how to use. Prepared for Linux. For Windows you must create project files for your development environment first. To run the framework with examples you need to download other 3rt party libraries.

  • API Documentation

    The API Documentation for the class framework of Zeus.

  • Model of the Zeus-Framework [gz]

    The model of the Zeus-Framework contains specifications and UML diagrams.

  • Mathematical Model [html]

    Mathematical clone model.


Labor Journal (in German)

20.12.05 Version 0.3.0 freigegeben

Endlich ist es soweit. Die Version 0.3.0 wurde freigegeben. Sie ist das Endprodukt der Projektarbeit und der Diplomarbeit an der HTA Bern. In dieser Version sind die Spezifikation des Cell Computing Models, die Beschreibung des Frameworks und diverse Beispiele enthalten.

15.12.05 Messungen mit Motion Detection

Messungen mit dem Motion Detection durchgefuehrt. Die MoDec Applikation wurde noch optimiert. Es wird nicht jede Farbebene nach Bewegungen durchsucht, sondern nur eine Farbebene (Rot). Dadurch wird die Applikation 3x schneller, detektiert aber nicht mehr alle Bewegungen!

Die MoDec Applikation kann so erweitert werden, dass dem Block Matching nur die Graustufenbilder zur Verfuegung stehen. Somit werden wieder alle Bewegungen in allen 3 Farbebenen detektiert.

Die Messungen sind unter Modec-Messungen abgelegt.


14.12.05 Fehler in der Motion Detection

Bei den Messungen mit Motion Detection mit Block Matching stuerzte die Applikation ab. Es wurden 2 Probleme geloest. Das erste Problem bestand daring, dass der Block Matching Algorithums ueber die Grenze des Bildes hinaus zugriff. Das verursachte ein Segment fault. Zu dem wurde beim Erzeugen von Objektmeldungen kein Lock erstellt. Diese Meldung war nicht thread sicher.

12.12.05 Spezifikation abgeschlossen

Die Cell Computing Model Spezifikation wurde abgeschlossen und korrigiert. Sie ist online verfuegbar.

Die Zeus-Framework Spezifiaktion wurde ebenfalls fertiggestellt. Es fehlt noch das Kapitel zu der Interface-Technologie die im Framework angewandt wird. Das aktuelle Dokument ist online verfuegbar.

Beim Drucken der Dokumente ist aufgefallen, dass die Bilder eine zu niedrige Aufloesung haben. Wenn die Zeit noch reicht, moechte ich die Bilder als Verknuepfung ins Dokument hinzufuegen, damit ich noch hochaufloesende Bilder erstellen kann.


25.11.05 Messungen mit Mandelbrot Menge

Die Mandelbrot-Menge wurde als verteile Applikation getestet und auf bis zu 7 PC's parallel betrieben. Die Resultate der Messung koennen hier eingesehen werden.


18.11.05 Die Mandelbrot Menge

Ein erster Entwurf einer verteilten Applikation zum Berechnen der Mandelbrot Menge wurde entwickelt.


18.11.05 Fehler beim Senden von Datenpaketen

Beim Senden/Empfangen von Datenpaketen mit TSocket-Klasse kam es zu Fehler. Der Grund liegt in der Handhabung der System Sockets. Diese funktionieren nach dem Prinzip des Streamings, das heisst sobald Daten zur Verfuegung stehen kann gesendet werden. Dabei kam es zum Phaenomen, dass Daten gestappelt und zusammen gesendet werden, also 2 Pakete auf einmal. Die Implementierung der Zellenkommunikation war nicht so erfreut darueber :-).

Der Fehler konnte behoben werden, in dem die Datenpakete (Arrays von Bytes) mit einer Groesse gesendet werden. Der Empfaenger kann in den ersten 4 Bytes lesen, wie viele Daten zu einem Paket noch folgen werden.

Folgende Probleme bestehen noch:

  • Der Socket ist im Moment auf Pakete von 65kBytes limitiert.
  • Beim Lesen der Daten wird noch kein TimeOut ausgewertet
  • Noch nicht alle Funktionen der Interfaces IOutputStream und IInputStream sind implementiert.
  • Die Methoden fuers Lesen von primitiven Datentypen des Interface IInputStream geben noch keinen Fehler zurueck.

17.11.05 Software ist freigegeben fuer SourceForge

Die Projektarbeit wurde gemaess der Aufgabenstellung und den Richtlinien der OpenSource Community auf dem Source Forge publiziert.http://sourceforge.net/projects/cellcomputing

Es sind aber noch nicht alle Funktionen umgesetzt, wie automatisches Tar-Ball erstellen.


16.11.05 Kommunikation zwischen Zellen verbessert

Die Kommunikation zwischen den Zellen wurde durch den Naming-Service und das RMI Pattern verbessert. Dazu wurden Testklassen erstellt, die das Zusammenspiel der Kommunikationskanaele und der lokalen Piperegistry simulieren.


11.11.05 Sitzung mit Herr Schwab

Stand der Arbeit:
RMI fuer C++ ist implementiert und somit ist der Grundstein gelegt fuer das Umsetzen von mobilen Zellen (Agenten).

Weiteres Vorgehen:

  • Die Beispielimplementation ist auf einem Singleprocessor PC nicht sehr effizient. Ich moechte den Overhead messen, der durch das Parallelisieren generiert wird, indem ich mit einem Dualprozessor PC arbeite.
  • Das umgesetzte Beispiel mit Motion Detection ist sehr datenintesiv. Ich moechte noch ein Beispiel mit dem Cell Computing Model umsetzen, welche eher rechenintensiv ist und sich so leichter ueber ein Netzwerk betreiben laesst. Herr Peter Schwab hat vorgeschlagen, eine einfache Applikation zum Generieren und Darstellen der Mandelbrot-Menge umzusetzen (http://de.wikipedia.org/wiki/Mandelbrot-Menge).

10.11.05 Neuer Release von Zeus-Framework 0.2.3

Der neue Release des Zeus-Frameworks beinhaltet:

  • Serialisierung von Objekten
  • Remote Method Invocation fuer C++
  • Naming Service fuer Remote Objekte

Das Framework wurde vereinfacht in:

  • Die Zellenregistry ist im ZeusFramework integriert

Bekannt Probleme und Designfehler

  • Die Scripts zum Testen des Klonens (run_complex.sh und run_simple.sh) funktionieren nicht mehr richtig. Der Test muss direkt in der Konsole durchgefuehrt werden.
  • Die Pipes der Zellen brauchen weiterhin die Zellenregistry und nicht den Naming Service.
  • Modec Applikation weist noch Maengel der Bedienung auf

07.11.05 Implementieren von RMI fuer C++

Um die Netzwerkfaehigkeit zu verbessern wurde das Verfahren zum Ausfuehren von Methoden entfernter Objekte besser geloest. Dazu wurde nun eine Art RMI (Remote Method Invocation) in C++ realisiert. Zusammen mit der Vorarbeit der Serialisierung konnte dieses Konzept realtiv einfach umgesetzt werden.

Der Hauptgrund fuer diesen nicht geringen Aufwand ist, dass ich das fakultative Ziel der mobilen Zellen umsetzen kann. Hier kann das bereits bekannte Modell der autonomen Agenten angewandt werden. Dazu brauche ich einen MobileCellHost (Server) und eine MobileCell (Client). Der Client versendet sich dann via Streaming zu einem Server. Das kann mit RMI sehr einfach geloest werden, indem man ein RemoteObjekt (den Server) eine Methode aufruft und sich (der Client) uebergibt.


19.10.05 Verbessern der Objekt Serialisierung

Im Rahmen der Bildverarbeitung mit Zellen ist aufgefallen, dass die Objektserialisierung nicht genuegend gut geloest, zu kompliziert und zu anfaellig ist.

Das alte Verfahren (mit dem Interface IStreamable) wurde durch ein verfeinerte Variante abgeloest. Verbessert wurden folgende Punkte:

  • Neues Interface ISerializable mit weniger Methoden

    • serialize(): Zum Serialisieren der Objekte
    • getObjectID(): Zum Ermitteln der Objekt ID
  • Diverse Makros welche das Implementieren der Serialisierung vereinfachen

  • Objekthierarchie kann serialisert werden (rekursiv)

  • Verbesserte Fehlererkennung durch Header im Stream

  • Automatisches Erzeugen von Objekten durch eine ObjectFactory

Alle Meldungs-Klassen wurden nun mit dem neuen Serialisierungssystem ausgestattet. Das System wurde mit CPPUNIT getestet.

Ein Beispiel ist auch schon Online: Objekt serialisieren mit Zeus-Framework


12.10.05 Erster Prototyp der Motion Detection - modec

Der erste Prototyp wurde entwickelt mit folgenden Moeglichkeiten:

  • Differenzbildung

  • Block Matching

Die Differenzbildung ist standardmaessig eingestellt. Die Checkbox [Vector] ist nicht markiert.

Das Blockmatching Verfahren wurde nach der Differenzbildung entwickelt und ist wesentlich komplizierter. Die Checkbox [Vector] ist markiert.

Probleme und Verbesserungsmoeglichkeiten:

  • Die Stop-Taste verhaelt sich nicht so wie erwartet. Sie wird eventuel entfernt.

  • Beim Blockmatching klonen sich die Zellen. Das bringt aber auf einer Einprozessor-Maschine nicht sehr viel. Eher langsamer.


07.10.05 Besprechung zum Bildverarbeitungsprozess mit Herr Cattin

Am Freitag traf ich mich mit Herr Cattin, um die Idee der Motion Detection Implementation mit dem Cell Computing Model zu konkretisieren. Folgendes waren die Traktanden:

  • Kurzes Vorstellen der Idee vom Cell Computing Model

  • Idee der Motion Detection mit dem existierenden Framework. Dabei soll das Block Matching verwendet werden.

    • Ist die Bewegungserkennung mit Block Matching parallelisierbar?
      Ist parallelisierbar auf der Basis von jedem Block.

    • Wie kann die Effizienz gesteigert werden?
      Sind die Zellen auf verschiedenen PCs verteilt, muessen sehr viel Informationen ueber ein Netzwek gesendet werden, was sicher nicht sehr effizient ist. Leben die Zellen auf einem PC koennen die einzelnen Bilder in Shared Memory abgelegt werden und muessen nicht dupliziert werden.

      Die Bloecke koennten zusammengefasst werden, das heisst ein Job besteht aus mehreren Bloecken die gerechnet werden muessen. Der Datentransfer kann so auch optimiert werden.

      Die gaengige Blockgroesse liegt bei 16/32/64 pixels

    • Andere Verfahren zur Bewegungserkennung

      • Differenzbildung: Keine Information zur Bewegungsrichtung, sondern nur wo Bewegung in einem Bild statt findet.

      • Phase Correlation: Genaues Messen der Bewegung. Siehe Dokument zur Phase Correlation.

  • Klassen Framework fuer AVI auf Linux
    Bei Problemen mit AVI File auf Linux kann Herr Harald Studer von der HTI Biel angefragt werden. (Seine Diplomarbeit: Motion captioring-moca)


06.10.05 Evaluation von AVI File fuer Linux

Unter Linux gibt es ein Open Source Projekt http://avifile.sourceforge.net/ welches das Lesen von AVI Dateien (Audio Video Interleave) unterstuetzt. Dazu muessen diverse Codecs installiert werden, damit die Audio und Video Streams gelesen werden koennen. Diese koennen unter http://mplayerhq.hu/MPlayer/releases/codecs/ herunter geladen und unter /usr/lib/win32/ installiert werden.

Das AVI Packet muss nun kompiliert werden. Dabei kann es vorkommen, dass nach erfolgreichem Kompilieren trotzdem keine komprimierten AVI-Dateien gelesen werden koennen. Nach langem Ueben habe ich herausgefunden, dass bei SUSE 9.x ein Problem mit dem GNU Kompiler existriert. Es muss mit Optimierungsstuffe -O1 gearbeitet werden.

Auszug von http://www.opensubscriber.com/message/This email address is being protected from spambots. You need JavaScript enabled to view it./890163.html:
...
I experience the same frustration. Working hard  
this day, I figured that the gcc optimizations made by SuSE (I think) drop out  
the 'extern "C" const' symbols. You need to use -O1 optimization:  
 
export CXXFLAGS="-O1"  
export CFLAGS="-O1"  
./configure --with-qt-dir=/opt/qt/3.4 --with-sdl-prefix=/usr/local --with-win32-path=/usr/local/lib/win32  
 
.... 
> Dear Programmers,  
>  
> I compiled avifile on a  Linux Suse 9.1 (gcc 3.3.3), all the compilation  
> works but when I execute aviplay I have the following messages :  
>  
> <codec keeper> : Found 11 plugins (/usr/local/lib/avifile-0.7,A:40,V:89)  
> <codec keeper> : WARNING: plugin /usr/local/lib/avifile-0.7/divx4.so is  
> in incompatible format  
>  
> I don't have any previous installation of avifile, and I tried on a  
> Debian (gcc 3.2.2), everythig works perfectly.  
>  
> After little invesigation on the mailing list, it seems that the symbol  
> in the *.so files differ on the Suse.  
...
> I think it's only a problem of gcc, but I really don't know how to fix  
> it ...  
>  
> Kind regards.

03.10.05 Erste Gehversuche mit QT

Erstellen einer GUI Oberflaeche fuer die Bewegungserkennung mit QT unter Linux. Da ich nicht mit KDevelop arbeite musste ich die .UI Datei in mein [make] eintragen. Dabei sind folgende 2 Programme von QT wichtig:

  • uic: Generiert aus der .ui Datei (XML basierende Datei welche die Graphik beschreibt) eine C++ Headerdatei. Mit der der Option -impl generiert der uic auch die C++ Implementation.
  • moc: Generiert aus dem C++ Header ein C++ Source File mit der Endung .moc, welche mit #include in das Projekt aufgenommen werden muss. Hier sind vor allem die signals-slots connections implementiert.
Anpassung des Makefiles:
MOC = moc
UIC = uic
MOCFILES = $(ui_sources:.ui=.moc)
...
%.moc: %.ui Makefile
  $(UIC) $< -o $(@:.moc=.h)
  $(UIC) -o $(@:.moc=.cpp) -impl $(@:.moc=.h) $<
  $(MOC) $(@:.moc=.h) -o $@
...
$(PGM): $(MOCFILES) $(OBJ) Makefile
  $(CXX) $(PG) -o $(PGM) $(OBJ) $(LIBS) $(INCLUDES)

Die Graphik wurde mit dem QTDesigner erstellt. Mehr zu QT unter http://www.trolltech.com/products/qt/index.html.


30.09.05 Ueberarbeiten der Cell Computing Model Spezifikation

Die Spezifikation wurde grundlegend neu gestaltet und mit folgenden Themen erweitert:

  • Sicherheitskonzept mit Finger Prints

  • Beschreiben von Workflows (Noch nicht beendet)


29.09.05 Besprechung des Projekthandbuchs mit Herr P. Schwab

An der Sitzung wurden folgende Traktanden erarbeitet:

  • Besprechung zum Ablauf der Diplomarbeit

    • Welche Dokumente mssen erzeugt werden?
      Das Projekthandbuch soll aus Grundlage zum Ablauf der Diplomarbeit gelten. Die Spezifikation des Cell Computing Models soll erweitert und verbessert werden. Zusaetzlich soll eine Reflektion (Schlussfolgerung) zum erstellten Framework erfolgen.

    • Entwurf des Sicherheitskonzepts

    • Genauere Definition der Beispielimplementation
      Als Beispiel Implementation soll ein Verfahren zur Bewegungserkennung in Filmen angewandt werden. Eine Moeglichkeit waere das Block Matching. Das Verfahren soll mit dem Fachdozent Herr Roger Cattin von der HTI Biel noch besprochen werden.

  • Administratives

    • Wo ich fr die Diplomarbeit arbeite (Zimmer)
      Ich arbeite im Zimmer I12 (Netzwerklabor) an der HTI in Bern oder zuhause.

    • Zeitliches (An welchen Tagen)
      Folgende Tage sind fuer die Diplomarbeit reserviert:

      • KW 41 und 42: Montag bis Freitag
      • Ab KW43: Mittwoch bis Freitag
    • Internet Plattform
      Es wurde bereits eine Internetplattform fuer die Projektarbeitr eingerichtet unter http://www.xatlantis.ch.


19.09.05 Erhalt der Diplomaufgabe

Erhalt der Diplomaufgabe [ISWP1-1-05-de]. Die Aufgabe umfasst das Weiterentwickeln des Cell Computing Models und des Frameworks. Dazu soll eine geeignete Beispielanwendung realisiert werden.

Analyse der Aufgabe und Erstellen eines Projekthandbuchs [PDF]. Das Projekthandbuch soll die Aufgabe detailierter Spezifizieren und offene Fragen beantworten. Aufwandschaetzungen und Termine sind ebenfalls enthalten.


 

Over 15 years experience and knowledge of industrial machine controls, software architecture and engineering, artificial and pervasive intelligence, we are dedicated to provide the best and economical solutions to our valued customers.

Latest Company News

  • HumanOS Fanuc Connector

  • HumanOS SmartGateway Trial Version for FANUC and OPC-UA is ready

  • Designing for Human-Machine Symbiosis Using the URANOS Model: Emerging Research and Opportunities

  • Some Streams of Systemic Thought

  • 1

Contact us