忍者ブログ

医療事務についてを詳しく紹介中!

医療事務についてを詳しく紹介中!では、最新の医療事務についての情報や口コミなどの情報を紹介しています。

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

ニチイ 医療事務の通信販売







●n×n行列の掛算のC言語プログラムを、キャッシュ・ブロッキング(タイリング)...


n×n行列の掛算のC言語プログラムを、キャッシュ・ブロッキング(タイリング)を用いて作りたいんですが…n×n行列の掛算のプログラムをC言語で書きたいと思ったのですが、キャッシュ・ブロッキング(タイリング)という手法を用いて作らなければなりません。サイト等を参考に下のようなプログラムを作ったのですが結果がうまくいきません。N/2が整数でないため?mmとkkの計算ができてないんだと思うのですが、double型にすると配列の添字が整数型ではないとエラーがでます。どこを直したらうまくいくかアドバイスいただけたら嬉しいです。全然違うプログラムでもキャッシュ・ブロッキング(タイリング)を用いたものでしたら教えていただきたいです。ヨロシクお願いします。#include <stdio.h>#define N 3void gyouretu(double a[N][N],double b[N][N],double c[N][N]);int main(){ int i,j; double A[N][N],B[N][N],C[N][N]; for(i=0;i<N;i++) { for(j=0;j<N;j++) { A[i][j]=B[i][j]=i+j; C[i][j]=0.0; } } gyouretu(A,B,C); for(i=0;i<N;i++) { for(j=0;j<N;j++) { printf("%f ",C[i][j]); } printf("\¥n"); } return 0;}void gyouretu(double a[N][N],double b[N][N],double c[N][N]){ int i,j,k,mm,kk; /最内ループにおいて配列 a に対するスキャンの長さは N の半分になるため,もしこのベクトルがキャッシュに乗り切れば,内側から 2 番目のループの間,a に関しては時間的局所性が利用できる/ for(mm=0; mm<N; mm+=N/2) for(kk=0; kk<N; kk+=N/2) for(i=0; i<N/2; i++) for(j=0; j<N/2; j++) for(k=0; k<N/2; k++) c[mm+i][mm+j]+=a[mm+i][kk+k]*b[kk+k][mm+j];}実行結果5.000000 0.000000 0.0000000.000000 14.000000 0.0000000.000000 0.000000 29.000000


続き
---






自宅で仕事をする際の環境と必要なスキル


賃貸併用住宅マニュアル


モンロー研究所のヘミシンクCD!!


新iPod shuffleを徹底研究


ノエル








307 |  308 |  309 |  310 |  311 |  312 |  313 |  314 |  315 |  316 |  317 | 

ブログ内検索

カレンダー

07 2026/08 09
S M T W T F S
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31

オススメ商品

スポンサードリンク

アクセス解析

Script:Ninja Blog Skin:Twinkle Magic
忍者ブログ [PR]