N 体問題 長岡技術科学大学電気電子情報工学専攻出川智啓

Size: px
Start display at page:

Download "N 体問題 長岡技術科学大学電気電子情報工学専攻出川智啓"

Transcription

1 N 体問題 長岡技術科学大学電気電子情報工学専攻出川智啓

2 今回の内容 天体の運動方程式 天体運動の GPU 実装 最適化による性能変化 #pragma unroll 855

3 計算の種類 画像処理, 差分法 空間に固定された観測点を配置 観測点 ( 固定 ) 観測点上で物理量がどのように変化するかを追跡 Euler 型 多粒子の運動 観測点を配置せず, 観測点が粒子と共に移動 Lagrange 型 観測点 ( 粒子と共に移動 ) 856

4 N 体問題 万有引力によって運動する天体群のシミュレーション 天体を質点と考え, 衝突を無視 天体は自身以外の天体から受ける万有引力のみで運動 天体 i の加速度 a N b i m j j 1, j i g r r ji 3 ji r ji : 2 天体 j, i の距離 g : 重力加速度 m j : 天体の質量 N b : 天体の総数 857

5 時間微分の離散化 天体 i の位置 r と速度 v dri dt v i dvi a dt i 時間微分の離散化 テイラー展開を利用 r( t dr Δt d r Δt d r Δt) r( t) Δt 2 3 dt 2! dt 3! dt dr dt r( t Δt) Δt r( t) 1 Δt Δt 2! 2 d 2 dt r 2 Δt 3! 3 d 3 dt r 3 v 858

6 時間微分の離散化 離散時刻を上付き添字 n で表現 r( t) r n r( t Δt) r n 1 位置 r, 速度 v の時間発展 時刻 n での天体位置 r, 速度 v が既知 加速度 a n を求めることで時刻 n+1 の天体位置を予測 r n 1 i r n i v n i Δt v n 1 i v n i a n i Δt 859

7 プログラムの流れ プログラムは 2 重ループ 全ペア相互作用 (all pair interaction) 全ての天体が全ての天体のデータを利用 一度読み込んだデータの再利用が重要 計算量は天体個数の 2 乗に比例 for 全ての天体について { for 全ての天体について { 天体間の距離を計算 if( 同じ天体でなければ ){ 万有引力を計算加速度 a の値を更新 860

8 プログラムの流れ プログラムは 2 重ループ 全ペア相互作用 (all pair interaction) 全ての天体が全ての天体のデータを利用 一度読み込んだデータの再利用が重要 計算量は天体個数の 2 乗に比例 for 全ての天体について { for 全ての天体について { 天体間の距離を計算 if( 同じ天体でなければ ){ 万有引力を計算加速度 a の値を更新 861

9 プログラムの流れ プログラムは 2 重ループ 全ペア相互作用 (all pair interaction) 全ての天体が全ての天体のデータを利用 一度読み込んだデータの再利用が重要 計算量は天体個数の 2 乗に比例 for 全ての天体について { for 全ての天体について { 天体間の距離を計算 if( 同じ天体でなければ ){ 万有引力を計算加速度 a の値を更新 862

10 プログラムの流れ プログラムは 2 重ループ 全ペア相互作用 (all pair interaction) 全ての天体が全ての天体のデータを利用 一度読み込んだデータの再利用が重要 計算量は天体個数の 2 乗に比例 for 全ての天体について { for 全ての天体について { 天体間の距離を計算 if( 同じ天体でなければ ){ 万有引力を計算加速度 a の値を更新 863

11 プログラムの流れ プログラムは 2 重ループ 全ペア相互作用 (all pair interaction) 全ての天体が全ての天体のデータを利用 一度読み込んだデータの再利用が重要 計算量は天体個数の 2 乗に比例 for 全ての天体について { for 全ての天体について { 天体間の距離を計算 if( 同じ天体でなければ ){ 万有引力を計算加速度 a の値を更新 864

12 プログラムの流れ 万有引力は同一天体には影響しない 同一天体間の万有引力の計算は不可能 ( ゼロ除算 ) ifで区別 if 文を排除し, ゼロ除算を回避するため, 微小値を付加 : 軟化因子 同一天体なら分子が 0 となるので計算結果に影響しない a n i N b j 1, j i m j g r ji 2 r ji 2 3/ 2 865

13 CPU プログラム // 重力加速度が 1 になるように規格化 #include<stdio.h> #include<stdlib.h> #include<math.h> #define N (4096) #define dt #define Soften (1e 6) // プロトタイプ宣言 void initial( ); void kernel( ); void integrate( ); int main(void){ float *x,*y,*z,*m; float *vx,*vy,*vz; float *ax,*ay,*az; x = (float *)malloc(n*sizeof(float)); y = (float *)malloc(n*sizeof(float)); z = (float *)malloc(n*sizeof(float)); m = (float *)malloc(n*sizeof(float)); vx = (float *)malloc(n*sizeof(float)); vy = (float *)malloc(n*sizeof(float)); vz = (float *)malloc(n*sizeof(float)); ax = (float *)malloc(n*sizeof(float)); ay = (float *)malloc(n*sizeof(float)); az = (float *)malloc(n*sizeof(float)); // 初期値設定 initial(x,y,z,vx,vy,vz,m); //for(){ // 本来なら必要な回数だけ繰り返す // 加速度の計算 kernel(x,y,z,vx,vy,vz,ax,ay,az,m); // 時間積分 integrate(x,y,z,vx,vy,vz,ax,ay,az); // return 0; nbody.c 866

14 CPU プログラム // 初期値の設定 void initial(float *x,float *y,float *z,float *vx,float *vy,float *vz,float *m){ int i; // 乱数で配置を決定 //x,y 座標,x,y 方向速度が 1~1 の範囲に収まるように決定 srand(n); for(i=0;i<n;i++){ x[i] = (float)rand()/rand_max* ; y[i] = (float)rand()/rand_max* ; z[i] = 0.0f; m[i] = 1.0f; vx[i] = (float)rand()/rand_max* ; vy[i] = (float)rand()/rand_max* ; vz[i] = 0.0f; nbody.c 867

15 CPU プログラム // 時間積分 void integrate(float *x, float *y, float *z, float *vx, float *vy, float *vz, float *ax, float *ay, float *az){ int i; //Euler 法で位置と速度を積分 // 必ず位置の積分を先に実行 for(i=0;i<n;i++){ x[i] = x[i] + dt*vx[i]; y[i] = y[i] + dt*vy[i]; z[i] = z[i] + dt*vz[i]; vx[i] = vx[i] + dt*ax[i]; vy[i] = vy[i] + dt*ay[i]; vz[i] = vz[i] + dt*az[i]; nbody.c 868

16 CPU プログラム // 加速度の計算 void kernel(float *x, float *y, float *z, float *vx, float *vy, float *vz, float *ax, float *ay, float *az, float *m){ int i,j; float rx,ry,rz; float dist2, dist6, invdist3,s; rz=z[j] z[i]; //2 天体間の距離を計算 dist2 = rx*rx + ry*ry + rz*rz + Soften;// 軟化パラメータ // m/r^3 の計算 dist6 = dist2*dist2*dist2; invdist3 = 1.0/sqrt(dist6); s = m[j]*invdist3; for(i=0;i<n;i++){ ax[i] = 0.0f; ay[i] = 0.0f; az[i] = 0.0f; for(i=0;i<n;i++){ for(j=0;j<n;j++){ //if(i==j)continue; // 天体 j による加速度を加算 ax[i] = ax[i] + rx*s; ay[i] = ay[i] + ry*s; az[i] = az[i] + rz*s; rx=x[j] x[i]; ry=y[j] y[i]; nbody.c 869

17 GPU プログラム (1 スレッド版 ) #include<stdio.h> #include<stdlib.h> #include<math.h> #define N (64*64) #define dt #define Soften (1e 6) #include "kernel0.cu"// カーネルを切替 int main(void){ //GPU のメモリ上に確保 float *x,*y,*z,*m; float *vx,*vy,*vz; float *ax,*ay,*az; //CPU のメモリ上に確保初期設定用 float *host_x,*host_y,*host_z,*host_m; float *host_vx,*host_vy,*host_vz; cudamalloc((void **)&x, (N*sizeof(float))); cudamalloc((void **)&y, (N*sizeof(float))); cudamalloc((void **)&z, (N*sizeof(float))); cudamalloc((void **)&m, (N*sizeof(float))); cudamalloc((void **)&vx, (N*sizeof(float))); cudamalloc((void **)&vy, (N*sizeof(float))); cudamalloc((void **)&vz, (N*sizeof(float))); cudamalloc((void **)&ax, (N*sizeof(float))); cudamalloc((void **)&ay, (N*sizeof(float))); cudamalloc((void **)&az, (N*sizeof(float))); host_x = (float *)malloc(n*sizeof(float)); // 以下,host_y 等も確保 // 初期設定は CPU と同じ initial(host_x,host_y,host_z, host_vx,host_vy,host_vz,host_m); cudamemcpy(x, host_x, N*sizeof(float), cudamemcpyhosttodevice); // 以下,host_y 等も GPU へコピー nbody.cu 870

18 GPU プログラム (1 スレッド版 ) //for(){ // 本来は必要な回数だけ繰り返す kernel<<<nb,nt>>> (x,y,z,vx,vy,vz,ax,ay,az,m); integrate<<<nb,nt>>> (x,y,z,vx,vy,vz,ax,ay,az); // 必要な結果を CPU へコピー // cudafree(vy); cudafree(vz); cudafree(ax); cudafree(ay); cudafree(az); return 0; free(host_x); free(host_y); free(host_z); free(host_m); free(host_vx); free(host_vy); free(host_vz); cudafree(x); cudafree(y); cudafree(z); cudafree(m); cudafree(vx); nbody.cu 871

19 GPU プログラム (1 スレッド版 ) #define NT 1 #define NB 1 // 加速度の計算 global void kernel(float *x,float *y, float *z,float *vx, float *vy, float *vz,float *ax, float *ay, float *az,float *m){ int i,j; float rx,ry,rz; float dist2, dist6, invdist3,s; for(i=0;i<n;i++){ ax[i] = 0.0f; ay[i] = 0.0f; az[i] = 0.0f; rx=x[j] x[i]; ry=y[j] y[i]; rz=z[j] z[i]; //2 天体間の距離を計算 dist2 = rx*rx + ry*ry + rz*rz; // m/r^3 の計算 dist6 = dist2*dist2*dist2; invdist3 = 1.0/sqrt(dist6); s = m[j]*invdist3; // 天体 j による加速度を加算 ax[i] = ax[i] + rx*s; ay[i] = ay[i] + ry*s; az[i] = az[i] + rz*s; for(i=0;i<n;i++){ for(j=0;j<n;j++){ if(i==j)continue; kernel0.cu 872

20 GPU プログラム (1 スレッド版 ) // 時間積分 global void integrate(float *x, float *y, float *z, float *vx, float *vy, float *vz, float *ax, float *ay, float *az){ int i; for(i=0;i<n;i++){ x[i] = x[i] + dt*vx[i]; y[i] = y[i] + dt*vy[i]; z[i] = z[i] + dt*vz[i]; vx[i] = vx[i] + dt*ax[i]; vy[i] = vy[i] + dt*ay[i]; vz[i] = vz[i] + dt*az[i]; kernel0.cu 873

21 実行時間 天体の個数 N = 4096 カーネル 実行時間 [ms] 1 スレッド実行

22 GPU プログラム (1 スレッド版,if 消去 ) #define NT 1 #define NB 1 // 加速度の計算 global void kernel(float *x,float *y, float *z,float *vx, float *vy, float *vz,float *ax, float *ay, float *az,float *m){ int i,j; float rx,ry,rz; float dist2, dist6, invdist3,s; for(i=0;i<n;i++){ ax[i] = 0.0f; ay[i] = 0.0f; az[i] = 0.0f; rx=x[j] x[i]; ry=y[j] y[i]; rz=z[j] z[i]; //2 天体間の距離を計算 dist2 = rx*rx + ry*ry + rz*rz +Soften; // m/r^3 の計算 dist6 = dist2*dist2*dist2; invdist3 = 1.0/sqrt(dist6); s = m[j]*invdist3; // 天体 j による加速度を加算 ax[i] = ax[i] + rx*s; ay[i] = ay[i] + ry*s; az[i] = az[i] + rz*s; for(i=0;i<n;i++){ for(j=0;j<n;j++){ kernel1.cu 875

23 実行時間 天体の個数 N = 4096 カーネル 実行時間 [ms] 1 スレッド実行 スレッド実行 (if の消去 )

24 1 スレッドが天体一つの加速度を計算 天体のデータを1 次元配列で保持 加速度を求めたい天体 iのforループ 相互作用の計算のために参照される天体 j のループ 加速度を求めたい天体 x[i] 相互作用の計算のために参照される天体 x[j] 877

25 GPU による並列処理の方針 ベクトル和と本質的には同じ for(i=0;i<n;i++){ c[i]=a[i]+b[i]; a[i] b[i] c[i] 878

26 GPU による並列処理の方針 1 スレッドが一つの配列添字を計算 i=blockidx.x*blockdim.x+threadidx.x; c[i]=a[i]+b[i]; a[i] b[i] c[i] 879

27 GPU による並列処理の方針 加速度の計算 for(i=0;i<n;i++){ for(j=0;j<n;j++){ 加速度を積算 加速度を求めたい x[i] 天体 相互作用の計算のために参照される天体 x[j] j のループ 880

28 GPU による並列処理の方針 加速度の計算 for(i=0;i<n;i++){ for(j=0;j<n;j++){ 加速度を積算 加速度を求めたい x[i] 天体 相互作用の計算のために参照される天体 x[j] j のループ 881

29 GPU による並列処理の方針 加速度の計算 for(i=0;i<n;i++){ for(j=0;j<n;j++){ 加速度を積算 加速度を求めたい x[i] 天体 相互作用の計算のために参照される天体 x[j] j のループ 882

30 GPU による並列処理の方針 加速度の計算 for(i=0;i<n;i++){ for(j=0;j<n;j++){ 加速度を積算 加速度を求めたい x[i] 天体 相互作用の計算のために参照される天体 x[j] j のループ 883

31 GPU による並列処理の方針 加速度の計算 for(i=0;i<n;i++){ for(j=0;j<n;j++){ 加速度を積算 加速度を求めたい x[i] 天体 相互作用の計算のために参照される天体 x[j] j のループ 884

32 GPU による並列処理の方針 加速度の計算 for(i=0;i<n;i++){ for(j=0;j<n;j++){ 加速度を積算 加速度を求めたい x[i] 天体 相互作用の計算のために参照される天体 x[j] j のループ 885

33 GPU による並列処理の方針 ベクトル和と同様に 1 スレッドが一つの天体を計算 i=blockidx.x*blockdim.x+threadidx.x; for(j=0;j<n;j++){ 加速度を積算 加速度を求めたい x[i] 天体 相互作用の計算のために参照される天体 x[j] 886

34 GPU による並列処理の方針 ベクトル和と同様に 1 スレッドが一つの天体を計算 i=blockidx.x*blockdim.x+threadidx.x; for(j=0;j<n;j++){ 加速度を積算 加速度を求めたい x[i] 天体 相互作用の計算のために参照される天体 x[j] 887

35 GPU による並列処理の方針 ベクトル和と同様に 1 スレッドが一つの天体を計算 i=blockidx.x*blockdim.x+threadidx.x; for(j=0;j<n;j++){ 加速度を積算 加速度を求めたい x[i] 天体 相互作用の計算のために参照される天体 x[j] 888

36 GPU による並列処理の方針 ベクトル和と同様に 1 スレッドが一つの天体を計算 i=blockidx.x*blockdim.x+threadidx.x; for(j=0;j<n;j++){ 加速度を積算 加速度を求めたい x[i] 天体 相互作用の計算のために参照される天体 x[j] 889

37 GPU による並列処理の方針 ベクトル和と同様に 1 スレッドが一つの天体を計算 i=blockidx.x*blockdim.x+threadidx.x; for(j=0;j<n;j++){ 加速度を積算 加速度を求めたい x[i] 天体 相互作用の計算のために参照される天体 x[j] 890

38 GPU による並列処理の方針 ベクトル和と同様に 1 スレッドが一つの天体を計算 i=blockidx.x*blockdim.x+threadidx.x; for(j=0;j<n;j++){ 加速度を積算 加速度を求めたい x[i] 天体 相互作用の計算のために参照される天体 x[j] 891

39 GPU プログラム (1 スレッドが天体一つを計算 ) #define NT 256 #define NB (N/NT) // 加速度の計算 global void kernel(float *x,float *y, float *z,float *vx, float *vy, float *vz,float *ax, float *ay, float *az,float *m){ int i,j; float rx,ry,rz; float dist2, dist6, invdist3,s; i = blockdim.x*blockidx.x+threadidx.x; for(j=0;j<n;j++){ rx=x[j] x[i]; ry=y[j] y[i]; rz=z[j] z[i]; //2 天体間の距離を計算 dist2 = rx*rx + ry*ry + rz*rz + Soften;// 軟化パラメータ // m/r^3 の計算 dist6 = dist2*dist2*dist2; invdist3 = 1.0/sqrt(dist6); s = m[j]*invdist3; // 天体 j による加速度を加算 ax[i] = ax[i] + rx*s; ay[i] = ay[i] + ry*s; az[i] = az[i] + rz*s; kernel2.cu 892

40 GPU プログラム (1 スレッドが天体一つを計算 ) // 時間積分 global void integrate(float *x, float *y, float *z, float *vx, float *vy, float *vz, float *ax, float *ay, float *az){ int i=blockidx.x*blockdim.x + threadidx.x; x[i] = x[i] + dt*vx[i]; y[i] = y[i] + dt*vy[i]; z[i] = z[i] + dt*vz[i]; vx[i] = vx[i] + dt*ax[i]; vy[i] = vy[i] + dt*ay[i]; vz[i] = vz[i] + dt*az[i]; kernel2.cu 893

41 実行時間 天体の個数 N = 4096 スレッド数 NT = 256 カーネル 実行時間 [ms] 1 スレッド実行 スレッド実行 (if の消去 ) スレッド 1 天体

42 GPU プログラム ( レジスタ利用 ) #define NT 256 #define NB (N/NT) // 加速度の計算 global void kernel(float *x,float *y, float *z,float *vx, float *vy, float *vz,float *ax, float *ay, float *az,float *m){ int i,j; float rx,ry,rz; float dist2, dist6, invdist3,s; // 加速度のデータをレジスタに置く float r_ax, r_ay, r_az; //2 天体間の距離を計算 dist2 = rx*rx + ry*ry + rz*rz + Soften;// 軟化パラメータ // m/r^3 の計算 dist6 = dist2*dist2*dist2; invdist3 = 1.0/sqrt(dist6); s = m[j]*invdist3; // 天体 j による加速度を加算 r_ax = r_ax + rx*s; r_ay = r_ay + ry*s; r_az = r_az + rz*s; i = blockdim.x*blockidx.x+threadidx.x; r_ax = r_ay = r_az = 0.0f; for(j=0;j<n;j++){ rx=x[j] x[i]; ry=y[j] y[i]; rz=z[j] z[i]; ax[i] = r_ax; ay[i] = r_ay; az[i] = r_az; kernel3.cu 895

43 実行時間 天体の個数 N = 4096 スレッド数 NT = 256 カーネル 実行時間 [ms] 1スレッド実行 スレッド実行 (ifの消去) スレッド1 天体 7.63 レジスタ利用

44 GPU プログラム ( 共有メモリによる再利用 ) blockidx.x=0 blockidx.x=1 threadidx.x= i= x[i] x[0] x[1] x[2] x[3] x[0] x[1] x[2] x[3] 共有メモリ 0+threadIdx.x 0+threadIdx.x j= x[j] 897

45 GPU プログラム ( 共有メモリによる再利用 ) blockidx.x=0 blockidx.x=1 threadidx.x= i=0~3 の天体と j=0~3 の天体で加速度を計算 i= x[i] i=4~7 の天体と j=0~3 の天体で加速度を計算 x[0] x[1] x[2] x[3] x[0] x[1] x[2] x[3] 共有メモリ j= x[j] 898

46 GPU プログラム ( 共有メモリによる再利用 ) blockidx.x=0 blockidx.x=1 threadidx.x= i=0~3 の天体と j=0~3 の天体で加速度を計算 i= x[i] i=4~7 の天体と j=0~3 の天体で加速度を計算 x[0] x[1] x[2] x[3] x[0] x[1] x[2] x[3] 共有メモリ j= x[j] 899

47 GPU プログラム ( 共有メモリによる再利用 ) blockidx.x=0 blockidx.x=1 threadidx.x= i=0~3 の天体と j=0~3 の天体で加速度を計算 i= x[i] i=4~7 の天体と j=0~3 の天体で加速度を計算 x[0] x[1] x[2] x[3] x[0] x[1] x[2] x[3] 共有メモリ j= x[j] 900

48 GPU プログラム ( 共有メモリによる再利用 ) blockidx.x=0 blockidx.x=1 threadidx.x= i=0~3 の天体と j=0~3 の天体で加速度を計算 i= x[i] i=4~7 の天体と j=0~3 の天体で加速度を計算 x[0] x[1] x[2] x[3] x[0] x[1] x[2] x[3] 共有メモリ j= x[j] 901

49 GPU プログラム ( 共有メモリによる再利用 ) blockidx.x=0 blockidx.x=1 threadidx.x= i= x[i] x[4] x[5] x[6] x[7] x[4] x[5] x[6] x[7] 共有メモリ 4(=NT)+threadIdx.x 4(=NT)+threadIdx.x j= x[j] 902

50 GPU プログラム ( 共有メモリによる再利用 ) blockidx.x=0 blockidx.x=1 threadidx.x= i=0~3 の天体と j=4~7 の天体で加速度を計算 i= x[i] i=4~7 の天体と j=4~7 の天体で加速度を計算 x[4] x[5] x[6] x[7] x[4] x[5] x[6] x[7] 共有メモリ j= x[j] 903

51 GPU プログラム ( 共有メモリによる再利用 ) blockidx.x=0 blockidx.x=1 threadidx.x= i=0~3 の天体と j=4~7 の天体で加速度を計算 i= x[i] i=4~7 の天体と j=4~7 の天体で加速度を計算 x[4] x[5] x[6] x[7] x[4] x[5] x[6] x[7] 共有メモリ j= x[j] 904

52 GPU プログラム ( 共有メモリによる再利用 ) blockidx.x=0 blockidx.x=1 threadidx.x= i=0~3 の天体と j=4~7 の天体で加速度を計算 i= x[i] i=4~7 の天体と j=4~7 の天体で加速度を計算 x[4] x[5] x[6] x[7] x[4] x[5] x[6] x[7] 共有メモリ j= x[j] 905

53 GPU プログラム ( 共有メモリによる再利用 ) blockidx.x=0 blockidx.x=1 threadidx.x= i=0~3 の天体と j=4~7 の天体で加速度を計算 i= x[i] i=4~7 の天体と j=4~7 の天体で加速度を計算 x[4] x[5] x[6] x[7] x[4] x[5] x[6] x[7] 共有メモリ j= x[j] 906

54 GPU プログラム ( 共有メモリによる再利用 ) #define NT 256 #define NB (N/NT) // 加速度の計算 global void kernel( ){ int i,j; float rx,ry,rz; float dist2, dist6, invdist3,s; // 加速度と座標のデータをレジスタに置く float r_ax,r_ay,r_az,r_x,r_y,r_z; shared float s_x[nt],s_y[nt],s_z[nt],s_m[nt]; i = blockdim.x*blockidx.x+threadidx.x; r_ax = r_ay = r_az = 0.0f; r_x = x[i]; r_y = y[i]; r_z = z[i]; for(j=0;j<n;j+=nt){ s_x[threadidx.x] = x[j+threadidx.x]; s_y[threadidx.x] = y[j+threadidx.x]; s_z[threadidx.x] = z[j+threadidx.x]; s_m[threadidx.x] = m[j+threadidx.x]; syncthreads(); for(js = 0;js<NT;js++){ rx=s_x[js] r_x; ry=s_y[js] r_y; rz=s_z[js] r_z; //2 天体間の距離を計算 dist2 = rx*rx + ry*ry + rz*rz + Soften;// 軟化パラメータ // m/r^3 の計算 dist6 = dist2*dist2*dist2; invdist3 = 1.0/sqrt(dist6); s = s_m[js]*invdist3; // 天体 jによる加速度を加算 r_ax = r_ax + rx*s; r_ay = r_ay + ry*s; r_az = r_az + rz*s; ax[i] = r_ax; ay[i] = r_ay; az[i] = r_az; kernel4.cu 907

55 実行時間 天体の個数 N = 4096 スレッド数 NT = 256 カーネル 実行時間 [ms] 1スレッド実行 スレッド実行 (ifの消去) スレッド1 天体 7.63 レジスタ利用 4.49 共有メモリ利用

56 GPU プログラム ( ループアンロール ) #define NT 256 #define NB (N/NT) // 加速度の計算 global void kernel( ){ int i,j; float rx,ry,rz; float dist2, dist6, invdist3,s; // 加速度と座標のデータをレジスタに置く float r_ax,r_ay,r_az,r_x,r_y,r_z; shared float s_x[nt],s_y[nt],s_z[nt],s_m[nt]; i = blockdim.x*blockidx.x+threadidx.x; r_ax = r_ay = r_az = 0.0f; r_x = x[i]; r_y = y[i]; r_z = z[i]; for(j=0;j<n;j+=nt){ s_x[threadidx.x] = x[j+threadidx.x]; s_y[threadidx.x] = y[j+threadidx.x]; s_z[threadidx.x] = z[j+threadidx.x]; s_m[threadidx.x] = m[j+threadidx.x]; syncthreads(); #pragma unroll for(js = 0;js<NT;js++){ rx=s_x[js] r_x; ry=s_y[js] r_y; rz=s_z[js] r_z; //2 天体間の距離を計算 dist2 = rx*rx + ry*ry + rz*rz + Soften;// 軟化パラメータ // m/r^3 の計算 dist6 = dist2*dist2*dist2; invdist3 = 1.0/sqrt(dist6); s = s_m[js]*invdist3; // 天体 jによる加速度を加算 r_ax = r_ax + rx*s; r_ay = r_ay + ry*s; r_az = r_az + rz*s; ax[i] = r_ax; ay[i] = r_ay; az[i] = r_az; kernel5.cu 909

57 実行時間 天体の個数 N = 4096 スレッド数 NT = 256 カーネル 実行時間 [ms] 1スレッド実行 スレッド実行 (ifの消去) スレッド1 天体 7.63 レジスタ利用 4.49 共有メモリ利用 4.27 共有メモリ利用 + ループアンロール

58 実行時間 天体の個数 N = スレッド数 NT = 256 カーネル 実行時間 [ms] 1スレッド1 天体 916 レジスタ利用 638 共有メモリ利用 646 共有メモリ利用 + ループアンロール 499 共有メモリを単純に利用しただけでは遅くなる 共有メモリを利用することは高速化に有効 共有メモリを利用するために追加される処理 が遅くなる要因 911

アクセラレータのデモと プログラミング手法

アクセラレータのデモと プログラミング手法 アクセラレータのデモと プログラミング手法 会津大学中里直人 アクセラレータボードを使った高速化スクール 2009/12/07 アクセラレータとは (1) ホスト計算機を補佐して特定の計算を高速化する計算機デバイス ホスト (CPU) で動作するプログラムを補佐 アクセラレータの例 Cell/PowerXCell8iブレード ボード : 計算 GPU ボード (NVIDIA, AMD, S3) :

More information

Microsoft PowerPoint - 先端GPGPUシミュレーション工学特論(web).pptx

Microsoft PowerPoint - 先端GPGPUシミュレーション工学特論(web).pptx 偏微分方程式の差分計算 拡散方程式 ) 長岡技術科学大学電気電子情報工学専攻出川智啓 今日の内容 シミュレーションの歴史と進歩 差分法 1 階微分 階微分に対する差分法 1 次関数の差分 次元拡散方程式 付録 共有メモリの典型的な使い方 49 先端 GPGPUシミュレーション工学特論 数値計算 計算機を利用して数学 物理学的問題の解を計算 微積分を計算機で扱える形に変換 処理自体はあまり複雑ではない

More information

Microsoft PowerPoint - 先端GPGPUシミュレーション工学特論(web).pptx

Microsoft PowerPoint - 先端GPGPUシミュレーション工学特論(web).pptx 複数 GPU の利用 長岡技術科学大学電気電子情報工学専攻出川智啓 今回の内容 並列アーキテクチャと並列処理の分類 OpenMP 複数 GPU の利用 GPU Direct によるデータ通信 939 複数の GPU を利用する目的 Grouse の 1 ノードには 4 台の GPU を搭載 Tesla M2050 1T FLOPS/ 台 3 GB/ 台 4 台全てを使う事で期待できる性能 GPU を

More information

数値計算で学ぶ物理学 4 放物運動と惑星運動 地上のように下向きに重力がはたらいているような場においては 物体を投げると放物運動をする 一方 中心星のまわりの重力場中では 惑星は 円 だ円 放物線または双曲線を描きながら運動する ここでは 放物運動と惑星運動を 運動方程式を導出したうえで 数値シミュ

数値計算で学ぶ物理学 4 放物運動と惑星運動 地上のように下向きに重力がはたらいているような場においては 物体を投げると放物運動をする 一方 中心星のまわりの重力場中では 惑星は 円 だ円 放物線または双曲線を描きながら運動する ここでは 放物運動と惑星運動を 運動方程式を導出したうえで 数値シミュ 数値計算で学ぶ物理学 4 放物運動と惑星運動 地上のように下向きに重力がはたらいているような場においては 物体を投げると放物運動をする 一方 中心星のまわりの重力場中では 惑星は 円 だ円 放物線または双曲線を描きながら運動する ここでは 放物運動と惑星運動を 運動方程式を導出したうえで 数値シミュレーションによって計算してみる 4.1 放物運動一様な重力場における放物運動を考える 一般に質量の物体に作用する力をとすると運動方程式は

More information

Slide 1

Slide 1 CUDA プログラミングの基本 パート II - カーネル CUDA の基本の概要 パート I CUDAのソフトウェアスタックとコンパイル GPUのメモリ管理 パート II カーネルの起動 GPUコードの具体像 注 : 取り上げているのは基本事項のみです そのほか多数の API 関数についてはプログラミングガイドを ご覧ください GPU 上でのコードの実行 カーネルは C 関数 + 多少の制約 ホストメモリはアクセスできない戻り値型は

More information

Microsoft PowerPoint - GPGPU実践基礎工学(web).pptx

Microsoft PowerPoint - GPGPU実践基礎工学(web).pptx GPU のメモリ階層 長岡技術科学大学電気電子情報工学専攻出川智啓 今回の内容 GPU のメモリ階層 グローバルメモリ 共有メモリ モザイク処理への適用 コンスタントメモリ 空間フィルタへの適用 577 GPU の主要部品 基盤 GPU( チップ )+ 冷却部品 画面出力端子 電源入力端子 メモリ 特性の把握が重要 電源入力端子 画面出力端子 メモリ チップ PCI Ex 端子 http://www.geforce.com/whats

More information

Slide 1

Slide 1 CUDA プログラミングの基本 パート I - ソフトウェアスタックとメモリ管理 CUDA の基本の概要 パート I CUDAのソフトウェアスタックとコンパイル GPUのメモリ管理 パートII カーネルの起動 GPUコードの具体項目 注 : 取り上げているのは基本事項のみです そのほか多数の API 関数についてはプログラミングガイドを ご覧ください CUDA インストレーション CUDA インストレーションの構成

More information

微分方程式 モデリングとシミュレーション

微分方程式 モデリングとシミュレーション 1 微分方程式モデリングとシミュレーション 2018 年度 2 質点の運動のモデル化 粒子と粒子に働く力 粒子の運動 粒子の位置の時間変化 粒子の位置の変化の割合 速度 速度の変化の割合 加速度 力と加速度の結び付け Newtonの運動方程式 : 微分方程式 解は 時間の関数としての位置 3 Newton の運動方程式 質点の運動は Newton の運動方程式で記述される 加速度は力に比例する 2

More information

CUDA を用いた画像処理 画像処理を CUDA で並列化 基本的な並列化の考え方 目標 : 妥当な Naïve コードが書ける 最適化の初歩がわかる ブロックサイズ メモリアクセスパターン

CUDA を用いた画像処理 画像処理を CUDA で並列化 基本的な並列化の考え方 目標 : 妥当な Naïve コードが書ける 最適化の初歩がわかる ブロックサイズ メモリアクセスパターン CUDA 画像処理入門 エヌビディアジャパン CUDA エンジニア森野慎也 GTC Japan 2014 CUDA を用いた画像処理 画像処理を CUDA で並列化 基本的な並列化の考え方 目標 : 妥当な Naïve コードが書ける 最適化の初歩がわかる ブロックサイズ メモリアクセスパターン RGB Y( 輝度 ) 変換 カラー画像から グレイスケールへの変換 Y = 0.299 R + 0.587

More information

今後の予定 6/29 パターン形成第 11 回 7/6 データ解析第 12 回 7/13 群れ行動 ( 久保先生 ) 第 13 回 7/17 ( 金 ) 休講 7/20 まとめ第 14 回 7/27 休講?

今後の予定 6/29 パターン形成第 11 回 7/6 データ解析第 12 回 7/13 群れ行動 ( 久保先生 ) 第 13 回 7/17 ( 金 ) 休講 7/20 まとめ第 14 回 7/27 休講? 今後の予定 6/29 パターン形成第 11 回 7/6 データ解析第 12 回 7/13 群れ行動 ( 久保先生 ) 第 13 回 7/17 ( 金 ) 休講 7/20 まとめ第 14 回 7/27 休講? 数理生物学演習 第 11 回パターン形成 本日の目標 2 次元配列 分子の拡散 反応拡散モデル チューリングパタン 拡散方程式 拡散方程式 u t = D 2 u 拡散が生じる分子などの挙動を記述する.

More information

3次多項式パラメタ推定計算の CUDAを用いた実装 (CUDAプログラミングの練習として) Implementation of the Estimation of the parameters of 3rd-order-Polynomial with CUDA

3次多項式パラメタ推定計算の CUDAを用いた実装 (CUDAプログラミングの練習として)  Implementation of the Estimation of the parameters of 3rd-order-Polynomial with CUDA 3 次多項式パラメタ推定計算の CUDA を用いた実装 (CUDA プログラミングの練習として ) Estimating the Parameters of 3rd-order-Polynomial with CUDA ISS 09/11/12 問題の選択 目的 CUDA プログラミングを経験 ( 試行錯誤と習得 ) 実際に CPU のみの場合と比べて高速化されることを体験 問題 ( インプリメントする内容

More information

偏微分方程式の差分計算 長岡技術科学大学電気電子情報工学専攻出川智啓

偏微分方程式の差分計算 長岡技術科学大学電気電子情報工学専攻出川智啓 偏微分方程式の差分計算 長岡技術科学大学電気電子情報工学専攻出川智啓 今回の内容 差分法 階微分 階微分に対する差分法 次元拡散方程式 guplot による結果の表示 分岐の書き方による実行時間の変化 高速化に利用できるいくつかのテクニック 7 前回授業 ビットマップを使った画像処理 配列の 要素が物理的な配置に対応 配列の 要素に物理的なデータが定義 B G R 7 数値計算 ( 差分法 ) 計算機を利用して数学

More information

AHPを用いた大相撲の新しい番付編成

AHPを用いた大相撲の新しい番付編成 5304050 2008/2/15 1 2008/2/15 2 42 2008/2/15 3 2008/2/15 4 195 2008/2/15 5 2008/2/15 6 i j ij >1 ij ij1/>1 i j i 1 ji 1/ j ij 2008/2/15 7 1 =2.01/=0.5 =1.51/=0.67 2008/2/15 8 1 2008/2/15 9 () u ) i i i

More information

熊本大学学術リポジトリ Kumamoto University Repositor Title GPGPU による高速演算について Author(s) 榎本, 昌一 Citation Issue date Type URL Presentation

熊本大学学術リポジトリ Kumamoto University Repositor Title GPGPU による高速演算について Author(s) 榎本, 昌一 Citation Issue date Type URL Presentation 熊本大学学術リポジトリ Kumamoto University Repositor Title GPGPU による高速演算について Author(s) 榎本, 昌一 Citation Issue date 2011-03-17 Type URL Presentation http://hdl.handle.net/2298/23539 Right GPGPU による高速演算について 榎本昌一 東京大学大学院工学系研究科システム創成学専攻

More information

スライド 1

スライド 1 ATI Stream SDK による 天文 物理計算の高速化 会津大学中里直人 計算事例 : 重力 N 体計算 No.2 プログラム :N 体の重力計算 (1) No.3 既存のアルゴリズムやアプリケーションを CAL で実装するには 前提として 並列計算可能な問題でなくては 利用する意味がない GPU のアーキテクチャにあわせて アルゴリズムを変更する必要あり GPU のメモリに合わせた 効率のよいデータ構造を考える必要あり

More information

スライド 1

スライド 1 数値解析 平成 30 年度前期第 10 週 [6 月 12 日 ] 静岡大学工学研究科機械工学専攻ロボット 計測情報分野創造科学技術大学院情報科学専攻 三浦憲二郎 講義アウトライン [6 月 12 日 ] 連立 1 次方程式の直接解法 ガウス消去法 ( 復習 ) 部分ピボット選択付きガウス消去法 連立 1 次方程式 連立 1 次方程式の重要性 非線形の問題は基本的には解けない. 非線形問題を線形化して解く.

More information

enshu5_6.key

enshu5_6.key 情報知能工学演習V (前半第6週) 政田洋平 システム情報学研究科計算科学専攻 TA : 菅 新 菅沼智史 水曜 新行紗弓 馬淵隼 木曜 演習 V( 前半 ) の内容 第 1 週 : 高性能計算 (High Performance Computing = HPC) 向けプログラミングの基礎 第 2 週 : シミュレーションの基礎 第 3 週 : 波の移流方程式のシミュレーション 第 4,5 週 :

More information

課題

課題 2018 6 22 2. float[] y = new float[5]; void setup() { size(400, 200); for (int i=0;i< (a) ;i++) { y[i] = random(0.3*width, width); void draw() { y[ (b) ] = mousex; int minpos = findminpos( (c) ); for (int

More information

Microsoft PowerPoint - 先端GPGPUシミュレーション工学特論(web).pptx

Microsoft PowerPoint - 先端GPGPUシミュレーション工学特論(web).pptx 偏微分方程式の差分計算 ( 移流方程式 ) 長岡技術科学大学電気電子情報工学専攻出川智啓 今日の内容 差分法 1 次関数の差分 共有メモリの利用 次元移流方程式 gnuplot による結果の表示 ダブルバッファリング 589 先端 GPGPUシミュレーション工学特論 数値計算 計算機を利用して数学 物理学的問題の解を計算 微積分を計算機で扱える形に変換 処理自体はあまり複雑ではない 精度を上げるために計算量が増加

More information

1. GPU コンピューティング GPU コンピューティング GPUによる 汎用コンピューティング GPU = Graphics Processing Unit CUDA Compute Unified Device Architecture NVIDIA の GPU コンピューティング環境 Lin

1. GPU コンピューティング GPU コンピューティング GPUによる 汎用コンピューティング GPU = Graphics Processing Unit CUDA Compute Unified Device Architecture NVIDIA の GPU コンピューティング環境 Lin Windows で始める CUDA 入門 GTC 2013 チュートリアル エヌビディアジャパン CUDA エンジニア森野慎也 1. GPU コンピューティング GPU コンピューティング GPUによる 汎用コンピューティング GPU = Graphics Processing Unit CUDA Compute Unified Device Architecture NVIDIA の GPU コンピューティング環境

More information

1 4 1.1........................................... 4 1.2.................................. 4 1.3................................... 4 2 5 2.1 GPU.....

1 4 1.1........................................... 4 1.2.................................. 4 1.3................................... 4 2 5 2.1 GPU..... CPU GPU N Q07-065 2011 2 17 1 1 4 1.1........................................... 4 1.2.................................. 4 1.3................................... 4 2 5 2.1 GPU...........................................

More information

NUMAの構成

NUMAの構成 GPU のプログラム 天野 アクセラレータとは? 特定の性質のプログラムを高速化するプロセッサ 典型的なアクセラレータ GPU(Graphic Processing Unit) Xeon Phi FPGA(Field Programmable Gate Array) 最近出て来た Deep Learning 用ニューロチップなど Domain Specific Architecture 1GPGPU:General

More information

Microsoft PowerPoint - 説柔5_間勊+C_guide5ï¼›2015ã•’2015æŒ°æŁŽæš’å¯¾å¿œç¢ºèª“æ¸‹ã†¿ã•‚.pptx

Microsoft PowerPoint - 説柔5_間勊+C_guide5ï¼›2015ã•’2015æŒ°æŁŽæš’å¯¾å¿œç¢ºèª“æ¸‹ã†¿ã•‚.pptx 情報ネットワーク導入ユニット Ⅰ C 言語 配列 5 章 : 配列同じ型 (int, double など ) の変数の集まりを 番号 ( 添字 ) で管理する変数 int vc[5]; // 要素数が 5 の配列 vc[0] = 1; vc[1] = 2; vc[2] = 3; vc[3] = 4; vc[4] = 5; printf("vc[0] = %d n", vc[0] ); printf("vc[1]

More information

GPU CUDA CUDA 2010/06/28 1

GPU CUDA CUDA 2010/06/28 1 GPU CUDA CUDA 2010/06/28 1 GPU NVIDIA Mark Harris, Optimizing Parallel Reduction in CUDA http://developer.download.nvidia.com/ compute/cuda/1_1/website/data- Parallel_Algorithms.html#reduction CUDA SDK

More information

GPU 画像 動画処理用ハードウェア 低性能なプロセッサがたくさん詰まっている ピーク性能が非常に高い GPUを数値計算に用いるのがGPGPU Graphics Processing Unit General Purpose GPU TSUBAME2.0: GPUスパコン 本演習ではNVIDIA社の

GPU 画像 動画処理用ハードウェア 低性能なプロセッサがたくさん詰まっている ピーク性能が非常に高い GPUを数値計算に用いるのがGPGPU Graphics Processing Unit General Purpose GPU TSUBAME2.0: GPUスパコン 本演習ではNVIDIA社の 演習II (連続系アルゴリズム) 第2回: GPGPU 須田研究室 M1 本谷 徹 motoya@is.s.u-tokyo.ac.jp 2012/10/19 GPU 画像 動画処理用ハードウェア 低性能なプロセッサがたくさん詰まっている ピーク性能が非常に高い GPUを数値計算に用いるのがGPGPU Graphics Processing Unit General Purpose GPU TSUBAME2.0:

More information

解析力学B - 第11回: 正準変換

解析力学B - 第11回: 正準変換 解析力学 B 第 11 回 : 正準変換 神戸大 : 陰山聡 ホームページ ( 第 6 回から今回までの講義ノート ) http://tinyurl.com/kage2010 2011.01.27 正準変換 バネ問題 ( あえて下手に座標をとった ) ハミルトニアンを考える q 正準方程式は H = p2 2m + k 2 (q l 0) 2 q = H p = p m ṗ = H q = k(q

More information

CUDA 連携とライブラリの活用 2

CUDA 連携とライブラリの活用 2 1 09:30-10:00 受付 10:00-12:00 Reedbush-H ログイン GPU 入門 13:30-15:00 OpenACC 入門 15:15-16:45 OpenACC 最適化入門と演習 17:00-18:00 OpenACC の活用 (CUDA 連携とライブラリの活用 ) CUDA 連携とライブラリの活用 2 3 OpenACC 簡単にGPUプログラムが作成できる それなりの性能が得られる

More information

演習課題No12

演習課題No12 演習課題 No.12 ( 課題は 3 題ある ) 課題 12-1 時間内提出 従来の C 言語には複素数を直接扱うデータ型はないので (*), 構造体で複素数 ( 英語で complex) を表すことにする. 複素数を表す構造体を以下のように定義する. struct complex float r; // 実部 ( 英語で real) float i; // 虚部 ( 英語で imaginary)

More information

<4D F736F F F696E74202D D488A778AEE B4F93B982CC8AEE A2E707074>

<4D F736F F F696E74202D D488A778AEE B4F93B982CC8AEE A2E707074> 宇宙工学基礎 ( 軌道の基礎 松永三郎 機械宇宙学科 機械宇宙システム専攻 ニュートンの法則 第 法則 力が作用作用しないしない限り 質点質点は静止静止ないしはないしは一定速度一定速度で運動するする ( 慣性の法則 慣性空間 慣性座標系慣性座標系の定義第 法則 慣性座標系におけるにおける質点質点の運動 p F ( pɺ t ( F: 全作用力, pmv: 並進運動量 ( 質量と速度速度の積 慣性系を規準規準としてとして時間微分時間微分を行うことにことに注意第

More information

cp-7. 配列

cp-7. 配列 cp-7. 配列 (C プログラムの書き方を, パソコン演習で学ぶシリーズ ) https://www.kkaneko.jp/cc/adp/index.html 金子邦彦 1 本日の内容 例題 1. 月の日数配列とは. 配列の宣言. 配列の添え字. 例題 2. ベクトルの内積例題 3. 合計点と平均点例題 4. 棒グラフを描く配列と繰り返し計算の関係例題 5. 行列の和 2 次元配列 2 今日の到達目標

More information

スライド 1

スライド 1 数値解析 平成 24 年度前期第 13 週 [7 月 11 日 ] 静岡大学創造科学技術大学院情報科学専攻工学部機械工学科計測情報講座 三浦憲二郎 講義アウトライン [7 月 11 日 ] 関数近似と補間 最小 2 乗近似による関数近似 ラグランジュ補間 形状処理工学の基礎 点列からの曲線の生成 T.Kanai, U.Tokyo 関数近似 p.116 複雑な関数を簡単な関数で近似する関数近似 閉区間

More information

SuperH RISC engineファミリ用 C/C++コンパイラパッケージ V.7~V.9 ご使用上のお願い

SuperH RISC engineファミリ用 C/C++コンパイラパッケージ V.7~V.9 ご使用上のお願い ツールニュース RENESAS TOOL NEWS 2014 年 02 月 01 日 : 140201/tn1 SuperH RISC engine ファミリ用 C/C++ コンパイラパッケージ V.7~V.9 ご使用上のお願い SuperH RISC engine ファミリ用 C/C++ コンパイラパッケージ V.7~V.9の使用上の注意事項 4 件を連絡します 同一ループ内の異なる配列要素に 同一の添え字を使用した場合の注意事項

More information

Slides: TimeGraph: GPU Scheduling for Real-Time Multi-Tasking Environments

Slides: TimeGraph: GPU Scheduling for Real-Time Multi-Tasking Environments 計算機アーキテクチャ第 11 回 マルチプロセッサ 本資料は授業用です 無断で転載することを禁じます 名古屋大学 大学院情報科学研究科 准教授加藤真平 デスクトップ ジョブレベル並列性 スーパーコンピュータ 並列処理プログラム プログラムの並列化 for (i = 0; i < N; i++) { x[i] = a[i] + b[i]; } プログラムの並列化 x[0] = a[0] + b[0];

More information

XMPによる並列化実装2

XMPによる並列化実装2 2 3 C Fortran Exercise 1 Exercise 2 Serial init.c init.f90 XMP xmp_init.c xmp_init.f90 Serial laplace.c laplace.f90 XMP xmp_laplace.c xmp_laplace.f90 #include int a[10]; program init integer

More information

1/12 平成 29 年 3 月 24 日午後 1 時 1 分第 3 章測地線 第 3 章測地線 Ⅰ. 変分法と運動方程式最小作用の原理に基づくラグランジュの方法により 重力場中の粒子の運動方程式が求められる これは 力が未知の時に有効な方法であり 今のような 一般相対性理論における力を求めるのに使

1/12 平成 29 年 3 月 24 日午後 1 時 1 分第 3 章測地線 第 3 章測地線 Ⅰ. 変分法と運動方程式最小作用の原理に基づくラグランジュの方法により 重力場中の粒子の運動方程式が求められる これは 力が未知の時に有効な方法であり 今のような 一般相対性理論における力を求めるのに使 / 平成 9 年 3 月 4 日午後 時 分第 3 章測地線 第 3 章測地線 Ⅰ. 変分法と運動方程式最小作用の原理に基づくラグランジュの方法により 重力場中の粒子の運動方程式が求められる これは 力が未知の時に有効な方法であり 今のような 一般相対性理論における力を求めるのに使う事ができる 最小作用の原理 : 粒子が時刻 から の間に移動したとき 位置 と速度 v = するのが ラグランジュ関数

More information

PC Windows 95, Windows 98, Windows NT, Windows 2000, MS-DOS, UNIX CPU

PC Windows 95, Windows 98, Windows NT, Windows 2000, MS-DOS, UNIX CPU 1. 1.1. 1.2. 1 PC Windows 95, Windows 98, Windows NT, Windows 2000, MS-DOS, UNIX CPU 2. 2.1. 2 1 2 C a b N: PC BC c 3C ac b 3 4 a F7 b Y c 6 5 a ctrl+f5) 4 2.2. main 2.3. main 2.4. 3 4 5 6 7 printf printf

More information

課題

課題 float xball;// 円の中心の X 座標 float yball; // 円の中心の Y 座標 float rball; // 円の半径 color cball; // 円の色 // 円を移動させる void updateball(){ yball -= 1; if(yball+rball< 0){ yball = height+rball; // 円を描く void drawball(){

More information

価格変動のフラクタル性への統計物理的アプローチ

価格変動のフラクタル性への統計物理的アプローチ 2000 2 29 1 1 4 2 6 3 7 3.1............................. 7 3.2........... 7 3.3............. 7 3.4.................... 8 3.4.1.......................... 8 3.4.2.......................... 8 3.4.3.................

More information

memo

memo 計数工学プログラミング演習 ( 第 3 回 ) 2016/04/26 DEPARTMENT OF MATHEMATICAL INFORMATICS 1 内容 ポインタ malloc 構造体 2 ポインタ あるメモリ領域 ( アドレス ) を代入できる変数 型は一致している必要がある 定義時には値は不定 ( 何も指していない ) 実際にはどこかのメモリを指しているので, #include

More information

Microsoft PowerPoint - 04.pptx

Microsoft PowerPoint - 04.pptx 初期化 コールバック関数の登録 glutmainloop() 描画関数 マウス処理関数 キーボード処理関数などの関数ポインタを登録する イベント待ちの無限ループ 再描画? no マウス入力? no キーボード入力? no yes yes yes 描画関数の呼び出し マウス処理関数の呼び出し キーボード処理関数の呼び出し void keyboard(unsigned char key, int x,

More information

Gauss

Gauss 15 1 LU LDL T 6 : 1g00p013-5 1 6 1.1....................................... 7 1.2.................................. 8 1.3.................................. 8 2 Gauss 9 2.1.....................................

More information

2014計算機実験1_1

2014計算機実験1_1 H26 1 1 1 seto@ics.nara-wu.ac.jp 数学モデリングのプロセス 問題点の抽出 定義 仮定 数式化 万有引力の法則 m すべての物体は引き合う r mm F =G 2 r M モデルの検証 モデルによる 説明 将来予測 解釈 F: 万有引力 (kg m s-2) G: 万有引力定数 (m s kg ) 解析 数値計算 M: 地球の質量 (kg) により解を得る m: 落下する物質の質量

More information

( CUDA CUDA CUDA CUDA ( NVIDIA CUDA I

(    CUDA CUDA CUDA CUDA (  NVIDIA CUDA I GPGPU (II) GPGPU CUDA 1 GPGPU CUDA(CUDA Unified Device Architecture) CUDA NVIDIA GPU *1 C/C++ (nvcc) CUDA NVIDIA GPU GPU CUDA CUDA 1 CUDA CUDA 2 CUDA NVIDIA GPU PC Windows Linux MaxOSX CUDA GPU CUDA NVIDIA

More information

Microsoft PowerPoint - C言語の復習(配布用).ppt [互換モード]

Microsoft PowerPoint - C言語の復習(配布用).ppt [互換モード] if 文 (a と b の大きい方を表示 ) C 言語 Ⅰ の復習 条件判定 (if, 条件式 ) ループ (for[ 二重まで ], while, do) 配列 ( 次元 次元 ) トレース int a, b; printf( 整数 a: ); scanf( %d, &a); printf( 整数 b: ); scanf( %d, &b); //つのif 文で表現する場合間違えやすい どっちに =

More information

TSUBAME2.0におけるGPUの 活用方法

TSUBAME2.0におけるGPUの 活用方法 GPU プログラミング 基礎編 東京工業大学学術国際情報センター 1. GPU コンピューティングと TSUBAME2.0 スーパーコンピュータ GPU コンピューティングとは グラフィックプロセッサ (GPU) は グラフィック ゲームの画像計算のために 進化を続けてきた 現在 CPU のコア数は 2~12 個に対し GPU 中には数百コア その GPU を一般アプリケーションの高速化に利用! GPGPU

More information

memo

memo 計数工学プログラミング演習 ( 第 3 回 ) 2017/04/25 DEPARTMENT OF MATHEMATICAL INFORMATICS 1 内容 ポインタの続き 引数の値渡しと参照渡し 構造体 2 ポインタで指されるメモリへのアクセス double **R; 型 R[i] と *(R+i) は同じ意味 意味 R double ** ポインタの配列 ( の先頭 ) へのポインタ R[i]

More information

スライド 1

スライド 1 数値解析 2019 年度前期第 13 週 [7 月 11 日 ] 静岡大学創造科学技術大学院情報科学専攻工学部機械工学科計測情報講座 三浦憲二郎 講義アウトライン [7 月 11 日 ] 関数近似と補間 最小 2 乗近似による関数近似 ラグランジュ補間 T.Kanai, U.Tokyo 関数近似 p.116 複雑な関数を簡単な関数で近似する 関数近似 閉区間 [a,b] で定義された関数 f(x)

More information

プログラミング基礎

プログラミング基礎 C プログラミング Ⅱ 演習 2-1(a) BMI による判定 文字列, 身長 height(double 型 ), 体重 weight (double 型 ) をメンバとする構造体 Data を定義し, それぞれのメンバの値をキーボードから入力した後, BMI を計算するプログラムを作成しなさい BMI の計算は関数化すること ( ) [ ] [ ] [ ] BMI = 体重 kg 身長 m 身長

More information

Microsoft PowerPoint - 6.PID制御.pptx

Microsoft PowerPoint - 6.PID制御.pptx プロセス制御工学 6.PID 制御 京都大学 加納学 Division of Process Control & Process Systems Engineering Department of Chemical Engineering, Kyoto University manabu@cheme.kyoto-u.ac.jp http://www-pse.cheme.kyoto-u.ac.jp/~kano/

More information

PowerPoint Presentation

PowerPoint Presentation 付録 2 2 次元アフィン変換 直交変換 たたみ込み 1.2 次元のアフィン変換 座標 (x,y ) を (x,y) に移すことを 2 次元での変換. 特に, 変換が と書けるとき, アフィン変換, アフィン変換は, その 1 次の項による変換 と 0 次の項による変換 アフィン変換 0 次の項は平行移動 1 次の項は座標 (x, y ) をベクトルと考えて とすれば このようなもの 2 次元ベクトルの線形写像

More information

Microsoft PowerPoint - 12.ppt [互換モード]

Microsoft PowerPoint - 12.ppt [互換モード] 第 12 回構造体 1 今回の目標 構造体を理解する 構造体の定義の仕方を理解する 構造体型を理解する 構造体型の変数 引数 戻り値を理解する 複素数同士を足し算する関数を作成し その関数を利用するプログラムを作成する 2 複素数の足し算 複素数は実部と虚部の2つの実数で 表現される 表現される z = a+ bi 2 つの複素数 z 1 = a 1+ bi 1 と z2 = a2 + b2i の和

More information

スライド 1

スライド 1 数値解析 平成 29 年度前期第 14 週 [7 月 10 日 ] 静岡大学工学研究科機械工学専攻ロボット 計測情報分野創造科学技術大学院情報科学専攻 三浦憲二郎 期末試験 7 月 31 日 ( 月 ) 9 10 時限 A : 佐鳴会議室 B : 佐鳴ホール 講義アウトライン [7 月 10 日 ] 関数近似と補間 最小 2 乗近似による関数近似 ( 復習 ) ラグランジュ補間 形状処理工学の基礎

More information

C言語による数値計算プログラミング演習

C言語による数値計算プログラミング演習 5. 行列の固有値問題 n n 正方行列 A に対する n 個の固有値 λ i (i=1,,,n) と対応する固有ベクトル u i は次式を満たす Au = λ u i i i a11 a1 L a1 n u1i a1 a a n u i A =, ui = M O M M an 1 an L ann uni これらはまとめて, つぎのように書ける 5.1 ヤコビ法 = Λ, = [ u1 u u

More information

偏微分方程式、連立1次方程式、乱数

偏微分方程式、連立1次方程式、乱数 数値計算法 011/6/8 林田清 大阪大学大学院理学研究科 常微分方程式の応用例 1 Rutherford 散乱 ( 原子核同士の散乱 ; 金の薄膜に α 粒子をあてる ) 1 クーロン力 f= 4 0 r r r Ze y からf cos, si f f f y f f 粒子の 方向 y方向の速度と座標について dv Ze dvy Ze y, 3 3 dt 40m r dt 40m r d dy

More information

[1] #include<stdio.h> main() { printf("hello, world."); return 0; } (G1) int long int float ± ±

[1] #include<stdio.h> main() { printf(hello, world.); return 0; } (G1) int long int float ± ± [1] #include printf("hello, world."); (G1) int -32768 32767 long int -2147483648 2147483647 float ±3.4 10 38 ±3.4 10 38 double ±1.7 10 308 ±1.7 10 308 char [2] #include int a, b, c, d,

More information

Microsoft PowerPoint - ロボットの運動学forUpload'C5Q [互換モード]

Microsoft PowerPoint - ロボットの運動学forUpload'C5Q [互換モード] ロボットの運動学 順運動学とは 座標系の回転と並進 同次座標変換行列 Denavit-Hartenberg の表記法 多関節ロボットの順運動学 レポート課題 & 中間試験について 逆運動学とは ヤコビアン行列 運動方程式 ( 微分方程式 ) ロボットの運動学 動力学 Equation of motion f ( ( t), ( t), ( t)) τ( t) 姿勢 ( 関節角の組合せ ) Posture

More information

OCW-iダランベールの原理

OCW-iダランベールの原理 講義名連続体力学配布資料 OCW- 第 2 回ダランベールの原理 無機材料工学科准教授安田公一 1 はじめに今回の講義では, まず, 前半でダランベールの原理について説明する これを用いると, 動力学の問題を静力学の問題として解くことができ, さらに, 前回の仮想仕事の原理を適用すると動力学問題も簡単に解くことができるようになる また, 後半では, ダランベールの原理の応用として ラグランジュ方程式の導出を示す

More information

課題

課題 float[] xball; float[] yball; int numberofballs = (a) ; int radius=10; size(400,400); xball = (b) (c) [numberofballs]; yball = (d) (e) [numberofballs]; xball[i] = random(radius,width-radius); yball[i]

More information

パソコンシミュレータの現状

パソコンシミュレータの現状 第 2 章微分 偏微分, 写像 豊橋技術科学大学森謙一郎 2. 連続関数と微分 工学において物理現象を支配する方程式は微分方程式で表されていることが多く, 有限要素法も微分方程式を解く数値解析法であり, 定式化においては微分 積分が一般的に用いられており. 数学の基礎知識が必要になる. 図 2. に示すように, 微分は連続な関数 f() の傾きを求めることであり, 微小な に対して傾きを表し, を無限に

More information

Microsoft PowerPoint - 13.ppt [互換モード]

Microsoft PowerPoint - 13.ppt [互換モード] 第 13 回構造体 1 今回の目標 構造体を理解する 構造体の定義の仕方を理解する 構造体型を理解する 構造体型の変数 引数 戻り値を理解する 複素数同士を足し算する関数を作成し その関数を利用するプログラムを作成する 2 複素数の足し算 複素数は実部と虚部の2つの実数で 表現される z = a+ bi z = a + bi z = a + b i 2 つの複素数 1 1 1 と 2 2 2 の和

More information

Microsoft PowerPoint - 1章 [互換モード]

Microsoft PowerPoint - 1章 [互換モード] 1. 直線運動 キーワード 速さ ( 等速直線運動, 変位 ) 加速度 ( 等加速度直線運動 ) 重力加速度 ( 自由落下 ) 力学 I 内容 1. 直線運動 2. ベクトル 3. 平面運動 4. 運動の法則 5. 摩擦力と抵抗 6. 振動 7. 仕事とエネルギー 8. 運動量と力積, 衝突 9. 角運動量 3 章以降は, 運動の向きを考えなければならない 1. 直線運動 キーワード 速さ ( 等速直線運動,

More information

課題

課題 int[] scores; PFont font; int[] scores = { (a) ; PFont font; size(300,400); scores = (a); scores[0] = 10000; scores[1] = 9000; scores[2] = 5000; scores[3] = 1000; scores[4] = 30; font = loadfont("serif-48.vlw");

More information

Microsoft PowerPoint - C4(反復for).ppt

Microsoft PowerPoint - C4(反復for).ppt C 言語プログラミング 繰返し ( for 文と while 文 ) 例題 (10 個のデータの平均を求める ) 手順 入力データをx1,x2,,x10 として, (x1+x2+x3+x4+x5+x6+x7+x8+x9+x10)/10 を計算する データ数が,1000 個,10000 個, となったらどうする? データ数個分の 変数の宣言, scanf 関数の呼出し, 加算式の記述 が必要 1 総和を求めること

More information

計算機シミュレーション

計算機シミュレーション . 運動方程式の数値解法.. ニュートン方程式の近似速度は, 位置座標 の時間微分で, d と定義されます. これを成分で書くと, d d li li とかけます. 本来は が の極限をとらなければいけませんが, 有限の小さな値とすると 秒後の位置座標は速度を用いて, と近似できます. 同様にして, 加速度は, 速度 の時間微分で, d と定義されます. これを成分で書くと, d d li li とかけます.

More information

線積分.indd

線積分.indd 線積分 線積分 ( n, n, n ) (ξ n, η n, ζ n ) ( n-, n-, n- ) (ξ k, η k, ζ k ) ( k, k, k ) ( k-, k-, k- ) 物体に力 を作用させて位置ベクトル A の点 A から位置ベクトル の点 まで曲線 に沿って物体を移動させたときの仕事 W は 次式で計算された A, A, W : d 6 d+ d+ d@,,, d+ d+

More information

フローチャートの書き方

フローチャートの書き方 アルゴリズム ( 算法 ) 入門 1 プログラムの作成 機械工学専攻泉聡志 http://masudahp.web.fc2.com/flowchart/index.html 参照 1 何をどのように処理させたいのか どのようなデータを入力し どのような結果を出力させるのか問題を明確にする 2 問題の内容どおりに処理させるための手順を考える ( フローチャートの作成 )~アルゴリズム( 算法 ) の作成

More information

OpenFOAM(R) ソースコード入門 pt1 熱伝導方程式の解法から有限体積法の実装について考える 前編 : 有限体積法の基礎確認 2013/11/17 オープンCAE 富山富山県立大学中川慎二

OpenFOAM(R) ソースコード入門 pt1 熱伝導方程式の解法から有限体積法の実装について考える 前編 : 有限体積法の基礎確認 2013/11/17 オープンCAE 富山富山県立大学中川慎二 OpenFOAM(R) ソースコード入門 pt1 熱伝導方程式の解法から有限体積法の実装について考える 前編 : 有限体積法の基礎確認 2013/11/17 オープンCAE 勉強会 @ 富山富山県立大学中川慎二 * OpenFOAM のソースコードでは, 基礎式を偏微分方程式の形で記述する.OpenFOAM 内部では, 有限体積法を使ってこの微分方程式を解いている. どのようにして, 有限体積法に基づく離散化が実現されているのか,

More information

ニュートン重力理論.pptx

ニュートン重力理論.pptx 3 ニュートン重力理論 1. ニュートン重力理論の基本 : 慣性系とガリレイ変換不変性 2. ニュートン重力理論の定式化 3. 等価原理 4. 流体力学方程式とその基礎 3.1 ニュートン重力理論の基本 u ニュートンの第一法則 = 力がかからなければ 等速直線運動を続ける u 等速直線運動に見える系を 慣性系 と呼ぶ ² 直線とはどんな空間の直線か? ニュートン理論では 3 次元ユークリッド空間

More information

第1章

第1章 ...1... 1... 1...3... 3... 5... 6...9... 9... 9... 9... 10... 12... 14 Windows...16... 16... 16...21... 21... 25...30...31...32...33 3 1 2 3 4 5 6 7 8 n x, y i 0,1,, n 1 i i y P x ) i 0, 1,, n 1 n 1 i

More information

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ 今回のプログラミングの課題 次のステップによって 徐々に難易度の高いプログラムを作成する ( 参照用の番号は よくわかる C 言語 のページ番号 ) 1. キーボード入力された整数 10 個の中から最大のものを答える 2. 整数を要素とする配列 (p.57-59) に初期値を与えておき

More information

ii-03.dvi

ii-03.dvi 2005 II 3 I 18, 19 1. A, B AB BA 0 1 0 0 0 0 (1) A = 0 0 1,B= 1 0 0 0 0 0 0 1 0 (2) A = 3 1 1 2 6 4 1 2 5,B= 12 11 12 22 46 46 12 23 34 5 25 2. 3 A AB = BA 3 B 2 0 1 A = 0 3 0 1 0 2 3. 2 A (1) A 2 = O,

More information

memo

memo 数理情報工学演習第一 C プログラミング演習 ( 第 5 回 ) 2015/05/11 DEPARTMENT OF MATHEMATICAL INFORMATICS 1 今日の内容 : プロトタイプ宣言 ヘッダーファイル, プログラムの分割 課題 : 疎行列 2 プロトタイプ宣言 3 C 言語では, 関数や変数は使用する前 ( ソースの上のほう ) に定義されている必要がある. double sub(int

More information

: : : : ) ) 1. d ij f i e i x i v j m a ij m f ij n x i =

: : : : ) ) 1. d ij f i e i x i v j m a ij m f ij n x i = 1 1980 1) 1 2 3 19721960 1965 2) 1999 1 69 1980 1972: 55 1999: 179 2041999: 210 211 1999: 211 3 2003 1987 92 97 3) 1960 1965 1970 1985 1990 1995 4) 1. d ij f i e i x i v j m a ij m f ij n x i = n d ij

More information

caimmetal03.key

caimmetal03.key import UIKit // ID let ID_VERTEX:Int = 0 let ID_PROJECTION:Int = 1 // 1 struct VertexInfo : Initializable { var pos:vec4 = Vec4() var uv:vec2 = Vec2() var rgba:caimcolor = CAIMColor() // struct Particle

More information

JavaプログラミングⅠ

JavaプログラミングⅠ Java プログラミング Ⅱ 8 回目抽象クラスとインタフェース課題 確認 問題次の各文は正しいか誤っているか答えなさい (1) 抽象クラスのオブジェクトは生成できる (2) 抽象メソッドとはメソッドの本体が未定義のメソッドである (3) 抽象メソッドをメンバーにもつクラスは抽象クラスである (4) 抽象クラスを拡張してすべての抽象メソッドをオーバーライドすれば サブクラスのオブジェクトを生成できる

More information

07-二村幸孝・出口大輔.indd

07-二村幸孝・出口大輔.indd GPU Graphics Processing Units HPC High Performance Computing GPU GPGPU General-Purpose computation on GPU CPU GPU GPU *1 Intel Quad-Core Xeon E5472 3.0 GHz 2 6 MB L2 cache 1600 MHz FSB 80 GFlops 1 nvidia

More information

Microsoft PowerPoint - 11th.ppt [互換モード]

Microsoft PowerPoint - 11th.ppt [互換モード] 工学部 6 7 8 9 10 組 ( 奇数学籍番号 ) 担当 : 長谷川英之 情報処理演習 第 11 回 2010 年 12 月 16 日 1 課題 R1-20101125 の解答例 #include #include #define nn 90000 #define pi 3.1415 main() int i,j,n; float sound[nn],ei[nn],er[nn];

More information

Microsoft PowerPoint _OpenCAE並列計算分科会.pptx

Microsoft PowerPoint _OpenCAE並列計算分科会.pptx 地球流体力学に関する GPGPU を用いた数値計算 神戸大学惑星科学研究センター西澤誠也 地球流体力学とは 地球 惑星に関連がある流体の力学 回転, 重力の影響 e.g. 大気, 海洋, マントル 数値計算は天気予報 & 弾道軌道予測から始まった ベクトル計算機 地球流体の計算はベクトル長が長いものが多い ベクトル計算機の凋落 某社の次世代スパコンからの撤退 個人的スパコンの将来予想 個々の演算器はシンプルに

More information

企業の所得分布のジップ則

企業の所得分布のジップ則 2001 2 28 1 1 3 2 3 3 6 4 8 5 17 A 19 2 1 s P (s) P (s) s a (1) α P (αs) P (s) (2) [1] 1 1 1949 2 1 2 2 4000 1 2 s N s N(> s) s 1 (3) [3] ( ) ( ) 2 3 1: [2] 4 2: 4000 85000 1 [4] 5 R% 3: R 3 1. 2. 3. i

More information

Taro-最大値探索法の開発(公開版

Taro-最大値探索法の開発(公開版 最大値探索法の開発 0. 目次 1. 開発過程 1 目標 1 : 4 個のデータの最大値を求める 目標 2 : 4 個のデータの最大値を求める 改良 : 多数のデータに対応するため 配列を使う 目標 3 : n 個のデータの最大値を求める 改良 : コードを簡潔に記述するため for 文を使う 目標 4 : n 個のデータの最大値を求める 改良 : プログラムをわかりやすくするため 関数を使う 目標

More information

スライド 1

スライド 1 センサー工学 2013 年 12 月 18 日 ( 水 ), 2014 年 1 月 8 日 ( 水 ),1 月 15 日 ( 水 ) 第 11 回,12 回,13 回,14 回 知能情報工学科横田孝義 1 センサー工学 回授業内容予習 復習内容備考 1 授業のガイダンス 計測工学で学んだ単位系 誤差 精度などの復習を行う 2 ジャイロセンサの仕組みジャイロセンサの仕組み 3 最近の動向 MEMS センサ

More information

(Basic Theory of Information Processing) 1

(Basic Theory of Information Processing) 1 (Basic Theory of Information Processing) 1 10 (p.178) Java a[0] = 1; 1 a[4] = 7; i = 2; j = 8; a[i] = j; b[0][0] = 1; 2 b[2][3] = 10; b[i][j] = a[2] * 3; x = a[2]; a[2] = b[i][3] * x; 2 public class Array0

More information

Microsoft PowerPoint - prog11.ppt

Microsoft PowerPoint - prog11.ppt プログラミング言語 第 回 (7 年 7 月 6 日 今日の配布物 片面の用紙 枚 今日の課題が書かれています 本日の出欠を兼ねています /33 今日やること http://www.tnlab.ice.uec.ac.jp/~s-okubo/class/language/ にアクセスすると 教材があります 7 年 7 月 6 日分と書いてある部分が 本日の教材です 本日の内容 前回の課題の解答 Romberg

More information

kiso2-09.key

kiso2-09.key 座席指定はありません 計算機基礎実習II 2018 のウェブページか 第9回 ら 以下の課題に自力で取り組んで下さい 計算機基礎実習II 第7回の復習課題(rev07) 第9回の基本課題(base09) 第8回試験の結果 中間試験に関するコメント コンパイルできない不完全なプログラムなど プログラミングに慣れていない あるいは複雑な問題は 要件 をバラして段階的にプログラムを作成する exam08-2.c

More information

シミュレーション物理4

シミュレーション物理4 シミュレーション物理 4 運動方程式の方法 運動方程式 物理で最もよく出てくる そもそも物理はものの運動を議論する学問から出発 ( つり合いは運動を行わないという意味で含まれる ) 代表例 ニュートンの運動方程式 波動方程式 シュレーディンガー方程式 運動方程式 ( 微分方程式の解法 ) 高次の微分方程式を 1 階微分方程式に変形 N 変数の 階微分方程式 N 変数の 1 階微分方程式 dy/dt=f(t,y)

More information

Taro-プログラミングの基礎Ⅱ(公

Taro-プログラミングの基礎Ⅱ(公 0. 目次 2. プログラムの作成 2. 1 コラッツ問題 自然数 n から出発して n が偶数ならば 2 で割り n が奇数ならば 3 倍して 1 を足す操作を行う この操作を繰り返すと最後に 1 になると予想されている 問題 1 自然数 aの操作回数を求めよ 問題 2 自然数 aから bまでのなかで 最大操作回数となる自然数を求めよ 2. 2 耐久数 正整数の各桁の数字を掛け 得られた結果についても同様の操作を繰り返す

More information

Microsoft PowerPoint - GPGPU実践基礎工学(web).pptx

Microsoft PowerPoint - GPGPU実践基礎工学(web).pptx GPU のプログラム構造 長岡技術科学大学電気電子情報工学専攻出川智啓 今回の内容 GPU プログラミング環境 (CUDA) GPU プログラムの実行の流れ CUDA によるプログラムの記述 カーネル (GPU で処理する関数 ) の構造 記述方法とその理由 GPU 固有のパラメータの確認 405 GPU(Graphics Processing Unit) とは 画像処理専用のハードウェア 具体的には画像処理用のチップ

More information

微分方程式による現象記述と解きかた

微分方程式による現象記述と解きかた 微分方程式による現象記述と解きかた 土木工学 : 公共諸施設 構造物の有用目的にむけた合理的な実現をはかる方法 ( 技術 ) に関する学 橋梁 トンネル ダム 道路 港湾 治水利水施設 安全化 利便化 快適化 合法則的 経済的 自然および人口素材によって作られた 質量保存則 構造物の自然的な性質 作用 ( 外力による応答 ) エネルギー則 の解明 社会的諸現象のうち マスとしての移動 流通 運動量則

More information

‚æ4›ñ

‚æ4›ñ ( ) ( ) ( ) A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9 (OUS) 9 26 1 / 28 ( ) ( ) ( ) A B C D Z a b c d z 0 1 2 9 (OUS) 9

More information

17 1. strucr Potter ( ) Harry Potter and the Philosopher s Stone 1997 English Title : Harry Potter and the Philosopher s Stone : : 1997 #include<stdio

17 1. strucr Potter ( ) Harry Potter and the Philosopher s Stone 1997 English Title : Harry Potter and the Philosopher s Stone : : 1997 #include<stdio 17 1. strucr Potter ( ) Harry Potter and the Philosopher s Stone 1997 English Title : Harry Potter and the Philosopher s Stone : : 1997 #include typedef struct Potter{ Potter; int main(void){

More information

関数の呼び出し ( 選択ソート ) 選択ソートのプログラム (findminvalue, findandreplace ができているとする ) #include <stdiu.h> #define InFile "data.txt" #define OutFile "surted.txt" #def

関数の呼び出し ( 選択ソート ) 選択ソートのプログラム (findminvalue, findandreplace ができているとする ) #include <stdiu.h> #define InFile data.txt #define OutFile surted.txt #def C プログラミング演習 1( 再 ) 6 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ 関数の呼び出し ( 選択ソート ) 選択ソートのプログラム (findminvalue, findandreplace ができているとする ) #include #define InFile "data.txt" #define OutFile "surted.txt"

More information

適応フィルタのSIMD最適化

適応フィルタのSIMD最適化 茂木和洋 @ まるも製作所 今回は省略 初めての方は #1 の資料を参照 適応フィルタとは 適応フィルタの問題点 ( 速度面で ) SIMD 比較命令でマスク処理 ベンチマーク 固定のフィルタではなく 入力値によって処理を変更し 最適な結果を求める 例 基準値との差異を閾値と比較して 参照画素として使うか使わないかを切り替える 最小自乗法でフィッティングしてフィルタ係数自体を動的に作成する 他いろいろ

More information

enshu5_4.key

enshu5_4.key http://www.mmsonline.com/articles/parallel-processing-speeds-toolpath-calculations TA : 菅 新 菅沼智史 水曜 新行紗弓 馬淵隼 木曜 情報知能工学演習V (前半第4週) 政田洋平 システム情報学研究科計算科学専攻 演習 V( 前半 ) の内容 第 1 週 : 高性能計算 (High Performance Computing

More information

差分スキーム 物理 化学 生物現象には微分方程式でモデル化される例が多い モデルを使って現実の現象をコンピュータ上で再現することをシミュレーション ( 数値シミュレーション コンピュータシミュレーション ) と呼ぶ そのためには 微分方程式をコンピュータ上で計算できる数値スキームで近似することが必要

差分スキーム 物理 化学 生物現象には微分方程式でモデル化される例が多い モデルを使って現実の現象をコンピュータ上で再現することをシミュレーション ( 数値シミュレーション コンピュータシミュレーション ) と呼ぶ そのためには 微分方程式をコンピュータ上で計算できる数値スキームで近似することが必要 差分スキーム 物理 化学 生物現象には微分方程式でモデル化される例が多い モデルを使って現実の現象をコンピュータ上で再現することをシミュレーション ( 数値シミュレーション コンピュータシミュレーション ) と呼ぶ そのためには 微分方程式をコンピュータ上で計算できる数値スキームで近似することが必要になる その一つの方法が微分方程式を差分方程式におき直すことである 微分方程式の差分化 次の 1 次元境界値問題を考える

More information

Microsoft PowerPoint - H21生物計算化学2.ppt

Microsoft PowerPoint - H21生物計算化学2.ppt 演算子の行列表現 > L いま 次元ベクトル空間の基底をケットと書くことにする この基底は完全系を成すとすると 空間内の任意のケットベクトルは > > > これより 一度基底を与えてしまえば 任意のベクトルはその基底についての成分で完全に記述することができる これらの成分を列行列の形に書くと M これをベクトル の基底 { >} による行列表現という ところで 行列 A の共役 dont 行列は A

More information

Microsoft Word - 1B2011.doc

Microsoft Word - 1B2011.doc 第 14 回モールの定理 ( 単純梁の場合 ) ( モールの定理とは何か?p.11) 例題 下記に示す単純梁の C 点のたわみ角 θ C と, たわみ δ C を求めよ ただし, 部材の曲げ 剛性は材軸に沿って一様で とする C D kn B 1.5m 0.5m 1.0m 解答 1 曲げモーメント図を描く,B 点の反力を求める kn kn 4 kn 曲げモーメント図を描く knm 先に得られた曲げモーメントの値を

More information

7 ポインタ (P.61) ポインタを使うと, メモリ上のデータを直接操作することができる. 例えばデータの変更 やコピーなどが簡単にできる. また処理が高速になる. 7.1 ポインタの概念 変数を次のように宣言すると, int num; メモリにその領域が確保される. 仮にその開始のアドレスを 1

7 ポインタ (P.61) ポインタを使うと, メモリ上のデータを直接操作することができる. 例えばデータの変更 やコピーなどが簡単にできる. また処理が高速になる. 7.1 ポインタの概念 変数を次のように宣言すると, int num; メモリにその領域が確保される. 仮にその開始のアドレスを 1 7 ポインタ (P.61) ポインタを使うと, メモリ上のデータを直接操作することができる. 例えばデータの変更 やコピーなどが簡単にできる. また処理が高速になる. 7.1 ポインタの概念 変数を次のように宣言すると, int num; メモリにその領域が確保される. 仮にその開始のアドレスを 10001 番地とすると, そこから int 型のサイズ, つまり 4 バイト分の領域が確保される.1

More information