Lightweight Volunteer Computing Platform using Web ... - Science Direct

59 downloads 66 Views 498KB Size Report
Jun 12, 2017 - The project aims to create a volunteer computing plat- ... that own web pages can generate a code snippet that, when added to that pages, can ...
Available online at www.sciencedirect.com

ScienceDirect

This space is reserved for the Procedia header, do not use it This space is reserved for the Procedia header, do not use it Procedia Computer Science 108C (2017) 948–957

This space is reserved for the Procedia header, do not use it

International Conference on Computational Science, ICCS 2017, 12-14 June 2017, Zurich, Switzerland

Lightweight Volunteer Computing Platform Lightweight Volunteer Computing Platform Web Computing Workers Lightweight using Volunteer using Web Workers Platform 1 Pawel Chorazyk11 , Mateusz Godzik , Kamil Pietak1 , Wojciech Turek11 , Marek using Web Workers Pawel Chorazyk , Mateusz Godzik11 , Kamil Pietak1 , Wojciech 1 Turek , Marek Kisiel-Dorohinicki1 , and Aleksander Byrski1 Aleksander Byrski Turek1 , Marek Pawel Chorazyk1Kisiel-Dorohinicki , Mateusz Godzik1,, and Kamil Pietak1 , Wojciech AGH University of Science and Technology, Al. Mickiewicza 30, 30-0591 Krakow, Poland 1 , and Byrski AGH UniversityKisiel-Dorohinicki of Science and Technology, Al. Aleksander Mickiewicza 30, 30-059 Krakow, Poland [email protected], {godzik,kpietak,wojciech.turek,doroh,olekb}@agh.edu.pl [email protected], {godzik,kpietak,wojciech.turek,doroh,olekb}@agh.edu.pl AGH University of Science and Technology, Al. Mickiewicza 30, 30-059 Krakow, Poland [email protected], {godzik,kpietak,wojciech.turek,doroh,olekb}@agh.edu.pl

Abstract Abstract Volunteer computing is a very appealing way of utilizing vast available resources in an efficient Volunteer computing is aavailable very appealing waysupporting of utilizingthis vast available resources in an efficient way. However currently platforms computing style are either difficult Abstract way. However currently available platforms supporting this computing style are either difficult to use or not available at all, being the results of e.g. finished scientific projects. In this Volunteer computing is aatvery appealing way of utilizing vast available resources in an efficient to use or not available all, being the results of e.g. finished scientific projects. In this paper a novel, lightweight volunteer computing platform is presented. In order to contribute way. However currently available platforms supporting thisis computing style are either difficult paper a novel, lightweight volunteer computing platform presented. In order to contribute the resources this platform, only atheweb-browser is required need to In install to use or not to available at all, being results of e.g. finishedwithout scientificthe projects. this the resources to this platform, only a web-browser is required without the need to install any additional plug-ins or other software. In this paper, besides general considerations and paper a novel, lightweight volunteer computing platform is presented. In order to contribute any additional the plug-ins or other software. functionalities, In this paper,selected besides results generalproving considerations and presentation platform structure its to efficiency the resourcesof tothethis platform, only aand web-browser is required without the need install presentation of platform structure and functionalities, selected results proving its efficiency are shown. any additional plug-ins or other software. In this paper, besides general considerations and are shown. presentation of thePublished platform andframework, functionalities, selected results proving its efficiency Keywords: volunteer computing, lightweight distributed computing © 2017 The Authors. by structure Elsevier B.V. Keywords: volunteer computing, framework, Peer-review responsibility of thelightweight scientific committee of thedistributed International computing Conference on Computational Science are shown.under Keywords: volunteer computing, lightweight framework, distributed computing

1 Introduction 1 Introduction Looking for efficient using of computing power of the available infrastructure, one can consider 1 Introduction Looking efficient computingsystems, power ofsupercomputing the available infrastructure, consider not only for utilizing of using multi,ofmany-core facilities, gridone andcan clouds but

not only utilizing of multi,infrastructure, many-core systems, facilities,concept grid andofclouds but also a specific computing linedofsupercomputing with socio-philosophical Looking for efficient using of computing power the available infrastructure, one of canvoluntary consider also a specific computing infrastructure, lined with socio-philosophical concept voluntary service. not only utilizing of multi, many-core systems, supercomputing facilities, grid and clouds but service. a type of distributed computing where people concept called volunteers doalsoVolunteer a specificcomputing computingis infrastructure, lined with socio-philosophical of voluntary Volunteer computing isofa their type of distributed computing where people called volunteers donate computing resources devices to chosen projects. Thanks to volunteer computing service. nate computing resources of their devices to chosen projects. Thanks to volunteer computing various research projects is can perform large-scale computing computations without spending funds on creVolunteer computing a type of distributed where people called volunteers dovarious research projects can perform large-scale computations without spending funds on creating or renting computing infrastructure. The idea is also known as public resource computing nate computing resources of their devices to chosen projects. Thanks to volunteer computing ating or renting computing infrastructure. idea is alsocomputing known as [14, public computing [4, 3] and sometimes is also to asThe desktop grid 13]resource whichfunds seems be various research projects canreferenced perform large-scale computations without spending onto [4, 3] and sometimes is also referenced to as desktop grid computing [14, 13] which seems tocrebe aating broader term. or renting computing infrastructure. The idea is also known as public resource computing a broader term. A and volunteer computing is atomiddle-ware that computing connects volunteers and people [4, 3] sometimes is alsoplatform referenced as desktop grid [14, 13] which seems creatto be A volunteer computing platform is a middle-ware that connects volunteers and people creating computational tasks. The main responsibility of volunteer computing platforms is scheduling a broader term. ing computational tasks. TheItmain computing platforms is computing scheduling tasks to volunteer devices. has responsibility tois be done inofa volunteer way fully volunteers utilizes donated A volunteer computing platform a middle-ware thatthat connects and people creattasks to volunteer devices. It has to be done in a way that fully utilizes donated computing power and providestasks. results tomain project owners in aoftimely manner. ing computational The responsibility volunteer computing platforms is scheduling power and provides results to project owners in a timely manner. tasks to volunteer devices. It has to be done in a way that fully utilizes donated computing 1 power and provides results to project owners in a timely manner. 1 1877-0509 © 2017 The Authors. Published by Elsevier B.V. Peer-review under responsibility of the scientific committee of the International Conference on Computational Science 10.1016/j.procs.2017.05.091

1



Ligthweight Volunteer Computing Workers P. Chorazyk, et al. PawelPlatform Chorazyk using et al. / Web Procedia Computer Science 108C (2017) 948–957

Task

Result Task

Batch of tasks

Result

Task

Batch of results

Result Task Result

Volunteer Computing Platform

Volunteer Computing Project Staff

Figure 1: Simplified scheme of volunteer computing

The simplified schema of volunteer computing concept is shown on the figure 1. Volunteers’ devices download tasks, perform computations and send back results. Project owners send batches of tasks to the platform servers and can download their results when they are ready. If a large number of devices is used to perform computations, the level of parallelism can significantly decrease total computation time. One of the most popular volunteer computing systems, namely BOINC, though it is already 10 years old it is still able to follow the current trends and adjust to the needs of volunteers. One example of that is the fact that BOINC supports GPGPU. In December 2015 over 243 thousands of volunteers were active and the average computing power of the whole platform was around 158 000 Tera FLOPS [1] (which was a few times better than the best supercomputer on the Top500 list [20]). The nowadays openly available volunteer computing platforms are either not mature, have lost community and support or even became closed. Moreover, browsing through their features and requirements for running, they are seldom easy-to-install and easy-to-use, often operational system dependent to name a few of their drawbacks. Therefore a need arises for proposing a novel volunteer computing platform, free from such faults, that will be flexible and reliable, as portable as possible and not requiring any sophisticated components installed on the volunteer’s operational system. It might be great, should only a web-browser be required to participate in the volunteer-computing tasks. In this paper such volunteer computing platform is presented. Following the introductory section, a thorough look on the existing and past volunteer computing systems is presented. Based on this SOTA review, the concept of the proposed platform is sketched out along with some of its features. Later the platform is presented in action, applied to distributed Wikipedia search, showing the efficiency-related graphs and discussing them. In the end the paper is concluded. 2

949

950

Ligthweight Volunteer Computing Workers P. Chorazyk, et al. PawelPlatform Chorazyk using et al. / Web Procedia Computer Science 108C (2017) 948–957

2

Existing Volunteer Computing Systems

Volunteer-computing systems were developed since half of 90-s, as answer to novel possibilities given by the rapidly expanding worldwide Internet at this time. First of such approaches to distributed computing was The Great Internet Mersenne Prime Search (GIMPS), that began in 1996, and has probably been the first project that used volunteer computing. GIMPS is still active and has already discovered fifteen new Mersenne prime numbers [17]. The distributed.net project was founded in 1997 in the response to the RSA Secret-Key Challenge contest organized by the RSA Laboratories. Until now the project has managed to find two of cryptographic keys used in the contest [11]. Volunteer whose device finds the key is given a monetary reward, which is an interesting way of attracting volunteers [12]. The SETI@home (Search for Extra-Terrestrial Intelligence at Home) project has played a significant role in popularizing the idea of volunteer computing. The project uses volunteer computing to analyze signals from the Arecibo radio telescope to find signs of extra-terrestrial life. During the first week of existence around 200 000 people downloaded and run the client to become volunteers. BOINC is a generic volunteer computing platform that can be used to create volunteer computing projects. Development of the BOINC (Berkeley Open Infrastructure for Network Computing) platform started in 2002 at the Space Sciences Laboratory at the University of California. The platform provides a consistent and easy to use interface where volunteers can choose projects they want to support and decide how much computing resources should be committed to each of them. Virtual credits are given to volunteers and their total numbers are published [2]. Traditionally, volunteer computing projects usually required volunteers to install a dedicated software that downloads tasks from servers, executes them and sends back the results. Installing additional software can be avoided by using a web browser as a tool enabling users to become volunteers. In that case a web-page opened in a browser tab performs those tasks. Some projects are using approaches that can be classified as a hybrid of the two mentioned above. It is the case when volunteers have to install a web browser plug-in to take part in computations. On one hand a web browser is used by volunteers but on the other hand an additional software still needs to be installed in the form of plug-in. All those approaches have their advantages and disadvantages that depend largely on a kind of computations performed and a target group of people that are supposed to become volunteers. First such system was the Bayanihan project described in 1998 in the article titled “Bayanihan: Web-Based Volunteer Computing Using Java” [18] was probably the first platform that allowed volunteers to use web browsers to take part in computations. It is to note that this paper was the first place, where the notion “Volunteer Computing” has actually been used for the first time. In this platform, the means for computing were secured based on Java applets. The advantages of using web browser for volunteer mentioned in the paper still seem to be true: ease of use, platform independence and security. The project was closed, however, in 2002. GridBee was created in 2011 with the goal of creating a way to support BOINC-based projects with web browsers. The official BOINC client is a dedicated software that has to be installed. GridBee offers the alternative client that can be started in a browser. GridBee is described on its web page [6] and has been also introduced in the presentation during ,,The 7th BOINC Workshop” [19]. GridBee is written in a high-level programming language called Haxe which can be compiled to multiple target languages such as JavaScript, PHP, C++, Java or Python. In case of GridBee, Haxe is compiled to JavaScript which is executed by volunteers’ 3



Ligthweight Volunteer Computing Workers P. Chorazyk, et al. PawelPlatform Chorazyk using et al. / Web Procedia Computer Science 108C (2017) 948–957

browser and acts as a client. Client connects with BOINC servers to download tasks and send back the results. GridBee is probably not being actively developed anymore. Last news on the official project website was posted in 2012. Since then there have been no changes in the code repository available on GitHub [5]. CrowdCL was described in the article titled “CrowdCL: Web-based volunteer computing with WebCL” [15] published in 2013. The project aims to create a volunteer computing platform that makes it possible to become a volunteer using a web browser but also to allow volunteer computing project maintainers to utilize volunteers’ graphic processors. CrowdCL client software uses WebCL, which makes it possible to use OpenCL from JavaScript code executed in a web browser. OpenCL is a framework which makes it possible to perform computations on GPUs and CPUs supporting that standard. It is important to notice that CrowdCL server does not take part in tasks distribution. The platform assumes that tasks code will be embedded in the JavaScript code of the page that volunteer visits. CrowdCLient is only responsible for executing that code and sending results to the server. CrowdCL is open-source and available on GitHub [16]. Last changes to the code-base were introduced in 2013 which suggests that the project may not be developed anymore. WebCL did never get wide support among browser vendors. The only way to use it in Mozilla Firefox or Google Chrome is to install additional plug-ins. Comcute was created in 2012 by researchers from Gdansk University of Technology. One part of that project is a volunteer computing platform with the main goal of providing large computing resources during crisis. Comcute authors claim that the project can become a real Polish alternative to BOINC. Functionality and architecture are described on the project official web page [7] and in multiple publications [10, 9]. Volunteers can join the project using a web browser or a dedicated client software. Source code of the client is supposed to be embedded into web page advertisements and executed by software that renders them. The project is currently not available anymore. Crowdprocess.com is a volunteer computing platform that uses modern technical solutions. One instance of the platform is publicly available. To create a new platform instance for private purposes one has to buy a commercial version called “Enterprise Grid”. CrowdProcess users that own web pages can generate a code snippet that, when added to that pages, can make every visitor automatically become a volunteer. Such users can then see in the user’s dashboard how much computing time has been donated to the platform by visitors of their pages. Tasks are executed in an isolated environment of a Web Worker and an invisible iframe HTML tag. The project is difficult to use and adaptation to particular needs of the prospective user. Moreover, it has no detailed description nor documentation.

3

Lightweight Volunteer Computing Platform

In this paper a novel, lightweight volunteer computing platform is presented. Its most important feature that makes it stand out from other solutions mentioned in section 2 is the possibility to quickly create a new platform instance to use it for private purposes. The platform is free and open source. Starting the platform requires only starting a single file, there is no need to go though a complicated installation or configuration process. The platform can be run in every environment supported by the Java Virtual Machine. Moreover, it has a unique combination of features that cannot be found in another similar solutions: • Volunteers do not have to install any additional browser plug-ins and technologies used in volunteer application are natively supported by modern browsers. 4

951

952

Ligthweight Volunteer Computing Workers P. Chorazyk, et al. PawelPlatform Chorazyk using et al. / Web Procedia Computer Science 108C (2017) 948–957

communication

management

shell-client

persistence

rest-client

core

Figure 2: Modules – dependency diagram • Sending tasks and downloading results can be performed by a dedicated web application and by a HTTP interface that makes it possible to integrate the platform with existing software. • Platform behavior is configurable (for example users can specify task priorities or redundant computing factor). • Volunteer code can be added to an existing web page which automatically makes all the visitors become volunteers.

3.1

High-level view of platform architecture

Application is divided into modules that can depend on each other. Dependencies are shown in Fig. 2. • core – the main module that all other modules depend on. Contains the data model. Manages the platform configuration. • persistence – responsible for communication with database. Contains Data Access Object classes. Creates database schema, manages connection pool. • management – contains the business logic. Handles task scheduling and monitors volunteer devices. 5



Ligthweight Volunteer Computing Workers P. Chorazyk, et al. PawelPlatform Chorazyk using et al. / Web Procedia Computer Science 108C (2017) 948–957

• communication – responsible for platform communication with outside world. Exposes HTTP interfaces for platform management web application and for volunteer client. Contains web application configuration. • rest–client – can be used by developers to integrate existing software written in Java with the platform. Exposes methods that can send tasks to platform and download results. • shell–client – exemplary module using rest–client that exposes platform functionality in a command line.

3.2

Task scheduling

The most important responsibility of a volunteer computing platform is task scheduling. The platform should assure that donated computing power is used efficiently and task results are available quickly. It has to work in a difficult environment where computing devices can be very unreliable and even the task code provided by project owners can contain errors so it may be impossible to complete some tasks at all. To cope with unreliability of volunteer devices the platform retries task execution if a volunteer device does not send a result in a predefined time frame. Additionally, it is possible to send a task to multiple volunteers at the same time which increases probability of getting the result quickly. If task code is written incorrectly and task executions always finish with error or never finish at all, the platform gives up retrying the task after several attempts.

3.3

Volunteer web client

One of the presented platform’s main features is possibility to become volunteer using only a web browser, therefore the client code is written in JavaScript and executes after a user visits the platform’s web page. Volunteer code should be written in a way that guarantees that it does not impact negatively user’s browsing experience in other open browser tabs. Modern browsers offer the technology called “Web Workers”. It makes it possible to create a “web worker” which executes JavaScript code in background, independently of the main script that handles user interface interactions. Web worker has no direct access to a document’s DOM tree and it communicates with “main” script using message passing. Objects sent in messages are copied (sender serializes them and receiver deserializes them), not shared, therefore there are no synchronization issues connected to accessing data from multiple threads. Web workers turned out to be a good choice to use in volunteer JavaScript code. At the beginning the volunteer script registers on the platform and receives volunteer identifier that is later added to every message sent to the server. Then, from time to time the volunteer script asks the server if there are any tasks to do. If there are some tasks, the server responds with tasks and a job identifier. Volunteer script checks if JavaScript code for that job is already cached (code can be found in cache if that browser instance already performed any task for the same job in this session). If the job code is not yet cached, it is downloaded from the server and sent to the web worker to create appropriate function in web worker’s context. When the web worker is ready, input data is sent to it and the task is executed in web worker’s context. When the web worker finishes task execution or an error occurs, it sends appropriate message to the main script which then passes this message to the platform server. After the result or the error is delivered to the server, volunteer script asks again for tasks to perform, which closes the loop. 6

953

954

Ligthweight Volunteer Computing Workers P. Chorazyk, et al. PawelPlatform Chorazyk using et al. / Web Procedia Computer Science 108C (2017) 948–957

A code snippet has been implemented that can be embedded in an existing web page that makes its visitors automatically become volunteers. The code creates an invisible iframe with appropriate privileges and opens a volunteer page inside.

3.4

Data persistence

Data used by platform is stored in a relational database. It contains info about projects, jobs, tasks and results. The platform communicates with the database using the JDBC protocol and the jOOQ library. H2 database has been used during the development and tests of the platform. It is a small file-based database written in Java. Using H2 makes it possible to start the platform without configuring complicated database management systems. Having the whole database in a single file makes backups and migrations easy.

4

Experimental Results

The actual efficiency of the presented framework has been tested using Amazon EC2 cloud platform. In this section, due to restricted space, one of the tested cases will be presented and discussed, namely searching the Wikipedia in a volunteer manner. During this test volunteer devices were downloading Wikipedia articles and searching for a given keyword inside their contents. The set of downloaded articles consisted of 2665 articles related to programming and IT and the task was to find all the lines containing the “Java” keyword using regular expressions. The problem is similar to many real world problems like web crawling or communication with HTTP interfaces. Implementation Articles to analyze were divided into tasks in a way that every task encompassed a similar number of articles. However it needs to be considered that articles differ in length, therefore time needed to download and parse each of them can be different. In effect, difficulty of tasks also differed significantly. Articles were downloaded in a JSON format and parsed. After that, regular expression /.*\bjava\b.*/ig was used to find lines containing “java”. List of lines was returned as a result. Analyzing 2665 articles 2665 Wikipedia articles were divided into tasks and sent to platform. The number of lines containing “java” was 1908. Numbers of volunteers tested were: 1, 2, 4, 8, 12, 16, 24 and 32. Articles were divided into 64, 128, 256 or 512 tasks. Figures 3, 4 and 5 show charts of time, speedup and efficiency. It can be seen that for lower numbers of tasks results are significantly worse when the number of tasks is not divisible by the number of volunteers (tests for 12 and 24 volunteers). In those cases, dividing articles into 512 tasks was the best choice as many tasks makes it easier to effectively schedule them. On the other hand, shorter tasks introduce more overhead related to communication and managing them, so for 32 volunteers the best choice was to divide articles into 256 tasks. With one connected volunteer the test took about 460 seconds and for 32 volunteers about 17 seconds, which gives almost a 27 times speedup. In the ideal case of linear speedup growth, test for 32 volunteers would take 460/32 = 14.375s, so the difference between actual result and ideal case was only 3 seconds. The chart shows that speedup increased quite steadily with the number of volunteers and the results were similar for different ways of dividing articles into tasks. In the most optimal cases the efficiency does not drop below 0.8. 7

Ligthweight Volunteer Computing Platform using Web Workers P. Chorazyk, et al. Pawel Chorazyk et al. / Procedia Computer Science 108C (2017) 948–957

Wikipedia – 2665 Articles – Time (log/log)

Execution Time[ms]

1e+006

100000

10000

1

2

4

8

12

16

24

32

Number of Volunteers 64

128

Number of Tasks 256

512

Figure 3: Analyzing 2665 Wikipedia articles – Time Wikipedia – 2665 Articles – Speedup 30 25

Speedup



20 15 10 5 0

1 2

4

8

12

16

24

32

Number of Volunteers 64

128

Number of Tasks 256

512

Figure 4: Analyzing 2665 Wikipedia articles – Speedup

5

Conclusions

Volunteer computing is an attractive idea of bringing together a community of donors, constructing a supercomputing-grade infrastructure that is capable of doing practically HPC simulations or computing, without integrated infrastructure, power sources, cooling appliances, administration staff etc. Though some of such projects are still available, many of them went into oblivion 8

955

Ligthweight Volunteer Computing Platform using Web Workers P. Chorazyk, et al. Pawel Chorazyk et al. / Procedia Computer Science 108C (2017) 948–957

Wikipedia – 2665 Articles – Efficiency 1 0.95 Efficiency

956

0.9 0.85 0.8 0.75

1 2

4

8

12

16

24

32

Number of Volunteers 64

128

Number of Tasks 256

512

Figure 5: Analyzing 2665 Wikipedia articles – Efficiency during the last years, and indeed, the prevailing ones begin to be outdated. Therefore a need arises to propose new frameworks, based on currently available technologies. In this paper such a platform was presented along with evidence of its usability, presented as achieving linear scalability during tests performed using Amazon EC2 cloud. The lightweightness of the framework, complete independence from the operating system and the apparent efficiency makes them, in the opinion of authors, a decent weapon of choice for dealing with problems needing HPC power, without the actual supercomputing infrastructure available. It is to note that the applicability of this platform can be further evaluated and potentially proven using network simulators, either popular ones as NS3, or devised by the authors of this contribution [8]. In the near future performing additional experiments in order to prove the applicability and explore to a greater extent the efficiency of the proposed platform is planned. Later also the tests concerning fault-tolerance, proofing the strategies implemented are planned.

Acknowledgment This research was supported by AGH University of Science and Technology, Statutory Project, and by the Faculty of Computer Science, Electronics and Telecommunications Dean’s Grant for Ph.D. Students and Young Researchers.

References [1] BOINC: statistics of all projects. http://boincstats.com/en/stats/-1/project/detail, last checked on 29.01.2017. [2] Publications by BOINC projects. http://boinc.berkeley.edu/wiki/Publications_by_BOINC_ projects, last checked on 29.01.2017.

9



Ligthweight Volunteer Computing Platform using Workers P. Chorazyk, et al. Pawel Chorazyk et al.Web / Procedia Computer Science 108C (2017) 948–957

[3] David P. Anderson. BOINC: A System for Public-Resource Computing and Storage. In 5th IEEE/ACM International Workshop on Grid Computing, pages 4–10, 2004. [4] James D Baldassari. Design and Evaluation of a Public Resource Computing Framework. Master’s thesis, Worcester Polytechnic Institute, 2006. [5] BME Kzigazgatsi Informatikai Kzpont. GridBee – code repository. https://github.com/BME-IK/ gridbee-framework, last checked on 29.01.2017. [6] BME Kzigazgatsi Informatikai Kzpont. GridBee Web Computing Framework – Official Website. http://webcomputing.iit.bme.hu/, last checked on 29.01.2017. [7] Mikoaj Broniszewski, Micha Poczwardowski, and Maciej Zalewski. Comcute – Official Website. [8] A. Byrski, M Felu´s, J. Gawlik, R. Jasica, P. Kobak, G. Jankowski, E. Nawarecki, M. Wroczy´ nski, P. Majewski, T. Krupa, and J. Strychalski. Volunteer computing simulation using repast and mason. Computer Science (AGH), 14(1):153–172, 2013. [9] Pawel Czarnul, Jaroslaw Kuchta, and Mariusz Matuszek. Parallel Computations in the VolunteerBased Comcute System. In Parallel Processing and Applied Mathematics, volume 8384 of Lecture Notes in Computer Science, pages 261–271. Springer Berlin Heidelberg, 2014. [10] Roman Debski, Tomasz Krupa, and Przemyslaw Majewski. ComcuteJS: A Web Browser Based Platform for Large-scale Computations. Computer Science (AGH), 14(1), 2013. [11] distributed.net. Project RC5. http://www.distributed.net/RC5, lastchecked 29.01.2017. [12] distributed.net. RC5-56 / Disposition of Prize Money. http://stats.distributed.net/misc/ money.php?project_id=3, last checked on 29.01.2017. [13] Gilles Fedak. Contributions to Desktop Grid Computing. Distributed, Parallel, and Cluster Computing [cs.DC]. Universit de Lyon, 2015. [14] Gilles Fedak and Christophe Cerin. Desktop Grid Computing. Chapman & Hall/CRC, 2012. [15] T. MacWilliam and C. Cecka. CrowdCL: Web-based volunteer computing with WebCL. In High Performance Extreme Computing Conference (HPEC), 2013 IEEE, pages 1–6, September 2013. [16] Tommy MacWilliam. CrowdCL – code repository. https://github.com/tmacwill/crowdcl. [17] Mersenne Research, Inc. GIMPS history. http://www.mersenne.org/various/history.php, last checked on 29.01.2017. [18] Luis F. G. Sarmeta. Bayanihan: Web-Based Volunteer Computing Using Java. In Proceedings of the Second International Conference on Worldwide Computing and Its Applications, pages 444– 461, 1998. [19] Henrik Schnell, Attila Szarvas, Gbor Molnr, and Imre Szebernyi. GridBee Web Computing Framework. In The 7th BOINC Workshop, 2011. [20] TOP500.org. Top500 List – November 2015. http://www.top500.org/list/2015/11/, last checked on 29.01.2017.

10

957