Version 9 (modified by 17 years ago) (diff) | ,
---|
Platforms
The computers available to a volunteer computing project have a wide range of operating systems and hardware architectures. For example, they may run many versions of Windows (95, 98, ME, 2000, XP) on many processors variants (486, Pentium, AMD). Hosts may have multiple processors and/or graphics coprocessors.
A platform is a compilation target - typically a combination of a CPU architecture and an operating system. The BOINC database of each project includes a set of platforms. Each platform has a name and a description of the range of computers it can handle. Each application version is associated with a particular platform.
For coherence between projects, you should use only the following platforms. If you want to add a different platform, please contact us.
Name | Description |
windows_intelx86 | Microsoft Windows (98 or later) running on an Intel x86-compatible CPU |
windows_x86_64 | Microsoft Windows running on an AMD x86_64 or Intel EM64T CPU |
i686-pc-linux-gnu | Linux running on an Intel x86-compatible CPU |
x86_64-pc-linux-gnu | Linux running on an AMD x86_64 or Intel EM64T CPU |
ppc64-linux-gnu | Linux running on a 64-bit PowerPC processor |
powerpc-apple-darwin | Mac OS X 10.3 or later running on Motorola PowerPC |
i686-apple-darwin | Mac OS 10.4+ running on Intel |
x86_64-apple-darwin | Mac OS 10.5+ running on Intel 64-bit |
sparc-sun-solaris2.7 | Solaris 2.7 running on a SPARC-compatible CPU |
sparc-sun-solaris | Solaris 2.8+ running on a SPARC-compatible CPU |
sparc64-sun-solaris | Solaris 2.8+ running on a SPARC 64-bit CPU |
hppa-hp-hpux | HPUX running on 32-bit HPPA |
hppa64-hp-hpux | HPUX running on 64-bit HPPA |
ia64-hp-hpux | HPUX running on IA64 |
powerpc-ibm-aix | AIX running on PowerPC |
A platform name is compiled into the BOINC client. The client reports its platform to the scheduling server, and the scheduling server sends work to a host only if there is an application version for the same platform.
Application optimization for specific architectures
BOINC allows applications to exploit specific architectures, but places the burden of recognizing the architecture on the application. In other words, if you want to make a version of your application that can use the AMD 3DNow instruction set, don't create a new windows_amd_3dnow platform. Instead, make a version for the windows_intelx86 platform that recognizes when it's running on a 3DNow machine, and branches to the appropriate code.
This excludes the combinatorial explosion of versions and architectures from the internals of BOINC.
Web-site statistics breakdown by architecture
BOINC collects architecture details about each completed result to allow detailed statistical breakdowns.
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.
Second, applications that recognize even more specific architecture information can pass it back to the core client using the boinc_architecture() function from the BOINC API. This passes a string (project-specific, but typically in XML) to the core client, which records it in the architecture_xml field of the result database record. For example, the application might pass a description like
<has_3dnow_instructions/> <graphics_board>ATI Rage 64MB</graphics_board>
This makes it possible, for example, to report average or total performance statistics for 3DNow hosts contrasted with other Intel-compatible hosts.
Tools
Platforms are maintained in the platform table in the BOINC DB, and can be created using the xadd utility.