执行 C OpenMPI 项目时出现 Xcode 问题

问题描述 投票:0回答:1

在 M3 Pro 上,在 Xcode 中,我想运行一个简单的 C 源文件:

#include <mpi.h>
#include <stdio.h>

int main(int argc, char** argv) {
    MPI_Init(&argc, &argv);

    int world_size;
    MPI_Comm_size(MPI_COMM_WORLD, &world_size);

    int world_rank;
    MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);

    printf("hello from process %d of %d total processes\n", world_rank, world_size);

    MPI_Finalize();
    return 0;
}

它成功构建,但没有成功运行,在控制台上返回:

NSBundle file:///System/Library/PrivateFrameworks/MetalTools.framework/ principal class is nil because all fallbacks have failed
[Mac.station:03539] shmem: mmap: an error occurred while determining whether or not /var/folders/0j/hwf25cd97w1916m2vcbz833r0000gn/T//ompi.Mac.501/jf.0/1294860288/sm_segment.Mac.501.4d2e0000.0 could be created.
hello from process 0 of 1 total processes
Program ended with exit code: 0


我错过了什么?

  1. 为了构建,我以这种方式配置了 Xcode 项目:
  • 构建设置 -> 标头搜索路径 =
    /opt/homebrew/opt/open-mpi/include
  • 构建设置 -> 库搜索路径 =
    /opt/homebrew/opt/open-mpi/lib
  • 构建设置 -> 其他链接器标志 =
    -lmpi

brew --prefix open-mpi
返回
/opt/homebrew/opt/open-mpi

  1. 通过执行以下命令,项目在终端上成功构建:
    mpicc main.c

    并通过执行成功运行:
    mpiexec a.out
    ,正确显示:
    hello from process 1...12 of 12 total processes
c xcode openmpi
1个回答
0
投票

解决了

我改变了 Xcode 运行程序的方式,它只是执行 ./a.out 而不是执行 mpiexec a.out 之类的东西

  1. 编辑方案 -> 运行 -> 信息 -> 可执行文件 -> 其他... ->
  2. 编辑方案 -> 运行 -> 参数 -> 启动时传递的参数 ->
    -np 4 "$(BUILT_PRODUCTS_DIR)/$(EXECUTABLE_NAME)"
© www.soinside.com 2019 - 2024. All rights reserved.