4 BoincPlatforms
David Anderson edited this page 2024-11-08 00:31:29 -08:00

Platforms

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.
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
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
arm64-apple-darwin Mac OS running on ARM
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.