PowerPoint プレゼンテーション

• OSI7層の各層の1)名称 2)機能の簡単な説明 3)各階層に関連のあ
る機器、規格などを5つ以上書いて下さい。
• 導線、光ファイバ、無線上を bit 信号はどのように伝搬するか説明し
て下さい。
• CSMA/CD と CSMA/CA の機能、相違点を説明して下さい。
• イーサネット、IP、TCP/IP で使用される識別子を示し、送信者は相手
の識別子をどのようにして得ることができるか説明して下さい。
• TCP と UDP プログラムで、イーサネットフレームよりも大きなパケット
を扱う時に注意すべき点を記して下さい。
• 現在使用されているスーパーコンピュータが全て
分散メモリ型となっている理由を説明して下さい。
• 秘密鍵と公開鍵を用いて、通信内容が途中で不
正に書き換えられていないことを保証する手順を
説明して下さい。
• 分散メモリ型並列計算機で用いられるインターコ
ネクトトポロジを 2つ以上あげて、それぞれの特
徴を説明して下さい。
• MPI(Message Passing Interface)の集団通信につ
いて説明するとともに、集団通信の利用にあたっ
て注意すべき点を記して下さい。
• 例を参考にして、MPI関数を使ってプロセス 0が持
つデータを、 他の全プロセスにコピーする集団通
信の関数 my_bcastを作成して下さい。
プロセスの整数ベクトルの総和を計算する
my_reduce関数の例)
int my_reduce(int *a, int *b, int c)
{
int i, p, myid, procs;
int *t;
MPI_Status st;
MPI_Comm_rank(MPI_COMM_WORLD, &myid);
MPI_Comm_size(MPI_COMM_WORLD, &procs);
if (myid == 0){
t = (int *)malloc(c*sizeof(int));
if (t == NULL)
return -1;
MPI_Recv(t, c, MPI_INT, 1, 0, MPI_COMM_WORLD, &st);
for (i = 0; i < N; i++)
b[i] = a[i] + t[i];
for (p = 2; p < procs; p++){
MPI_Recv(t, c, MPI_INT, p, 0, MPI_COMM_WORLD, &st);
for (i = 0; i < N; i++)
b[i] += t[i];
}
} else{
MPI_Send(a, c, MPI_INT, 0, 0, MPI_COMM_WORLD);
}
return 0;
• my_bcast関数の定義は以下の通りとします。
•
int my_bcast(char *buf, int size);
• ただし、bufは、プロセス0ではコピー元のデータを格納
している場所へのポインタ、れ以外のプロセスではコ
ピーするデータを格納する場所へのポインタとし、size
は転送するバイト数とします。また、返り値は、成功し
た場合 0、失敗した場合 -1とします。 なお、アルゴリズ
ムが正しければ、細かい文法的な間違いは減点の対
象としません。
}
各 MPI関数の定義:
int MPI_Comm_rank(MPI_Comm comm, int *rank);
comm: コミュニケータ
rank: 呼び出したプロセスのランクを格納する変数へのポインタ
int MPI_Comm_size(MPI_Comm comm, int *size);
comm: コミュニケータ
size: コミュニケータ中のプロセス数を格納する変数へのポインタ
int MPI_Send(void *b, int c, MPI_Datatype d,
int dest, int t, MPI_Comm comm);
b: 送信データの開始アドレス
c: 送信データの要素数
d: 送信データのデータ型
(MPI_INT: 整数、MPI_CHAR: 文字列)
dest: 送信先プロセスのランク
t: タグ
comm: コミュニケータ
int MPI_Recv(void *b, int c, MPI_Datatype d, int src,
int t, MPI_Comm comm, MPI_Status *st);
b: 受信データを格納する場所の開始アドレス
c: 受信データの要素数
d: 受信データのデータ型
(MPI_INT: 整数、MPI_CHAR: 文字列)
dest: 受信元プロセスのランク
t: タグ
comm: コミュニケータ
st: 受信したメッセージの情報を格納する配列