*** empty log message ***

svn path=/trunk/boinc/; revision=337
This commit is contained in:
David Anderson 2002-08-15 21:21:08 +00:00
parent e1efeba9a6
commit 99b8ea4a15
5 changed files with 189 additions and 260 deletions

View File

@ -56,10 +56,7 @@ PROJECT::~PROJECT() {
int PROJECT::parse_prefs(FILE* in) {
char buf[256], *p;
int retval;
if(in==NULL) {
fprintf(stderr, "error: PROJECT.parse_prefs: unexpected NULL pointer in\n");
return ERR_NULL;
}
strcpy(master_url, "");
strcpy(authenticator, "");
while (fgets(buf, 256, in)) {
@ -84,10 +81,6 @@ int PROJECT::parse_state(FILE* in) {
char buf[256];
STRING256 string;
if(in==NULL) {
fprintf(stderr, "error: PROJECT.parse_state: unexpected NULL pointer in\n");
return ERR_NULL;
}
strcpy(project_name, "");
strcpy(user_name, "");
resource_share = 1;
@ -123,10 +116,7 @@ int PROJECT::parse_state(FILE* in) {
//
int PROJECT::write_state(FILE* out) {
unsigned int i;
if(out==NULL) {
fprintf(stderr, "error: PROJECT.write_state: unexpected NULL pointer out\n");
return ERR_NULL;
}
fprintf(out,
"<project>\n"
);
@ -194,10 +184,7 @@ void PROJECT::copy_prefs_fields(PROJECT& p) {
int APP::parse(FILE* in) {
char buf[256];
if(in==NULL) {
fprintf(stderr, "error: APP.parse: unexpected NULL pointer in\n");
return ERR_NULL;
}
strcpy(name, "");
project = NULL;
while (fgets(buf, 256, in)) {
@ -209,10 +196,6 @@ int APP::parse(FILE* in) {
}
int APP::write(FILE* out) {
if(out==NULL) {
fprintf(stderr, "error: APP.write: unexpected NULL pointer out\n");
return ERR_NULL;
}
fprintf(out,
"<app>\n"
" <name>%s</name>\n"
@ -246,10 +229,7 @@ int FILE_INFO::parse(FILE* in, bool from_server) {
STRING256 url;
PERS_FILE_XFER *pfxp;
int retval;
if(in==NULL) {
fprintf(stderr, "error: FILE_INFO.parse: unexpected NULL pointer in\n");
return ERR_NULL;
}
strcpy(name, "");
strcpy(md5_cksum, "");
max_nbytes = 0;
@ -325,10 +305,7 @@ int FILE_INFO::parse(FILE* in, bool from_server) {
//
int FILE_INFO::write(FILE* out, bool to_server) {
unsigned int i;
if(out==NULL) {
fprintf(stderr, "error: FILE_INFO.write: unexpected NULL pointer out\n");
return ERR_NULL;
}
fprintf(out,
"<file_info>\n"
" <name>%s</name>\n"
@ -401,10 +378,7 @@ bool FILE_INFO::had_failure() {
int APP_VERSION::parse(FILE* in) {
char buf[256];
FILE_REF file_ref;
if(in==NULL) {
fprintf(stderr, "error: APP_VERSION.parse: unexpected NULL poiner in\n");
return ERR_NULL;
}
strcpy(app_name, "");
version_num = 0;
app = NULL;
@ -425,10 +399,7 @@ int APP_VERSION::parse(FILE* in) {
int APP_VERSION::write(FILE* out) {
unsigned int i;
if(out==NULL) {
fprintf(stderr, "error: APP_VERSION.write: unexpected NULL pointer out\n");
return ERR_NULL;
}
fprintf(out,
"<app_version>\n"
" <app_name>%s</app_name>\n"
@ -447,10 +418,7 @@ int APP_VERSION::write(FILE* out) {
int FILE_REF::parse(FILE* in) {
char buf[256];
if(in==NULL) {
fprintf(stderr, "error: FILE_REF.parse: unexpected NULL pointer in\n");
return ERR_NULL;
}
strcpy(file_name, "");
strcpy(open_name, "");
fd = -1;
@ -467,10 +435,7 @@ int FILE_REF::parse(FILE* in) {
}
int FILE_REF::write(FILE* out) {
if(out==NULL) {
fprintf(stderr, "error: FILE_REF.write: unexpected NULL pointer out\n");
return ERR_NULL;
}
fprintf(out,
" <file_ref>\n"
" <file_name>%s</file_name>\n",
@ -492,10 +457,7 @@ int FILE_REF::write(FILE* out) {
int WORKUNIT::parse(FILE* in) {
char buf[256];
FILE_REF file_ref;
if(in==NULL) {
fprintf(stderr, "error: WORKUNIT.parse: unexpected NULL pointer in\n");
return ERR_NULL;
}
strcpy(name, "");
strcpy(app_name, "");
version_num = 0;
@ -524,10 +486,7 @@ int WORKUNIT::parse(FILE* in) {
int WORKUNIT::write(FILE* out) {
unsigned int i;
if(out==NULL) {
fprintf(stderr, "error: WORKUNIT.write: unexpected NULL pointer out\n");
return ERR_NULL;
}
fprintf(out,
"<workunit>\n"
" <name>%s</name>\n"
@ -546,10 +505,7 @@ int WORKUNIT::write(FILE* out) {
int RESULT::parse_ack(FILE* in) {
char buf[256];
if(in==NULL) {
fprintf(stderr, "error: RESULT.parse_ack: unexpected NULL pointer in\n");
return ERR_NULL;
}
strcpy(name, "");
while (fgets(buf, 256, in)) {
if (match_tag(buf, "</result_ack>")) return 0;
@ -579,10 +535,8 @@ void RESULT::clear() {
int RESULT::parse_server(FILE* in) {
char buf[256];
FILE_REF file_ref;
if(in==NULL) {
fprintf(stderr, "error: RESULT.parse_server: unexpected NULL pointer in\n");
return ERR_NULL;
}
clear();
while (fgets(buf, 256, in)) {
if (match_tag(buf, "</result>")) return 0;
if (parse_str(buf, "<name>", name)) continue;
@ -603,10 +557,8 @@ int RESULT::parse_server(FILE* in) {
int RESULT::parse_state(FILE* in) {
char buf[256];
FILE_REF file_ref;
if(in==NULL) {
fprintf(stderr, "error: RESULT.parse_state: unexpected NULL pointer in\n");
return ERR_NULL;
}
clear();
while (fgets(buf, 256, in)) {
if (match_tag(buf, "</result>")) return 0;
if (parse_str(buf, "<name>", name)) continue;
@ -636,10 +588,7 @@ int RESULT::write(FILE* out, bool to_server) {
unsigned int i;
FILE_INFO* fip;
int n;
if(out==NULL) {
fprintf(stderr, "error: RESULT.write: unexpected NULL pointer out\n");
return ERR_NULL;
}
fprintf(out,
"<result>\n"
" <name>%s</name>\n"

View File

@ -29,9 +29,6 @@
#include "scheduler_op.h"
SCHEDULER_OP::SCHEDULER_OP(HTTP_OP_SET* h) {
if(h==NULL) {
fprintf(stderr, "error: SCHEDULER_OP: unexpected NULL pointer h\n");
}
state = SCHEDULER_OP_STATE_IDLE;
http_op.http_op_state = HTTP_STATE_IDLE;
http_ops = h;
@ -140,10 +137,6 @@ int SCHEDULER_OP::start_rpc() {
int SCHEDULER_OP::init_master_fetch(PROJECT* p) {
int retval;
if (p==NULL) {
fprintf(stderr, "error: SCHEDULER_OP.init_master_fetch: NULL pointer p\n");
return ERR_NULL;
}
project = p;
if (log_flags.sched_op_debug) {
printf("Fetching master file for %s\n", project->master_url);
@ -355,10 +348,7 @@ SCHEDULER_REPLY::~SCHEDULER_REPLY() {
int SCHEDULER_REPLY::parse(FILE* in) {
char buf[256], *p;
int retval;
if(in==NULL) {
fprintf(stderr, "error: SCHEDULER_REPLY.parse: unexpected NULL pointer in\n");
return ERR_NULL;
}
strcpy(message, "");
strcpy(message_priority, "");
request_delay = 0;

View File

@ -1,12 +1,32 @@
<title>Berkeley Open Infrastructure for Network Computing (BOINC)</title>
<title>Berkeley Open Infrastructure for Network Computing (BOINC)</title>
<body bgcolor="#FFFFFF">
<h2>Berkeley Open Infrastructure for Network Computing (BOINC)</h2>
<h2>Berkeley Open Infrastructure for Network Computing (BOINC)</h2>
Berkeley Open Infrastructure for Network Computing (BOINC) is a software platform for public-participation distributed computing projects like
distributed.net and SETI@home.
<ul>
<li> <a href="intro.html">Introduction</a>
<li> <a href="intro.html">Introduction</a>
</ul>
<h3>Developing distributed applications with BOINC</h3>
<h3>Participating in BOINC projects</h3>
<font size=-1>
<dd> How to donate your unused computing power
to projects that use BOINC.
</font>
<ul>
<li><a href=project.html>Projects</a>
<li> <a href="account.html">Participant accounts</a>
<li> <a href="prefs.html">Preferences</a>
<li> <a href="startup.html">Participant startup</a>
</ul>
<h3>Designing a distributed computation with BOINC</h3>
<font size=-1>
<dd> Read this if you are considering using distributed computing
for your a compute- or storage-intensive application.
</font>
<ul>
<li><a href=parallelize.html>Is your application suitable?</a>
<li><a href=files.html>Compute model: files and file references</a>
<li><a href=app.html>Compute model: applications, platforms and versions</a>
<li><a href=work.html>Compute model: workunits</a>
@ -17,55 +37,63 @@
<li><a href=file_access.html>Compute model: remote file access</a>
<li><a href=validation.html>Accounting and result validation</a>
<li><a href=back_end.html>Back end examples</a>
</ul>
<h3>Developing a BOINC application</h3>
<font size=-1>
<dd> Read this to learn how to port an application to BOINC.
</font>
<ul>
<li><a href=api.html>The API</a>
<li><a href=graphics.html>The graphics API</a>
<li><a href=dev.html>Application development</a>
<li><a href=dev.html>Application development</a></ul>
<h3>Setting up a BOINC server</h3>
<font size=-1>
<dd> Read this to learn how to create a BOINC project.
</font>
<ul>
<li><a href=project.html>Projects</a>
<li> <a href="master_url.html">The master URL</a>
<li> <a href=road_map.html>Road map of the BOINC software</a>
<li> <a href="install.html">Installing a BOINC server</a>
<li> <a href="project_startup.html">Project startup checklist</a>
<li> <a href="sched_server.html">The BOINC scheduling server</a>
<li> <a href="test.html">Test applications and scripts</a>
</ul>
<h3>Road map of the BOINC software distribution</h3>
<h3>Developing and operating the back end of a BOINC project</h3>
<font size=-1>
<dd> Read this to learn how to feed work into a BOINC system,
and collect the results.
</font>
<ul>
<li> <a href=road_map.html>Road map</a>
<li> <a href="tools_security.html">Operational tools: security</a>
<li> <a href="tools_other.html">Operational tools: applications and versions</a>
<li> <a href="tools_work.html">Operational tools: work and results</a>
<li> <a href="security.html">Security</a>
</ul>
<h3>Operating a BOINC project</h3>
<h3>Implementation and debugging of BOINC</h3>
<font size=-1>
<dd> Read this to learn how to debug and enhance the BOINC software.
</font>
<ul>
<li> <a href="install.html">Installing a BOINC server</a>
<li> <a href="master_url.html">The master URL</a>
<li> <a href="project_startup.html">Project startup checklist</a>
<li> <a href="database.html">The BOINC database</a>
<li> <a href="sched_server.html">The BOINC scheduling server</a>
<li> <a href="tools_security.html">Operational tools: security</a>
<li> <a href="tools_other.html">Operational tools: applications and versions</a>
<li> <a href="tools_work.html">Operational tools: work and results</a>
<li> <a href="security.html">Security</a>
<li> <a href="database.html">The BOINC database</a>
<li> <a href="client_files.html">Core Client: file structure</a>
<li> <a href="client_fsm.html">Core Client: FSM structure</a>
<li> <a href="client_data.html">Core Client: data structures</a>
<li> <a href="client_logic.html">Core client: logic</a>
<li> <a href="client_debug.html">Core client: debugging</a>
<li> <a href="protocol.html">The BOINC client/server protocol</a>
<li> <a href="sched_policy.html">Scheduling server: policy</a>
<li> <a href="sched_impl.html">Scheduling server: implementation</a>
<li> <a href="sched_debug.html">Scheduling server: debugging</a>
<li> <a href="host_measure.html">Host measurements</a>
<li> <a href="rpc_policy.html">Scheduler RPC timing and retry policies</a>
<li> <a href="pers_file_xfer.html">Persistent file transfers</a>
</ul>
<h3>The BOINC client</h3>
<ul>
<li> <a href="client_files.html">Core Client: file structure</a>
<li> <a href="client_fsm.html">Core Client: FSM structure</a>
<li> <a href="client_data.html">Core Client: data structures</a>
<li> <a href="client_logic.html">Core client: logic</a>
<li> <a href="client_debug.html">Core client: debugging</a>
</ul>
<h3>Participating in BOINC projects</h3>
<ul>
<li> <a href="account.html">Participant accounts</a>
<li> <a href="prefs.html">Preferences</a>
<li> <a href="startup.html">Participant startup</a>
</ul>
<h3>Implementation and debugging notes</h3>
<ul>
<li> <a href="test.html">Test applications and scripts</a>
<li> <a href="protocol.html">The BOINC client/server protocol</a>
<li> <a href="sched_policy.html">Scheduling server: policy</a>
<li> <a href="sched_impl.html">Scheduling server: implementation</a>
<li> <a href="sched_debug.html">Scheduling server: debugging</a>
<li> <a href="host_measure.html">Host measurements</a>
<li> <a href="rpc_policy.html">Scheduler RPC timing and retry policies</a>
<li> <a href="pers_file_xfer.html">Persistent file transfers</a>
</ul>
<a href="http://sourceforge.net"><img
src="http://sourceforge.net/sflogo.php?group_id=52437&amp;type=5"
width="210" height="62" border="0" alt="SourceForge Logo"></a>
width="210" height="62" border="0" alt="SourceForge Logo"></a>

View File

@ -1,153 +1,115 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
<html lang="en">
<head>
<title>Introduction to BOINC</title>
<meta name="generator" content="BBEdit 6.1.2">
</head>
<body>
<h2>Introduction to BOINC</h2>
<title>Introduction to BOINC</title>
<h2>Introduction to BOINC</h2>
<p>
Berkeley Open Infrastructure for Network Computing (BOINC) is a
software platform for public-participation distributed computing
projects like distributed.net and SETI@home. BOINC supports applications
that can be divided into large parallel parts with few data
dependencies; it is not presently intended for fine-grained parallel
applications.
</p>
BOINC supports applications
that can be divided into large parallel parts with few data dependencies;
it is not presently intended for fine-grained parallel applications.
<p>
The features of BOINC include:
</p>
The features of BOINC include:
<ul>
<li>
<b>Multiple Independent Projects</b>
<br>
BOINC allows multiple independent projects to share
participants. Participants download a single <b>core client</b> program,
<li>
<b>Multiple independent projects</b>
<br>
BOINC allows multiple independent projects to share participants.
Participants download a single <b>core client</b> program,
which in turn downloads and executes project-specific executables.
Participants can control how their resources are divided among the
projects and which projects they participate in. Participants may also
control how many applications are running at once, thereby taking
advantage of multiple CPU systems. Since the projects are independent,
Participants can control which projects they participate in,
and how their resources are divided among these projects.
Since the projects are independent,
any downtime for one project will merely result in temporary extra
processing power for another.
<br>
<br>
</li>
<li>
<b>Comprehensive Security</b>
<br>
All file transfers to the host computer are validated with an
processing power for another.
<li>
<b>Comprehensive security</b>
<br>
All file transfers to the host computer are validated with an
MD5 checksum, and all executable files are signed with RSA
public/private key encryption (1024 bit default). See the <a
href="security.html">security</a> page for more details.
<br>
<br>
</li>
<li>
<b>Host Work Caching</b>
<br>
The BOINC core client will download enough work to keep the host
busy for a user specifiable amount of time. This will allow the client
public/private key encryption (1024 bit default).
See the <a href="security.html">security</a> page for more details.
<li>
<b>Host work caching</b>
<br>
The BOINC core client will download enough work to keep the host
busy for a user specifiable amount of time.
This will allow the client
to continue to function during project downtimes, as well as decrease
the frequency of connections to servers.
<br>
<br>
</li>
<li>
<b>Multiple Platform Support</b>
<br>
The BOINC core client can run on almost any platform (Mac OS X,
the frequency of connections to servers.
<li>
<b>Multiple platform support</b>
<br>
The BOINC core client can run on almost any platform (Mac OS X,
Windows 95 and later, Linux and other Unix systems) and provides OpenGL
based graphics support on Mac OS X, Windows 95 and up, and X Windows.
<br>
<br>
</li>
<li>
<b>Multiple Server Support</b>
<br>
The BOINC architecture supports multiple scheduling and data
servers. If one server is temporarily unavailable, clients will
automatically try alternate servers. If all servers are unavailable,
clients will perform random exponential backoff to avoid flooding the
server.
<br>
<br>
</li>
<li>
<b>Open Source</b>
<br>
BOINC is fully open source and is distributed under the Mozilla
Public License version 1.0. Under this license, projects that utilize
based graphics support on Mac OS X, Windows 95 and up, and X Windows.
<li>
<b>Multiple server support</b>
<br>
The BOINC architecture supports multiple scheduling and data servers.
If one server is temporarily unavailable,
clients automatically try alternate servers.
If all servers are unavailable,
clients perform random exponential backoff to avoid flooding the server.
<li>
<b>Open source</b>
<br>
BOINC is open source; it's distributed under the Mozilla
Public License version 1.0.
Projects that use
BOINC are not required to release the source code of their project
specific applications, though they are encouraged to do so. This means
BOINC is well suited for private, commercial, or public distributed
computing projects.
<br>
<br>
</li>
<li>
<b>Support for Large Data Computations</b>
<br>
BOINC supports applications that produce or consume large
amounts of data (on the order of gigabytes). It allows data distribution
specific applications.
BOINC can be used for private, commercial, or public distributed
computing projects.
<li>
<b>Support for large data</b>
<br>
BOINC supports applications that produce or consume large
amounts of data (on the order of gigabytes).
It allows data distribution
and collection to be spread across many servers, and it allows
participant hosts to do large data transfers unobtrusively. Users are
able to specify maximum storage usage so that BOINC doesn't fill up
their disk. BOINC also handles network disconnections and allows
user-specifiable network bandwidth restrictions.
<br>
<br>
</li>
<li>
<b>Extreme Resource Requirement Support</b>
<br>
BOINC supports applications with extreme requirements for
memory, disk, cache or other resources. Work is dispatched only to hosts
able to handle it.
<br>
<br>
</li>
<li>
<b>Application Program Interface</b>
<br>
An Application Program Interface (API) is provided to
application developers to ease integration with BOINC. See the <a
href="api.html">API page</a> for details.
<br>
<br>
</li>
<li>
<b>Support for Applications in any Language</b>
<br>
BOINC applications can be developed in any language (C++,
Fortran, Perl). An application can consist of several files (e.g.
multiple programs and a coordinating script). New versions of
participant hosts to transfer large data unobtrusively.
Users are able to specify maximum disk usage.
BOINC also handles network disconnections and allows
user-specifiable network bandwidth restrictions.
<li>
<b>Extreme resource requirement support</b>
<br>
BOINC supports applications with extreme requirements for
memory, disk, cache or other resources.
Work is dispatched only to hosts
able to handle it.
<li>
<b>Application program Interface</b>
<br>
An Application Program Interface (API) is provided to
application developers to ease integration with BOINC.
See the <a href="api.html">API page</a> for details.
<li>
<b>Support for applications in any language</b>
<br>
BOINC applications can be developed in any language (C++,
Fortran, Perl).
An application can consist of several files
(e.g. multiple programs and a coordinating script).
New versions of
applications can be deployed without requiring participants to download.
<li>
<b>Multiprocessor support</b>.
The BOINC client can use multiple CPUs.
<br>
<br>
</li>
<li>
<b>Web Based User and Administrative Interfaces</b>
<br>
A set of PHP scripts is included to provide interfaces for user
and administrative tasks. These include preference editing, account
creation and user information display.
<br>
<br>
</li>
<li>
<b>Database and Server Architecture</b>
<br>
BOINC provides a SQL schema, database functions, a simple server
<li>
<b>Web Based User and Administrative Interfaces</b>
<br>
A set of PHP scripts is included to provide interfaces for user
and administrative tasks.
These include preference editing, account creation and user information display.
<li>
<b>Database and server architecture</b>
<br>
BOINC provides a SQL schema, database functions, a simple server
architecture, web based user interfaces and server administration tools.
Each project must provide and maintain its own server systems and
backend result processing but these systems can be set up easily and
require only open-source components (MySQL, PHP, Apache, and Linux). The
BOINC scheduling server also supports FastCGI for enhanced server
performance.
</li>
require only open-source components (MySQL, PHP, Apache, and Linux).
The BOINC scheduling server also supports FastCGI for enhanced server
performance.
</ul>
</body>
</html>

View File

@ -15,7 +15,7 @@
add_user("prefs.xml");
add_app("upper_case", "windows_intelx86", "upper_case.exe");
create_work("-appname upper_case -rsc_iops 180000000000.0 -rsc_fpops 0.0 -wu_name uc_wu -wu_template uc_wu -result_template uc_result -nresults 2 input input input input input");
start_feeder();
//start_feeder();
//stop_feeder();
//check_results_done();
//compare_file("uc_wu_0_0", "uc_correct_output");