svn path=/trunk/boinc/; revision=564
This commit is contained in:
David Anderson 2002-11-03 23:18:47 +00:00
parent 9b18969326
commit 13fd9c2cb0
1 changed files with 34 additions and 20 deletions

View File

@ -2,7 +2,7 @@
<body bgcolor=ffffff>
<h2>Platforms</h2>
<b>Goals</b>
<h3>Goals</h3>
<p>
BOINC is intended to accommodate participant hosts
with a wide range of operating systems and hardware architectures.
@ -25,7 +25,7 @@ The combinatorial explosion of versions and architectures should be
excluded from the internals of BOINC.
</ul>
<b>Design</b>
<h3>Design</h3>
<p>
A <b>platform</b> is a compilation target.
A set of platforms is maintained in the BOINC database of each project.
@ -51,7 +51,7 @@ Examples might include:
The name of a platform should specify a particular version (e.g. of an OS)
only if it uses features new to that version.
For example, the platform <b>sparc_solaris2.8</b> should apply
ONLY to SPARC machines running Solaris 2.8 or greater.
to SPARC machines running Solaris 2.8 or greater.
<p>
For simplicity, platforms are assumed to be mutually exclusive:
@ -70,46 +70,60 @@ Application developers will have to create versions
for both 2.6 and 2.7, even if they're identical.
<p>
<b>Handling architectural diversity</b>
<h3>Application optimization for specific architectures</h3>
<p>
BOINC allows applications to exploit specific architectures,
but shifts the burden of recognizing the the architecture
to the application developer.
but places the burden of recognizing the architecture
on the application developer.
<p>
In other words, if you want to make a version of your application
that can use the AMD 3DNow instruction set,
<i>don't</i> create a new <b>windows_amd_3dnow</b> platform.
Instead, make a version for the <b>windows_intelx86</b> platform
that recognizes when it's running a a 3DNow machine,
that recognizes when it's running on a 3DNow machine,
and branches to the appropriate code.
<p>
It is, however, desirable to report architecture back to the
BOINC server.
This makes it possible, for example, to report average or total
performance statistics for 3DNow hosts constrasted
with other Intel-compatible hosts.
This is done using the <b>boinc_architecture()</b>
<h3>Web-site statistics breakdown by archicture</h3>
<p>
BOINC collects architecture details about each completed result
to allow detailed statistical breakdowns.
<p>
First, the core client attempts to find
the CPU vendor, the CPU model,
the OS name, and the OS version.
These are stored in the host record.
<p>
Second, applications that recognize even more specific
architecure information can pass it back to the core client
using the <b>boinc_architecture()</b>
function from <a href=api.html>the BOINC API</a>.
This passes a string (project-specific, but typically in XML)
to the core client, which records it in the
<b>architecture_xml</b> field of the <b>result</b> database record.
For example, the application might pass a description like
<pre>
<
&lt;has_3dnow_instructions/>
&lt;graphics_board>ATI Rage 64MB</graphics_board>
</pre>
This makes it possible, for example, to report average or total
performance statistics for 3DNow hosts constrasted
with other Intel-compatible hosts.
<b>Avoiding platform anarchy</b>
<h3>Avoiding platform anarchy</h3>
<p>
Each BOINC project is free to create its own platforms.
To avoid anarchy, however,
To avoid anarchy, however, we recommend that
platform creation and naming be coordinated by a single group
(currently the SETI@home project at UCB).
<b>Tools</b>
Each
<h3>Tools</h3>
<p>
Platforms are maintained in the <b>platform</b> table in the BOINC DB,
and can be created using the <a href=tools_other.html>add</a> utility.
<p>