More Related Content
PPTX
PDF
PPTX
Completely Fair Scheduler (CFS) PDF
PDF
Linuxのプロセススケジューラ(Reading the Linux process scheduler) PDF
SpectreとMeltdown:最近のCPUの深い話 PDF
PDF
本当にわかる Spectre と Meltdown What's hot
PDF
PDF
Wavelet matrix implementation PDF
Linux女子会 - お仕事メリハリ術♪(プロセススケジューラ編) PDF
PDF
PDF
PDF
PDF
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen PDF
PPT
PDF
Intro to SVE 富岳のA64FXを触ってみた PDF
汎用性と高速性を目指したペアリング暗号ライブラリ mcl KEY
PDF
Project Loom - 限定継続と軽量スレッド - PDF
PDF
Intel TSX 触ってみた 追加実験 (TTAS) PDF
PDF
Python で munin plugin を書いてみる PDF
[Basic 8] プロセスとスレッド / 入出力 / シェル PDF
Viewers also liked
PPTX
Should Japanese Education Be Vocational Training School? PPTX
PPTX
PPTX
PPTX
PPTX
Similar to Spmv9forpublic
PDF
PDF
第4回 配信講義 計算科学技術特論A (2021) PDF
PDF
PDF
El text.tokuron a(2019).katagiri190418 PDF
CMSI計算科学技術特論A (2015) 第2回 MPIの基礎 PDF
機械学習とこれを支える並列計算 : 並列計算の現状と産業応用について PDF
第11回 配信講義 計算科学技術特論B(2022) PDF
PEZY-SC2上における倍々精度Rgemmの実装と評価 PDF
CMSI計算科学技術特論B(5) アプリケーションの性能最適化の実例2 PDF
統計解析言語Rにおける大規模データ管理のためのboost.interprocessの活用 PDF
PDF
Oocon2020 presentation slide @kozukorio PDF
PPTX
PDF
Effective Modern C++ 勉強会#3 Item16 PDF
PDF
PDF
PDF
More from T2C_
PPTX
PPTX
PDF
Parallel Computation Foundation's assignment 2 PDF
Parallel Computation Foundation's assignment 1 PDF
PDF
PDF
PPTX
Spmv9forpublic
- 1.
- 2.
- 3.
実行環境
OS:Windows 7 Professional64-bit Service Pack 1
CPU:Intel(R) Core(TM) i7-2600 CPU
@ 3.40GHz (8 CPUs), ~3.7GHz
メモリ:8192MB RAM
実行環境:Cygwin、FX10(性能は後述)
3
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
コード
#include <stdio.h>
#include <stdlib.h>
#include<metis.h>
void main()
{
int nz = 6,i;
int col2[100] = {3,0,1,2,3,4};
int index2[100] = {0,1,3,4,6};
int val[100] = {1,2,3,4,5,6};
double objval2[100] ={0};
int part2[100] ={0};
idx_t *nvtxs, *ncon, *col, *index,*nparts, *objval, *part;
nvtxs = (int *) malloc(1000 * sizeof(int));
ncon = (int *) malloc(1000 * sizeof(int)) 確保すべき
col = (int *) malloc(1000 * sizeof(int)); 領域??
index = (int *) malloc(1000 * sizeof(int));
nparts = (int *) malloc(1000 * sizeof(int));
objval = (int *) malloc(1000 * sizeof(int));
part = (int *) malloc(1000 * sizeof(int));
*nvtxs = (int)nz; → M??
*ncon = (int)1;
*col = *col2;
*index = *index2;
*nparts = (int)3;
10
printf("HelloMetis!n");
METIS_PartGraphKway(nvtxs,ncon,col,index,NULL,NULL,NULL,nparts
,NULL,NULL,NULL,objval,part);
for(i=0;i<nz;i++)
{
printf("part[%d]=%dn",i,part[i]);
}
printf("objval= %d n",objval);
free(nvtxs);
free(ncon);
free(col);
free(index);
free(nparts);
free(objval);
free(part);
}
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
nd24k
• COOL
Matrixproperties
number of rows 72,000
number of columns 72,000
nonzeros 28,715,634
structure symmetric
20
- 21.
追加したコード
• #include <omp.h>
•double time1=0,time2=0;
• time1,2 = omp_get_wtime();
• printf("time = %lfnn",(time2-time1));
• $ gcc newread.c mmio.c -lm -lmetis -fopenmp
• 図は494_busでテストしたもの
21
- 22.
- 23.
- 24.
理論時間
• FLOPS 理論値=
( クロック ) × ( コア数 ) × 大体一致。
(コア・クロックあたりの浮動小数点演算回数)
=(3.40 * 10^9) * (4) * (8) = 110.8 * 10^9 FLOPS
=110.8GFLOPS
∴nz(= 28,715,634) / 110.8G ≒ 260000 * 10^-9
= 0.00026sec / nz1周の処理
∴readtime = 0.00026sec
sorttime = (nz * M)回 = nz1 * 72,000 = 18.72sec
metistime = (nz * objval?)回 = 取り忘れ
alltime = SUM(read,sort,metis) = ?
24
- 25.
比較
理論値 実際
Read 0.00026sec9.138236 sec
Sort 18.72sec 2479.721206 sec
Metis ? 20.328463 sec
all ? 2515.525911 sec
25
顕著なズレ(ハードを扱いきれていない?)
- 26.
リオーダリング?
• 色々試行錯誤したものの出来ず
• 多分認識が違う
•自分の認識ではordering[i][j] = kで
分割番号i、そこに入る順のj、kが通し番号
→Cで二次元配列(仮)を作ろうとすると
・ordering[分割数][nz/非ゼロ数]で
大き過ぎて作れない
・**ordering , *ordering でコンパイルは通るが
実行時即時に落とされる(原因わからず)
26
- 27.
- 28.
並列化(読み込み部)
for (i=0; i<nz;i++)
{
fscanf(f, "%d %d %lgn", &I[i], &J[i], &val[i]);
I[i]--;
J[i]--;
}
28
#pragma omp parallel for private(i)
for (i=0; i<nz; i++)
{
fscanf(f, "%d %d %lgn", &I[i], &J[i], &val[i]);
I[i]--;
J[i]--;
}
(結局ソートするので同じ所の情報が取り出せれば
順番はどうでも良い(?))
- 29.
- 30.
- 31.
- 32.
FX10上でのMETISの導入
• module loadMETIS をする
• $ fccpx ~~でコンパイル
(並列の場合は –Kopenmpも付加する)
• (ドキュメント閲覧時表示の遵守事項)
核兵器又は生物化学兵器及びこれらを
運搬するためのミサイル等の大量破壊兵器の
開発、設計、製造、保管及び使用等の目的に
利用しない ←すごい
Oakleaf-FX利用手引書(ログイン後表示)
32
- 33.
- 34.
- 35.
- 36.