Change-Id: I04927e6dd1bfe1d0b210ec0b7e9d86c449e6daca Refs: #1507 Refs: #1519
This commit is contained in:
committed by
Masamichi Takagi
parent
b380f0790d
commit
e6ec52dfbd
39
test/issues/1507+1519/README
Normal file
39
test/issues/1507+1519/README
Normal file
@ -0,0 +1,39 @@
|
||||
【Issue#1507/#1519 動作確認】
|
||||
|
||||
□テスト内容
|
||||
TCS (Technical Computing Suite) 環境で MPIとOpenMPを利用した
|
||||
サンプルプログラムをマルチプロセス+マルチスレッドで実行して、
|
||||
xpmemやshmobjを利用するライブラリの初期化および基本動作を確認する。
|
||||
|
||||
□実行手順
|
||||
1.
|
||||
SSMで以下のとおりサンプルプログラムをビルドする。
|
||||
必要に応じて PATHを設定すること。
|
||||
|
||||
tradモード:
|
||||
$ mpifccpx -Kopenmp -Nfjomplib -DMPI -DOPENMP mpi+affinity.c -o mpi+fjopenmp-affinity
|
||||
|
||||
LLVMモード:
|
||||
$ mpifccpx -DMPI -DOPENMP -Kopenmp mpi+affinity.c -o mpi+llvmopenmp-affinity
|
||||
|
||||
2.
|
||||
インタラクティブモードでジョブ実行を開始する。
|
||||
SSMで以下のように pjsubコマンドを発行する。
|
||||
rscunitやrscgrp、jobenvは環境に応じて指定すること。
|
||||
|
||||
$ pjsub --interact -L "rscunit=xxx,rscgrp=xxx,jobenv=xxx,node=1" --mpi "proc=2" --sparam wait-time=1000
|
||||
|
||||
3.
|
||||
サンプルプログラムを2プロセス各24スレッド構成で実行する。
|
||||
必要に応じて PATHや LD_LIBRARY_PATHを指定すること。
|
||||
|
||||
tradモード:
|
||||
$ OMP_NUM_THREADS=24 mpirun -n 2 mcexec -n 2 ./mpi+fjopenmp-affinity
|
||||
|
||||
LLVMモード:
|
||||
$ OMP_NUM_THREADS=24 mpirun -n 2 mcexec -n 2 ./mpi+llvmopenmp-affinity
|
||||
|
||||
|
||||
□実行結果
|
||||
result.txt を参照すること。
|
||||
サンプルプログラムが異常終了していないことを確認する。
|
||||
98
test/issues/1507+1519/mpi+affinity.c
Normal file
98
test/issues/1507+1519/mpi+affinity.c
Normal file
@ -0,0 +1,98 @@
|
||||
#define _GNU_SOURCE 1
|
||||
#include <stdio.h>
|
||||
#include <sched.h>
|
||||
#include <sys/types.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#ifdef OPENMP
|
||||
#include <omp.h>
|
||||
#include <sys/syscall.h>
|
||||
#endif
|
||||
#ifdef MPI
|
||||
#include <mpi.h>
|
||||
#endif
|
||||
|
||||
#define BUFFER_SIZE 4096
|
||||
|
||||
#define check_env(env) \
|
||||
({ \
|
||||
if (!getenv(env)) { \
|
||||
fprintf(stderr, "error: environment variable %s doesn't exist?!\n", env); \
|
||||
exit(1); \
|
||||
} \
|
||||
})
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
int rank = 0;
|
||||
int size = 0;
|
||||
int ncore = 128;
|
||||
char hname[BUFFER_SIZE];
|
||||
int wait = 0;
|
||||
|
||||
if (argc > 1 && !strcmp("--wait", argv[1])) {
|
||||
wait = 1;
|
||||
}
|
||||
|
||||
#ifdef FJ_CHECK_ENV
|
||||
{
|
||||
check_env("PMIX_RANK");
|
||||
check_env("OMPI_PLE_RANK_ON_NODE");
|
||||
check_env("PLE_RANK_ON_NODE");
|
||||
check_env("OMPI_MCA_orte_ess_vpid");
|
||||
check_env("FLIB_RANK_ON_NODE");
|
||||
}
|
||||
#endif
|
||||
|
||||
gethostname(hname, BUFFER_SIZE);
|
||||
#ifdef MPI
|
||||
MPI_Init(&argc, &argv);
|
||||
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
|
||||
MPI_Comm_size(MPI_COMM_WORLD, &size);
|
||||
#endif
|
||||
|
||||
#ifdef OPENMP
|
||||
#pragma omp parallel
|
||||
#endif
|
||||
{
|
||||
int i;
|
||||
int tid;
|
||||
pid_t pid;
|
||||
cpu_set_t cpuset;
|
||||
char affinity[BUFFER_SIZE];
|
||||
#ifdef OPENMP
|
||||
tid = omp_get_thread_num();
|
||||
pid = (pid_t)syscall(SYS_gettid);
|
||||
#else
|
||||
tid = 0;
|
||||
pid = getpid();
|
||||
#endif
|
||||
CPU_ZERO(&cpuset);
|
||||
if ((sched_getaffinity(pid, sizeof(cpu_set_t), &cpuset)) == 1) {
|
||||
perror("Error sched_getaffinity");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
affinity[0] = '\0';
|
||||
for (i = 0; i < ncore; i++) {
|
||||
if (CPU_ISSET(i, &cpuset) == 1) {
|
||||
sprintf(affinity, "%s %d", affinity, i);
|
||||
}
|
||||
}
|
||||
printf("hostname = %s, rank = %03d, PID: %4d, OMP tid = %d, TID = %d, CPU = %d, affinity =%s\n",
|
||||
hname, rank, getpgid(0), tid, pid, sched_getcpu(), affinity);
|
||||
if (rank == 0 && tid == 0 && wait == 1) {
|
||||
printf("Now press ENTER.\n");
|
||||
getchar();
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef MPI
|
||||
MPI_Barrier(MPI_COMM_WORLD);
|
||||
MPI_Finalize();
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
48
test/issues/1507+1519/result.txt
Normal file
48
test/issues/1507+1519/result.txt
Normal file
@ -0,0 +1,48 @@
|
||||
hostname = system5-cn0011, rank = 001, PID: 0, OMP tid = 1, TID = 107, CPU = 25, affinity = 25
|
||||
hostname = system5-cn0011, rank = 001, PID: 0, OMP tid = 0, TID = 53, CPU = 24, affinity = 24
|
||||
hostname = system5-cn0011, rank = 001, PID: 0, OMP tid = 20, TID = 73, CPU = 44, affinity = 44
|
||||
hostname = system5-cn0011, rank = 001, PID: 0, OMP tid = 4, TID = 101, CPU = 28, affinity = 28
|
||||
hostname = system5-cn0011, rank = 001, PID: 0, OMP tid = 8, TID = 94, CPU = 32, affinity = 32
|
||||
hostname = system5-cn0011, rank = 001, PID: 0, OMP tid = 16, TID = 80, CPU = 40, affinity = 40
|
||||
hostname = system5-cn0011, rank = 001, PID: 0, OMP tid = 22, TID = 70, CPU = 46, affinity = 46
|
||||
hostname = system5-cn0011, rank = 001, PID: 0, OMP tid = 10, TID = 91, CPU = 34, affinity = 34
|
||||
hostname = system5-cn0011, rank = 001, PID: 0, OMP tid = 9, TID = 92, CPU = 33, affinity = 33
|
||||
hostname = system5-cn0011, rank = 001, PID: 0, OMP tid = 5, TID = 99, CPU = 29, affinity = 29
|
||||
hostname = system5-cn0011, rank = 001, PID: 0, OMP tid = 12, TID = 87, CPU = 36, affinity = 36
|
||||
hostname = system5-cn0011, rank = 001, PID: 0, OMP tid = 18, TID = 77, CPU = 42, affinity = 42
|
||||
hostname = system5-cn0011, rank = 001, PID: 0, OMP tid = 2, TID = 105, CPU = 26, affinity = 26
|
||||
hostname = system5-cn0011, rank = 001, PID: 0, OMP tid = 7, TID = 96, CPU = 31, affinity = 31
|
||||
hostname = system5-cn0011, rank = 001, PID: 0, OMP tid = 14, TID = 84, CPU = 38, affinity = 38
|
||||
hostname = system5-cn0011, rank = 001, PID: 0, OMP tid = 11, TID = 89, CPU = 35, affinity = 35
|
||||
hostname = system5-cn0011, rank = 001, PID: 0, OMP tid = 3, TID = 103, CPU = 27, affinity = 27
|
||||
hostname = system5-cn0011, rank = 001, PID: 0, OMP tid = 6, TID = 98, CPU = 30, affinity = 30
|
||||
hostname = system5-cn0011, rank = 001, PID: 0, OMP tid = 13, TID = 86, CPU = 37, affinity = 37
|
||||
hostname = system5-cn0011, rank = 001, PID: 0, OMP tid = 17, TID = 79, CPU = 41, affinity = 41
|
||||
hostname = system5-cn0011, rank = 001, PID: 0, OMP tid = 23, TID = 68, CPU = 47, affinity = 47
|
||||
hostname = system5-cn0011, rank = 001, PID: 0, OMP tid = 19, TID = 75, CPU = 43, affinity = 43
|
||||
hostname = system5-cn0011, rank = 001, PID: 0, OMP tid = 15, TID = 82, CPU = 39, affinity = 39
|
||||
hostname = system5-cn0011, rank = 001, PID: 0, OMP tid = 21, TID = 71, CPU = 45, affinity = 45
|
||||
hostname = system5-cn0011, rank = 000, PID: 0, OMP tid = 4, TID = 112, CPU = 4, affinity = 4
|
||||
hostname = system5-cn0011, rank = 000, PID: 0, OMP tid = 17, TID = 83, CPU = 17, affinity = 17
|
||||
hostname = system5-cn0011, rank = 000, PID: 0, OMP tid = 13, TID = 93, CPU = 13, affinity = 13
|
||||
hostname = system5-cn0011, rank = 000, PID: 0, OMP tid = 12, TID = 95, CPU = 12, affinity = 12
|
||||
hostname = system5-cn0011, rank = 000, PID: 0, OMP tid = 18, TID = 81, CPU = 18, affinity = 18
|
||||
hostname = system5-cn0011, rank = 000, PID: 0, OMP tid = 8, TID = 104, CPU = 8, affinity = 8
|
||||
hostname = system5-cn0011, rank = 000, PID: 0, OMP tid = 11, TID = 97, CPU = 11, affinity = 11
|
||||
hostname = system5-cn0011, rank = 000, PID: 0, OMP tid = 14, TID = 90, CPU = 14, affinity = 14
|
||||
hostname = system5-cn0011, rank = 000, PID: 0, OMP tid = 5, TID = 111, CPU = 5, affinity = 5
|
||||
hostname = system5-cn0011, rank = 000, PID: 0, OMP tid = 1, TID = 115, CPU = 1, affinity = 1
|
||||
hostname = system5-cn0011, rank = 000, PID: 0, OMP tid = 19, TID = 78, CPU = 19, affinity = 19
|
||||
hostname = system5-cn0011, rank = 000, PID: 0, OMP tid = 16, TID = 85, CPU = 16, affinity = 16
|
||||
hostname = system5-cn0011, rank = 000, PID: 0, OMP tid = 15, TID = 88, CPU = 15, affinity = 15
|
||||
hostname = system5-cn0011, rank = 000, PID: 0, OMP tid = 6, TID = 108, CPU = 6, affinity = 6
|
||||
hostname = system5-cn0011, rank = 000, PID: 0, OMP tid = 20, TID = 76, CPU = 20, affinity = 20
|
||||
hostname = system5-cn0011, rank = 000, PID: 0, OMP tid = 10, TID = 100, CPU = 10, affinity = 10
|
||||
hostname = system5-cn0011, rank = 000, PID: 0, OMP tid = 21, TID = 74, CPU = 21, affinity = 21
|
||||
hostname = system5-cn0011, rank = 000, PID: 0, OMP tid = 0, TID = 52, CPU = 0, affinity = 0
|
||||
hostname = system5-cn0011, rank = 000, PID: 0, OMP tid = 22, TID = 72, CPU = 22, affinity = 22
|
||||
hostname = system5-cn0011, rank = 000, PID: 0, OMP tid = 3, TID = 113, CPU = 3, affinity = 3
|
||||
hostname = system5-cn0011, rank = 000, PID: 0, OMP tid = 7, TID = 106, CPU = 7, affinity = 7
|
||||
hostname = system5-cn0011, rank = 000, PID: 0, OMP tid = 2, TID = 114, CPU = 2, affinity = 2
|
||||
hostname = system5-cn0011, rank = 000, PID: 0, OMP tid = 9, TID = 102, CPU = 9, affinity = 9
|
||||
hostname = system5-cn0011, rank = 000, PID: 0, OMP tid = 23, TID = 69, CPU = 23, affinity = 23
|
||||
Reference in New Issue
Block a user