A platform is a compilation target for BOINC applications - typically a combination of a CPU architecture and an operating system. Each application version is associated with a particular platform. Your project can provide application versions for any set of platforms; the more platforms you support, the more hosts will be able to participate in your project.
A given BOINC client supports one or more platforms (e.g., a Win64 client can run Win64 or Win32 applications). The client reports its platform to the scheduling server, and the scheduling server sends work to the client only if there is an application version for one of its platforms.
BOINC defines a set of platforms (see below). Platforms are maintained in the platform table in the BOINC database. This is pre-populated with the 10 or so most common platforms. To create more, edit project.xml and add them using xadd.
Each platform has a name and a description of the range of computers it can handle. For coherence between projects, use only the following platforms. If you want to add a different platform, please contact us.
You may have executables that exploit specific architectural features at a finer granularity than that of platform. For example, you may have an executable that uses AMD 3DNow instructions. There are two ways to arrange this:
- Use the application planning mechanism to specify a class of app versions that can be sent only to hosts with particular CPU features;
- Make a "fat executable" that recognizes when it's running on a 3DNow machine, and branches to the appropriate code.
|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|
|x86_64_phi-pc-linux-gnu||Linux running on a Xeon Phi|
|powerpc-linux-gnu||Linux running on a 32-bit PowerPC processor|
|ppc64-linux-gnu||Linux running on a 64-bit PowerPC processor|
|alpha-hp-linux-gnu||Linux running on Alpha|
|ia64-linux-gnu||Linux running on IA64 (Itanium)|
|sparc-sun-linux-gnu||Linux running on SPARC|
|sparc64-sun-linux-gnu||Linux running on SPARC 64-bit|
|arm-unknown-linux-gnueabihf||Linux running on ARM, hardware FP|
|arm-unknown-linux-gnueabisf||Linux running on ARM, software FP|
|aarch64-unknown-linux-gnu||Linux running on 64-bit ARM|
|powerpc-apple-darwin||Mac OS X 10.3 or later running on Motorola PowerPC|
|i686-apple-darwin||Mac OS 10.4+ running on an Intel CPU|
|x86_64-apple-darwin||Mac OS 10.5+ running on an Intel 64-bit CPU|
|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|
|alpha-hp-tru64||Tru64 Unix running on Alpha|
|ia64-hp-hpux||HPUX running on IA64|
|powerpc-ibm-aix||AIX running on PowerPC|
|i686-pc-freebsd||FreeBSD on x86|
|x86_64-pc-freebsd||FreeBSD on Intel-compatible 64-bit|
|i686-pc-openbsd||OpenBSD on x86|
|x86_64-pc-openbsd||OpenBSD on Intel-compatible 64-bit|
|i686-pc-solaris||Solaris 2.8+ on an Intel x86-compatible CPU|
|x86_64-pc-solaris||Solaris 2.8+ on an AMD x86_64 or Intel EM64T CPU|
|i586-pc-haiku||Haiku on an Intel x86-compatible CPU|
|powerpc64-ps3-linux-gnu||Sony Playstation 3 (Cell processor) running Linux|
|arm-android-linux-gnu||Android running on ARM armeabi-v7a|
|aarch64-android-linux-gnu||Android running on ARM 64-bit arm64-v8a|
|x86-android-linux-gnu||Android running on Intel x86 compatible|
|x86_64-android-linux-gnu||Android running on Intel x64 compatible|
|mips-android-linux-gnu||Android running on MIPS (Big Endian)|
|mips64-android-linux-gnu||Android running on MIPS 64-bit (Big Endian)|
|mipsel-android-linux-gnu||Android running on MIPS (Little Endian)|
|mips64el-android-linux-gnu||Android running on MIPS 64-bit (Little Endian)|
Most of the Unix platforms names are what's generated by config.guess. But not all of them. If config.guess generates the wrong string, use the --with-boinc-platform=NAME option to configure.