![]() |
BOINC 开发文档BOINC 项目平台 |
公共资源计算项目所能使用到的计算机在操作系统和硬件架构上千差万别。比方说,处理器可能是 486,奔腾或是 AMD 的芯片,Windows 的版本可能是 95,98,ME,2000,XP 等。主机可能有多个处理器或是图形协处理器。
BOINC 试图达到如下的目标:
资源的多样性(Resource heterogeneity)。它使得使用多种类型的计算机都可以参加一个或多个项目。
简洁(Simplicity)。版本和架构的多样性不应该影响到 BOINC 的内核。
记录(Accounting)。服务器上应该存储足够的架构信息以允许针对某些特性进行分类统计。
每个平台(platform)都是一个编译目标。每个项目的 BOINC 数据库都维护了一组平台。每个平台有一个名字(name)和一个对它所处理的架构范围的描述(description)。每个 BOINC 程序(客户端内核和计算程序)都对应着一个平台。
一个平台至少应该是一种 CPU 架构和一种操作系统的组合。举例如下:
|
名字(name) |
描述(description) |
|---|---|
|
windows_intelx86 |
运行在 Intel 的 x86 兼容处理器上的微软公司的 Windows 操作系统(95 或者更新的版本) |
|
linux_x86 |
运行在 Intel 的 x86 兼容处理器上的 Linux 操作系统 |
|
macos_ppc |
运行在摩托罗拉的 PowerPC 处理器上的苹果公司的 Mac OS 9.0 操作系统 |
|
sparc_solaris |
运行在 SPARC 兼容处理器上的 Solaris 2.1 或更新的版本 |
如果平台在名字中指定了一个特定的版本(比如操作系统的版本),那它应该使用了那个版本中的新特性。比方说,平台 sparc_solaris2.8 应该使用在运行了2.8或更新版本的 Solaris 的 SPARC 机器上。
简洁起见,我们假设平台是互斥的,也就是说,如果 X 和 Y 是两个不同的平台,那平台 X 上的计算程序应该不能和平台 Y 的客户端内核协同工作。BOINC 的调度服务器在分发任务包前会检查是否是同一平台的计算程序版本。
平台的数目应该尽可能地少。比方说,假设现在有 Solaris2.6 和 Solaris2.7 平台。那么运行 Solaris2.6 客户端内核的用户将只能运行适用于 Solaris2.6 的计算程序,计算程序的开发人员将不得不分别为2.6和2.7创建两个版本的计算程序,即使它们是完全相同的。
BOINC 允许计算程序利用特定的计算机架构,而计算程序也必须负责识别这种架构。
换句话说,如果你想构建一个能利用 AMD 的3DNow 指令集的计算程序,请不要创建一个新的 windows_amd_3dnow 平台。你应该在 windows_intelx86 平台上构建一个可以自动判别是否运行在 3DNow 机器上并使用相应的程序的代码的版本。
BOINC 会收集每一个完成的计算结果的架构信息,从而允许详细的统计信息分类。
首先,客户端内核试图会识别 CPU 生产商、CPU 型号、操作系统名称及版本等。这些都将保存在主机记录中。
其次,能够识别特定架构信息的计算程序可以通过调用 BOINC API 中的 boinc_architecture() 函数来将信息传递给客户端内核。这样将会把一个字符串(其内容随项目不同而不同,一般是以XML格式)传递给客户端内核,而后者会将它记录在计算结果数据库记录的 architecture_xml 字段中。比如,计算程序可能会传递如下的描述:
<has_3dnow_instructions/> <graphics_board>ATI Rage 64MB</graphics_board>
这样我们就可以得到 3DNow 主机的平均或总体计算能力,可以和 Intel 的兼容主机进行比较。
虽然各个项目可以创建它自己的平台,但为了避免混乱,我们建议由一个组织来对平台的创建和命名进行协调(目前这是由加州大学柏克利分校的 SETI@home 项目组来承担的)。
所有平台都在 BOINC 数据库的 platform 表中进行维护。可以使用 xadd 来进行创建。
本页内容由中国分布式计算总站组织翻译,原文出自 BOINC 官方开发文档。参与本页制作的人员有:Youth(翻译)、碧城仙(编辑)。本站所有内容版权为中国分布式计算总站所有。本站欢迎非赢利性网站在遵守中华人民共和国版权法的前提下摘录或引用本站内容,但是请注明原作者和原出处。