PetscBags 可以与 64 位版本的 petsc 一起使用吗?

计算科学 宠物
2021-12-27 05:36:49

我正在查看 的文档PetscBagCreate(),它说

A 结构的大小必须足够小以适合 PetscInt;默认情况下 PetscInt > 4 字节。除非您的 A 结构太大,否则下面可以忽略有关转换为较短长度的警告。

我假设这意味着指向结构的指针必须小于 PetscInt,示例使用包含 PetscInt 以及其他内容的结构。也就是说,我的印象是 64 位机器上的指针可能大于 PetscInt 中的 32 位。

这种对结构大小的限制对用户意味着什么?

PetscBags 可以在 64 位系统上使用吗?

1个回答

PetscBag用于保存参数或其他冗余数据,因此它不是放置大型数据(如分布式模型状态)的地方。它可以与 64 位整数一起使用,但不幸的是,该格式与 32 位整数格式不二进制兼容。可以将其修复为向后兼容,但代价是使格式稍微复杂一些,但我怀疑现在是否有人自愿这样做。至于你的问题:

这种对结构大小的限制对用户意味着什么?

您应该在PetscBag. 由于数据是严格加载的(而不是延迟加载的),因此无论如何您都希望它能够以合理的内存量加载它。

PetscBags 可以在 64 位系统上使用吗?

绝对可以,并且格式在 32 位和 64 位系统以及大端与小端系统之间兼容。