Unveiling Project Nexus
Today I am going to publish a major project of mine: Nexus, parallel computing grid and arbitrary precision arithmetic. The project came into existence under special circumstances and its development has dominated my life for several months. I consider it to be an important milestone on my personal path to self-improvement. Even though it is now over and I don’t intend to continue it, the gained experience is unforgettable. So, what exactly is Nexus about?
Nexus is a Latin noun meaning “connection” or “bond”. In my version, Nexus is a system binding together several computers and allowing them to cooperate on a complex computation. One of the computers is set up as a server, coordinating the operation. The other computers work as clients, requesting tasks from the server and performing the computation proper.
The project consists of three parts: server program, client program, and arithmetic engine – a program able to do arithmetic with extremely large or extremely precise numbers. Development of the whole system thus brought diverse challenges and problems.
The Motivation
I had been attracted by complex computations (e.g. calculating the famous π to billions of digits) for some time, but the decisive impulse to write a computing grid system came suddenly. I realized that a project like this could succeed in SOC, an annual national contest that is held for high-school students in a number of fields. Unfortunately, I had just one month until the submission deadline. I did not drop the development after the submission, but the greatest part of the work had to be done within four weeks anyway.
The decision to write the project was very hasty, as was the development itself. I wrote the majority of the code within a few weeks. The dark side of this fast-paced programming is apparent – I cannot pride on well-commented code, cleanly designed architecture nor great robustness. I didn’t have time to carefully plan the system, make well-judged decisions and then set out for consistent implementation.
I had to contravene my own principles, and I am not very proud of the resulting code. For a while I was in two minds about the publishing of the project. However, the system is fully working and has been tested in a number of calculations. I therefore believe that my work may be useful to somebody.
Tests
To test my system I wanted to try something more original than the notorious constant π = 3.141592…, so I choose the not-so-well-known Euler’s number (e = 2.718281…). Actually, in the very beginning I intended to create a grid tailored to calculating this particular number. Later, I generalized the whole system to facilitate other computations as well.
I am bound to thank to my high school (SSE Frenstat) and especially to my teacher Mr Romanovsky for excellent cooperation and support in testing the grid. I was allowed to use up to 30 school computers and let them run my computations for days.
Download & documentation
Project documentation is quite extensive. It is written both in Czech and English, nearly 40 pages per language.
You’ll find it in the project package (support/doc).
I have decided not to publish a few parts of the project that are mentioned in the documentation. It’s mainly because they were made to measure for my own environment and it would take additional work to edit all the specific code. I could possibly share these parts upon request.
- nexus.tar.bz2 (20MB)
- nexus.tar.gz (21.1MB)
- nexus.zip (21.2MB)
Speak your mind
Allowed HTML tags are a, blockquote, em, code, li, ol, p, pre, strong, ul. Links to other comments in the form “[IV]” or “[4]” are detected automatically.