Changes between Version 16 and Version 17 of BoincPlatforms


Ignore:
Timestamp:
Jun 30, 2008, 11:27:14 AM (16 years ago)
Author:
davea
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • BoincPlatforms

    v16 v17  
    11= Platforms =
    2        
    3 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.
    42
    5 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 [AppVersion application version] is associated with a particular platform.
     3A '''platform''' is a compilation target for BOINC applications -
     4typically a combination of a CPU architecture and an operating system.
     5Each [AppVersion application version] is associated with a particular platform.
     6Your project can provide application versions for any set of platforms;
     7the more platforms you support, the more hosts will be able to
     8participate in your project.
    69
    7 Most of the Unix platforms names are what's generated by config.guess.
    8 But not all of them.
    9 If config.guess generates the wrong string,
    10 use the [BuildSystem --with-boinc-platform=NAME option to configure].
     10A given BOINC client supports one or more platforms
     11(e.g., a Win64 client can run Win64 or Win32 applications).
     12The client reports its platform to the scheduling server,
     13and the scheduling server sends work to the client only
     14if there is an application version for one of its platforms.
    1115
    12 For coherence between projects, you should use only the following platforms.
     16BOINC defines a set of platforms (see below).
     17If you want your application to exploit specific architectural features at a finer granularity,
     18your application must recognize the features and branch to appropriate code.
     19In other words, if you want to make a version of your application that can use the AMD 3DNow instruction set,
     20don't create a new '''windows_amd_3dnow''' platform.
     21Instead, make a version for the '''windows_intelx86''' platform that recognizes when it's running on a 3DNow machine,
     22and branches to the appropriate code.
     23
     24Platforms are maintained in the '''platform''' table in the BOINC database.
     25This is pre-populated with the 10 or so most common platforms.
     26To create more, edit '''project.xml''' and add them using [XaddTool xadd].
     27
     28Each platform has a '''name''' and a '''description''' of the range of computers it can handle.
     29For coherence between projects, use only the following platforms.
    1330If you want to add a different platform, please [ProjectPeople contact us].
    1431
     
    4057||'''x86_64-pc-openbsd'''|| OpenBSD on Intel-compatible 64-bit ||
    4158
    42 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.
     59Most of the Unix platforms names are what's generated by config.guess.
     60But not all of them.
     61If config.guess generates the wrong string,
     62use the [BuildSystem --with-boinc-platform=NAME option to configure].
    4363
    44 Since version 5.9.6, the BOINC client supports alternate platforms. For example, a Mac/Intel host is able to run Mac/PPC applications in emulation mode. Mac/Intel clients will ask for work specifying Mac/Intel as main platform and Mac/PPC as alternate platform. If your project doesn't have a Mac/Intel application, such hosts will still be able to participate in your project, using the PPC application.
    45 
    46 == Application optimization for specific architectures == #optimization
    47 
    48 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.
    49 
    50 This excludes the combinatorial explosion of versions and architectures from the internals of BOINC.
    51 
    52 == Web-site statistics breakdown by architecture == #arch-stats
    53 
    54 BOINC collects architecture details about each completed result to allow detailed statistical breakdowns.
    55 
    56 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.
    57 
    58 Second, applications that recognize even more specific architecture information can pass it back to the core client using the '''boinc_architecture()''' function from [BasicApi 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
    59 
    60 {{{
    61 <has_3dnow_instructions/>
    62 <graphics_board>ATI Rage 64MB</graphics_board>
    63 }}}
    64 
    65 This makes it possible, for example, to report average or total performance statistics for 3DNow hosts contrasted with other Intel-compatible hosts.
    66 
    67 == Tools == #tools
    68 
    69 Platforms are maintained in the '''platform''' table in the BOINC DB, and can be created using the [XaddTool xadd] utility.