避免 Java MPI 绑定中的命名空间冲突



我正在为我当前的项目使用 MPJ-api。我正在使用的两个实现是MPJ-express和Fast-MPJ。但是,由于它们都实现了相同的 API,即 MPJ-API,由于名称空间冲突,我无法同时支持这两种实现。

有没有办法用相同的包和类名包装两个不同的库,以便在 Java 或 Scala 中同时支持两者?

到目前为止,我能想到的唯一方法是将模块移动到单独的项目中,但我不确定这是要走的路。

如果你的代码只使用 MPI 函数的子集(就像我审查过的大多数 MPI 代码一样),你可以编写一个抽象层(特征甚至 Cake-Pattern)来定义你实际使用的操作。然后,您可以为每个实现实现一个具体的适配器。

这种方法也适用于非MPI通信层(想想Akka,JGroups等)。

作为奖励点,您可以使用 SLF4J 方法:在运行时根据类路径中的实际内容选择正确的实现。

相关内容

  • 没有找到相关文章

最新更新