2017-12-01 7 views
0

MPI_Comm_sizeコマンドは、プロセッサ数が4の場合、常に単一プロセスを返します。仮想xUbuntu 16.04でMPI 3.2.1とCLionを使用しています。エミュレータ - VMWare vm設定のプロセッサ数は4に設定され、xUbuntuのnprocは「4」と表示されます。ここでMPI_Comm_sizeは常に1を返します

whereis mpicc用の出力です:。

mpicc: /usr/local/bin/mpicc 

I'vは** MPI 1で試してみましたが、それはalse同じことをやりました。どうしましたか?ここで

はCMakeLists.txtファイルです。ここで

cmake_minimum_required(VERSION 3.8) 
project(primes) 

set(CMAKE_C_STANDARD 99) 

set(SOURCE_FILES main.c) 
add_executable(primes ${SOURCE_FILES}) 

set(CMAKE_C_COMPILER "/usr/local/bin/mpicc") 

コードの一部です:

コンソールかかわらず実行
int main(int argc, char* argv[]) { 

... 

int rank, tasksCount; 

MPI_Init(&argc, &argv); 
MPI_Comm_rank(MPI_COMM_WORLD, &rank); 
MPI_Comm_size(MPI_COMM_WORLD, &tasksCount); 

UPD

[email protected]:~/prog/primes$ mpicc -o main.o main.c 
[email protected]:~/prog/primes$ mpiexec -np 4 ./mail.o 

何も与えません。何も起こらず、何もコンソールに書き込まれません。 "kamo @ kamo:〜/ prog/primes $"という接頭辞が付いていない新しい行。

+0

あなたのアプリケーションがあるlibの 'mpirun'を混ぜていないことを確認してください。あなたのアプリは他のlib /バージョンの' libmpi.so'とリンクしていません。 –

+2

@GillesGouaillardet:OPが 'mpirun'をまったく使っているのだろうか? –

+0

良い点! MPIアプリケーションは 'mpirun'または' mpiexec'を介して起動されなければなりません。そうでなければこれはシングルトンモードと呼ばれ、一つのMPIタスクだけが実行されます。 –

答えて

0

私は最初から試してみましたが、うまくいきました。

CLionデバッガは間違っているので、私の質問のUPDブロックに記載されているように、mpicc + mpiexecコマンドを使うべきです。

関連する問題