SlideShare a Scribd company logo
第6回 ソフトウェアによる
CPUの高速化技術
長岡技術科学大学 電気電子情報工学専攻 出川智啓
今回の内容
GPGPU実践基礎工学
 ソフトウェアによる高速化技術
 プログラムの高速化
 最適化
 プロセッサが得意な処理への変更
 演算ユニットの効率的な利用
 条件判断の排除
 キャッシュの有効利用
 行列-ベクトル積
 時間計測
2 2015/10/14
プログラムの最適化
 最適化
 プログラムの実行結果を変えない範囲で効率化する
 プログラムの実行にかかる時間を低減
 プログラムの使用メモリ量を低減
 プログラムの実行に伴う消費電力を低減
 手動最適化
 プログラマがプログラムソースを直接変更
 コンパイラ最適化
 コンパイラが実行ファイルを作る過程で効率化
 プログラムソースは変更しない
GPGPU実践基礎工学3 2015/10/14
プログラムの最適化
 手動最適化は必要がない限り止めましょう
 コンパイラ最適化でどうしても早くならない場合だけ
 最近のコンパイラは優秀
 保守性が下がる
 ソースの可読性が下がる
 不要な箇所を最適化する可能性がある
 実行時間の1割を占める箇所を10倍高速化しても,プログラム全体
の実行時間は1割も高速化されない
 昔と比べてメモリを潤沢に利用できるため,数kB,数MBのメモリ使用
量を減らすことに意味はない
GPGPU実践基礎工学4 2015/10/14
プログラム作成時に導入できる高速化技術
 プロセッサの内部構造(ハードウェア)に合わせたプログ
ラムの作成
 プロセッサが得意な処理へ変更
 アルゴリズムの変更も含む
 演算ユニットの効率的な利用
 メモリの読み書きの効率化
 局所性を考慮したキャッシュの有効利用
GPGPU実践基礎工学5 2015/10/14
処理の速度
 演算の速度
 加算,減算は非常に速い
 乗算は少し遅い
 除算は非常に遅い
 プログラム中で繰り返し出現する除算を乗算に変更すること
で高速化する場合がある
GPGPU実践基礎工学6 2015/10/14
除算を乗算に変更
 除算は乗算よりも処理が遅い
 除算を逆数の乗算に変更することで処理を高速化
 プログラム中で除算を複数回実行している場合は変数に代入
b = a/2.0; b = a*0.5;
GPGPU実践基礎工学7
for(i=0;i<N;i++){
s[i] = sin(2.0*M_PI*x[i]/L);
c[i] = cos(2.0*M_PI*x[i]/L);
}
iL = 1.0/L;
for(i=0;i<N;i++){
s[i] = sin(2.0*M_PI*x[i]*iL);
c[i] = cos(2.0*M_PI*x[i]*iL);
}
2015/10/14
除算を1回しか行わない場合,高速化
は期待できない
除算の変更
 整数の乗除算
 2倍や1/2倍など2のべき乗の数による乗除算をシフト演算
に置き換え
 シフト演算
 左シフト << (上位ビットは棄却,下位ビットは0を格納)
 右シフト >> (下位ビットは棄却,上位ビットは0を格納)
b = a/2; b = a>>1;
GPGPU実践基礎工学8 2015/10/14
b = a*4; b = a<<2;
int a=1;   //0000 0000 0000 00012
a = a<<2; //0000 0000 0000 01002
a = a>>1; //0000 0000 0000 00102
処理の速度
 条件判断
 苦手ではないがそこまで速くない
 ループアンローリング
 条件判断不要なアルゴリズムへの変更
GPGPU実践基礎工学9 2015/10/14
ループアンロール(loop unrolling)
 forやwhileは,ループの度に継続条件の判定を実行
 条件判定を減らすことで高速化
 処理を明示的に書くことで複数の命令を同時実行
double a[1000],sum;
int i;
//配列aに値を設定
sum=0.0;
for(i=0;i<1000;i++){
sum += a[i];
}
double a[1000],sum;
int i;
double sum0,sum1,sum2,sum3;
//配列aに値を設定
sum=sum0=sum1=sum2=sum3=0.0;
for(i=0;i<1000;i+=4){
sum0 += a[i ];
sum1 += a[i+1];
sum2 += a[i+2];
sum3 += a[i+3];
}
sum = sum0+sum1+sum2+sum3;
1000回繰り返し(条件判定は1000回) 250回繰り返し(条件判定は250回)
GPGPU実践基礎工学10 2015/10/14
条件判断不要なアルゴリズムへの変更
 高速な演算の利用やループアンローリングはコンパイラ最適
化でも行われることがある
 アルゴリズムの変更はコンパイラ最適化の範囲外
 一部のアルゴリズムは除く
 行列-行列積は高速なコードに置き換えてくれることがある
 例題
 0以上1未満の乱数xを発生させ,定められた区分に入る個数をカウ
ントする(乱数のヒストグラムを生成する)
 0.00 ≤ x < 0.25
 0.25 ≤ x < 0.50
 0.50 ≤ x < 0.75
 0.75 ≤ x < 1.0
GPGPU実践基礎工学11 2015/10/14
条件判断不要なアルゴリズムへの変更
GPGPU実践基礎工学12
#include<stdio.h>
#include<stdlib.h>
#define N 256
int main(void){
int i;
int histogram[4];
float number;
for(i=0;i<4;i++){
histogram[i]=0;
}
for(i=0;i<N;i++){
//乱数を生成し,0から1の範囲に収める
number = ((float)rand())/RAND_MAX;
//乱数をカウント(条件判断)
if(0.0<=number && number<0.25){
histogram[0] += 1;
}else if(0.25<=number && number<0.50){
histogram[1] += 1;
}else if(0.50<=number && number<0.75){
histogram[2] += 1;
}else if(0.75<=number && number< 1.0){
histogram[3] += 1;
}
}
for(i=0;i<4;i++){
printf("%d¥n",histogram[i]);
}
return 0;
}
2015/10/14
ifを使って乱数の分布
を調べるプログラム
条件判断不要なアルゴリズムへの変更
GPGPU実践基礎工学13
#include<stdio.h>
#include<stdlib.h>
#define N 256
int main(void){
int i;
int histogram[4];
float number;
for(i=0;i<4;i++){
histogram[i]=0;
}
for(i=0;i<N;i++){
//乱数を生成し,0から1の範囲に収める
number = ((float)rand())/RAND_MAX;
//乱数をカウント(ifを利用しない)
index = (int)(4.0*number);
histogram[index] += 1;
}
for(i=0;i<4;i++){
printf("%d¥n",histogram[i]);
}
return 0;
}
2015/10/14
ifを使わず乱数の分布
を調べるプログラム
考え方
 ある範囲に入った乱数の個数を数え,対応する配列の
要素に1を足す
 毎回ifの判定をするのが煩わしい
 ある範囲とそれに対応する配列の添字が判ればいい
 4倍して小数点以下を切り捨てる(int型へキャストする)
 得られた数字を配列添字として利用
0.0 0.25 0.5 0.75 1.0
histogram[0] histogram[1] histogram[2] histogram[3]
0 1 2 3 4
この範囲の
乱数は0に
この範囲の
乱数は1に
この範囲の
乱数は2に
この範囲の
乱数は3に
GPGPU実践基礎工学14 2015/10/14
×4
利点と欠点
 利点
 ifを使わないので高速に実行されると期待
 範囲(区間)の変更が手軽
 配列添字と乱数にかける数を変更するだけ
 ifを使うと全条件の変更が必要
 欠点
 一見しただけでは何をしているのかわからない
 区間ごとに異なる範囲を定められない
GPGPU実践基礎工学15 2015/10/14
プログラム作成時に導入できる高速化技術
 プロセッサの内部構造(ハードウェア)に合わせたプログ
ラムの作成
 プロセッサが得意な処理へ変更
 アルゴリズムの変更も含む
 演算ユニットの効率的な利用
 メモリの読み書きの効率化
 局所性を考慮したキャッシュの有効利用
GPGPU実践基礎工学16 2015/10/14
キャッシュの有効利用
GPGPU実践基礎工学17
 キャッシュ
 CPUとメモリ(主記憶)の間に置かれる記憶装置
 高速で小容量のメモリ
 CPUとメモリの性能差を埋める
 必要なデータだけでなく,その近傍のまとまったデータを管理
 多階層キャッシュ
 プロセッサの速度向上に伴い,キャッシュも多段構造化
 CPUから近い順に
 レベル1キャッシュ(L1キャッシュ)
 レベル2キャッシュ(L2キャッシュ)
 レベル3キャッシュ(L3キャッシュ)
高速,容量小
低速,容量大
2015/10/14
多階層キャッシュ
GPGPU実践基礎工学18
 L3キャッシュがなく,L2キャッシュを共有する場合もある
2015/10/14
主記憶(メモリ)
L3キャッシュ
・・・
・・・
CPU
L2キャッシュ
コア
演算器
レジスタ レジスタ
L1キャッシュ
演算器
L2キャッシュ
コア
演算器
レジスタ レジスタ
L1キャッシュ
演算器
L2キャッシュ
コア
演算器
レジスタ レジスタ
L1キャッシュ
演算器
フォン・ノイマン・ボトルネック
GPGPU実践基礎工学19
 フォン・ノイマン型コンピュータ
 記憶装置(メモリ)が命令とデータを記憶
 1命令ごとにメモリアクセスが発生
 メモリへのアクセス時間で処理速度が頭打ち
 CPUが高速化しても性能を引き出せない
 現在のコンピュータ
 メモリへのアクセス時間>>演算時間
 1個のデータを読み出す間に100回以上演算が可能
 必要なデータをキャッシュに置く事でアクセス時間を短縮
 アウト・オブ・オーダー実行でデータの読み出しを先に行う
 厳密にはフォン・ノイマン型コンピュータではない
2015/10/14
メモリアクセスの局所性
GPGPU実践基礎工学20
 メモリに複数回アクセスする際のキャッシュの有効利用
 空間局所性
 メモリ上のあるデータにアクセスした後,その近くのアドレスの
データにアクセス
 キャッシュはある大きさのデータをまとめて管理
 あるデータにアクセスすると,その隣のデータがキャッシュに残って
いる可能性が高い
 時間局所性
 メモリ上のあるデータにアクセスした後,時間をおいて同じ
データにアクセス
 キャッシュから追い出されるかは不明
 短い間隔でアクセスすればキャッシュに残っている可能性が高い
2015/10/14
局所性を意識したプログラミング
GPGPU実践基礎工学21
 行列-ベクトル積
 
j
jjii BAC ,
































NNNN
N
N B
B
AA
AA
C
C





1
,1,
,11,11
),3,2,1( Ni 
2015/10/14
行列-ベクトル積のプログラム
GPGPU実践基礎工学22
for(i=0; i<N; i++){
for(j=0; j<N; j++){
c[i]=c[i] + a[i][j]*b[j];
}
}
do i=1,N
do j=1,N
c(i)=c(i) + a(i,j)*b(j);
end do
end do
C言語 Fortran
2015/10/14
行列を表現する際の注意点
GPGPU実践基礎工学23
 行列を表現するときのメモリ配置
 a[i][j]
 2次元配列でもメモリ上は1次元に配置
 i方向が先に配置されるか,j方向が先に配置されるか
 C言語はj方向優先
 Fortranはi方向優先
2015/10/14
行列を表現する際の注意点
GPGPU実践基礎工学24
 C言語におけるa[i][j]のメモリ上の配置
 1, 4, 7 ・・・ 2, 5, 8 ・・・3, 6, 9・・・
 Fortranにおけるa(i,j)のメモリ上の配置
 1, 2, 3 ・・・ 4, 5, 6 ・・・ 7, 8, 9・・・


















963
852
741
j
i
Row
Column
2015/10/14
行列を表現する際の注意点
GPGPU実践基礎工学25
 C言語におけるa[i][j]のメモリ上の配置
 1, 4, 7 ・・・ 2, 5, 8 ・・・3, 6, 9・・・
 Fortranにおけるa(i,j)のメモリ上の配置
 1, 2, 3 ・・・ 4, 5, 6 ・・・ 7, 8, 9・・・


















963
852
741
j
i
Row
Column
2015/10/14
行列を表現する際の注意点
GPGPU実践基礎工学26
 C言語におけるa[i][j]のメモリ上の配置
 1, 4, 7 ・・・ 2, 5, 8 ・・・3, 6, 9・・・
 Fortranにおけるa(i,j)のメモリ上の配置
 1, 2, 3 ・・・ 4, 5, 6 ・・・ 7, 8, 9・・・


















963
852
741
j
i
Row
Column
2015/10/14
行列-ベクトル積のプログラム
GPGPU実践基礎工学27
for(i=0; i<N; i++){
for(j=0; j<N; j++){
c[i]=c[i] + a[i][j]*b[j];
}
}
do i=0,N
do j=0,N
c(i)=c(i) + a(i,j)*b(j);
end do
end do
C言語 Fortran
連続メモリアクセス(空間局所性あり)
同じ変数に何度もアクセス(時間局所性あり)
レジスタに格納することで高速化
2015/10/14
行列-ベクトル積のプログラム
GPGPU実践基礎工学28
for(i=0; i<N; i++){
for(j=0; j<N; j++){
c[i]=c[i] + a[i][j]*b[j];
}
}
do i=0,N
do j=0,N
c(i)=c(i) + a(i,j)*b(j);
end do
end do
C言語 Fortran
不連続メモリアクセス(空間局所性なし)
aの型のサイズ*N[byte]間隔でアクセス
キャッシュを活用できない
2015/10/14
演習課題
GPGPU実践基礎工学29
 行列-ベクトル積の計算を行うプログラムを作成し,実
行時間を測定する
 forループの順番を変更し,処理時間がどのように変化する
かを測定する
 行列のサイズはN(4096程度,小さいと時間が計れない)
 行列a[i][j]の成分はi/N,ベクトルb[]の成分は全て1


















NNN
NNN
NNN
/2/2/2
/1/1/1
/0/0/0
j
i
2015/10/14
実行時間の測定
GPGPU実践基礎工学30
#include<time.h> // clock_t型や関数clock()を利用
int main(void){
clock_t start_c, stop_c;
float   time_s;
start_c = clock(); //プログラム実行時からの経過時間を取得
: //
: //ここに時間を計りたい処理を記述
: //
stop_c = clock(); //プログラム実行時からの経過時間を取得
//処理に要した時間を秒に変換
time_s = (stop_c‐start_c)/(float)CLOCKS_PER_SEC;
printf(...); //画面表示
return 0;
}
2015/10/14
2038年問題
GPGPU実践基礎工学31
 time.hで定義されているtime関数
 プログラムで経過時間を計測したりする場合に利用
 1970年1月1日0時0分0秒から現在までの経過秒数を返す
 32bitの符号付き整数で秒数を表現すると,表現できる
最大秒数は231‐1 (=2,147,483,647)
 一日が86400秒なので,2147483647/86400=約24855
日後に破綻(経過秒数が負になる)
 24855/365=68
 1970年から68年後の2038年に正しく処理できない端末
が出てくる(可能性がある)
2015/10/14
行列-ベクトル積の計算
GPGPU実践基礎工学32
#include<stdio.h>
#include<time.h>
#define N 4096
int main(){
int i,j;
float a[N][N], b[N], c[N];
//ここで時間計測用の変数を宣言
//初期値の設定
for(i=0;i<N;i++){
for(j=0;j<N;j++){
a[i][j] = (float)i/(float)N;
}
}
for(i=0;i<N;i++){
c[i] = 0.0f;
b[i] = 1.0f;
}
//ここで時間計測
for(i=0;i<N;i++){   //ここのforを
for(j=0;j<N;j++){ //入替える
c[i] = c[i] + a[i][j]*b[j];
}
}
//ここで時間計測
//実行時間を計算
//結果の表示(%dと%fの値が等しければ正解)
for(i=0;i<N;i++){
printf("c[ %d ] = %f ¥n",i,c[i]);
}
//実行時間の表示
return 0;
}
2015/10/14
mxv.c
#defineディレクティブ
GPGPU実践基礎工学33
 プリプロセッサ
 プログラムソースをコンパイルする前に,プリプロセッサディレ
クティブ(指示句,制御文)に従ってソースに処理を行う
 記号定数
 #define 文字1 文字2
 文字1を文字2に置き換える
 #define N 4096
 Nを4096に置き換え
 行列のサイズを変えたいときに変更が1箇所で済む
 プリプロセスが正常に行われているかを確認するには
 cc –E ソースファイル名.c
2015/10/14
実行時間がうまく測定できない場合
2015/10/14GPGPU実践基礎工学34
 実行時間が0.0000になる場合
 時間測定の最小単位よりも処理が早く終わる
 対策
 行列-ベクトル積を何回も繰り返し,実行時間を繰り返し回数
で割ることで対処
//ここで時間計測
for(l=0; l<10; l++){  //行列-ベクトル積を繰り返し実行
for(i=0;i<N;i++){   //ここのforを入替えると
for(j=0;j<N;j++){ //実行時間がどのように変化するかを確認
c[i] = c[i] + a[i][j]*b[j];
}
}
}
//ここで時間計測
//実行時間を計算(計算して出てきた実行時間を繰り返し回数(ここでは10)で割る)
実行時間がうまく測定できない場合
2015/10/14GPGPU実践基礎工学35
 実行時間が0.0000になる場合
 最適化によって行列-ベクトル積の実行が省略されてしまう
 対策
 printf等を付けて,計算結果を利用する
//ここで時間計測
for(i=0;i<N;i++){   //ここのforを入替えると
for(j=0;j<N;j++){ //実行時間がどのように変化するかを確認
c[i] = c[i] + a[i][j]*b[j];
}
}
//ここで時間計測
//printfで計算結果を表示(計算結果を利用するので実行を省略できない)
for(i=0;i<N;i++){
printf("c[%d] = %f¥n",i,c[i]);
}
//実行時間を計算(計算して出てきた実行時間を繰り返し回数(ここでは10)で割る)
実行時間がうまく測定できない場合
2015/10/14GPGPU実践基礎工学36
 コンパイルオプションで高度な最適化を行っても実行時間
がほとんど変わらない
 複数のコアを使うように並列化されている場合
 clock関数は実時間(wall clock time)ではなく,CPUの稼
働時間を測定
 複数のコアが稼働すると,稼働したコアの稼働時間を合計
 時間測定の方法を変更することで対処
 異なる関数(gettimeofday,QueryPerformanceCounterなど)
 Unixのtimeコマンド

More Related Content

PDF
2015年度GPGPU実践基礎工学 第8回 並列計算の概念 (プロセスとスレッド)
PDF
2015年度先端GPGPUシミュレーション工学特論 第9回 偏微分方程式の差分計算 (移流方程式)
PDF
2015年度先端GPGPUシミュレーション工学特論 第4回 GPUのメモリ階層の詳細 (共有メモリ)
PDF
2015年度GPGPU実践基礎工学 第2回 GPGPUの歴史と応用例
PDF
2015年度GPGPU実践プログラミング 第2回 GPUのアーキテクチャとプログラム構造
PDF
CUDAプログラミング入門
PDF
2015年度先端GPGPUシミュレーション工学特論 第8回 偏微分方程式の差分計算 (拡散方程式)
PDF
GPGPU Seminar (GPU Accelerated Libraries, 3 of 3, Thrust)
2015年度GPGPU実践基礎工学 第8回 並列計算の概念 (プロセスとスレッド)
2015年度先端GPGPUシミュレーション工学特論 第9回 偏微分方程式の差分計算 (移流方程式)
2015年度先端GPGPUシミュレーション工学特論 第4回 GPUのメモリ階層の詳細 (共有メモリ)
2015年度GPGPU実践基礎工学 第2回 GPGPUの歴史と応用例
2015年度GPGPU実践プログラミング 第2回 GPUのアーキテクチャとプログラム構造
CUDAプログラミング入門
2015年度先端GPGPUシミュレーション工学特論 第8回 偏微分方程式の差分計算 (拡散方程式)
GPGPU Seminar (GPU Accelerated Libraries, 3 of 3, Thrust)

What's hot (20)

PDF
2015年度GPGPU実践プログラミング 第7回 総和計算
PDF
2015年度先端GPGPUシミュレーション工学特論 第5回 GPUのメモリ階層の詳細 (様々なメモリの利用)
PDF
1072: アプリケーション開発を加速するCUDAライブラリ
PDF
2015年度先端GPGPUシミュレーション工学特論 第2回 GPUによる並列計算の概念と メモリアクセス
PDF
GPGPU Seminar (GPU Accelerated Libraries, 2 of 3, cuSPARSE)
PDF
2015年度GPGPU実践プログラミング 第15回 GPU最適化ライブラリ
PDF
2015年度GPGPU実践基礎工学 第13回 GPUのメモリ階層
PDF
GPGPU Seminar (GPGPU and CUDA Fortran)
PDF
2015年度GPGPU実践プログラミング 第9回 行列計算(行列-行列積)
PDF
2015年度GPGPU実践プログラミング 第5回 GPUのメモリ階層
PDF
2015年度先端GPGPUシミュレーション工学特論 第7回 総和計算(Atomic演算)
PDF
2015年度先端GPGPUシミュレーション工学特論 第6回 プログラムの性能評価指針 (Flop/Byte,計算律速,メモリ律速)
PDF
2015年度GPGPU実践プログラミング 第6回 パフォーマンス解析ツール
PDF
2015年度GPGPU実践プログラミング 第1回 GPGPUの歴史と応用例
PDF
GPGPU Seminar (GPU Accelerated Libraries, 1 of 3, cuBLAS)
PDF
2015年度GPGPU実践基礎工学 第1回 学際的分野における先端シミュレーション技術の歴史
PDF
2値化CNN on FPGAでGPUとガチンコバトル(公開版)
PDF
2015年度GPGPU実践基礎工学 第12回 GPUによる画像処理
PDF
2015年度GPGPU実践基礎工学 第9回 GPUのアーキテクチャ
PDF
2015年度GPGPU実践プログラミング 第10回 行列計算(行列-行列積の高度な最適化)
2015年度GPGPU実践プログラミング 第7回 総和計算
2015年度先端GPGPUシミュレーション工学特論 第5回 GPUのメモリ階層の詳細 (様々なメモリの利用)
1072: アプリケーション開発を加速するCUDAライブラリ
2015年度先端GPGPUシミュレーション工学特論 第2回 GPUによる並列計算の概念と メモリアクセス
GPGPU Seminar (GPU Accelerated Libraries, 2 of 3, cuSPARSE)
2015年度GPGPU実践プログラミング 第15回 GPU最適化ライブラリ
2015年度GPGPU実践基礎工学 第13回 GPUのメモリ階層
GPGPU Seminar (GPGPU and CUDA Fortran)
2015年度GPGPU実践プログラミング 第9回 行列計算(行列-行列積)
2015年度GPGPU実践プログラミング 第5回 GPUのメモリ階層
2015年度先端GPGPUシミュレーション工学特論 第7回 総和計算(Atomic演算)
2015年度先端GPGPUシミュレーション工学特論 第6回 プログラムの性能評価指針 (Flop/Byte,計算律速,メモリ律速)
2015年度GPGPU実践プログラミング 第6回 パフォーマンス解析ツール
2015年度GPGPU実践プログラミング 第1回 GPGPUの歴史と応用例
GPGPU Seminar (GPU Accelerated Libraries, 1 of 3, cuBLAS)
2015年度GPGPU実践基礎工学 第1回 学際的分野における先端シミュレーション技術の歴史
2値化CNN on FPGAでGPUとガチンコバトル(公開版)
2015年度GPGPU実践基礎工学 第12回 GPUによる画像処理
2015年度GPGPU実践基礎工学 第9回 GPUのアーキテクチャ
2015年度GPGPU実践プログラミング 第10回 行列計算(行列-行列積の高度な最適化)
Ad

Viewers also liked (11)

PDF
Cpuの速度向上はいかに実現されたのか
PDF
CPUの同時実行機能
PPT
20090401 第10回「論理回路のしくみ」
PPTX
ハードウェア技術の動向 2015/02/02
PDF
高位合成友の会第三回(2015/12/08)LTスライド@ikwzm
PDF
The Story of CPU
PDF
2015年度GPGPU実践基礎工学 第5回 ハードウェアによるCPUの高速化技術
PDF
マイコンのIOピンはなぜ入出力の両方に使えるのか?
PDF
CPUに関する話
PDF
Code jp2015 cpuの話
PDF
2015年度GPGPU実践基礎工学 第4回 CPUのアーキテクチャ
Cpuの速度向上はいかに実現されたのか
CPUの同時実行機能
20090401 第10回「論理回路のしくみ」
ハードウェア技術の動向 2015/02/02
高位合成友の会第三回(2015/12/08)LTスライド@ikwzm
The Story of CPU
2015年度GPGPU実践基礎工学 第5回 ハードウェアによるCPUの高速化技術
マイコンのIOピンはなぜ入出力の両方に使えるのか?
CPUに関する話
Code jp2015 cpuの話
2015年度GPGPU実践基礎工学 第4回 CPUのアーキテクチャ
Ad

Similar to 2015年度GPGPU実践基礎工学 第6回 ソフトウェアによるCPUの高速化技術 (20)

PDF
2015年度先端GPGPUシミュレーション工学特論 第1回 先端シミュレーションおよび産業界におけるGPUの役割
PPT
コンピュータの構成と設計 第3版 第1章 勉強会資料
KEY
PyOpenCLによるGPGPU入門
PDF
プログラムを高速化する話Ⅱ 〜GPGPU編〜
PDF
El text.tokuron a(2019).katagiri
PDF
System Center Operations Managerによる仮想環境の高度な管理
PDF
Open design computer project
PDF
研究室見学2023.pdf
PDF
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
PDF
20180729 Preferred Networksの機械学習クラスタを支える技術
PPTX
14(haifu)
PDF
Anaconda & NumbaPro 使ってみた
PDF
2015年度先端GPGPUシミュレーション工学特論 第15回 CPUとGPUの協調
PDF
Isca13 study
PDF
コンテナーによるIT基盤変革 - IT infrastructure transformation -
PPTX
TotalViewを使ったFOCUSスパコンでのデバッグ体験 2016
PDF
2015年度GPGPU実践基礎工学 第7回 シングルコアとマルチコア
PDF
[GTCJ2018]CuPy -NumPy互換GPUライブラリによるPythonでの高速計算- PFN奥田遼介
PDF
20130126 sc12-reading
PPT
20020713
2015年度先端GPGPUシミュレーション工学特論 第1回 先端シミュレーションおよび産業界におけるGPUの役割
コンピュータの構成と設計 第3版 第1章 勉強会資料
PyOpenCLによるGPGPU入門
プログラムを高速化する話Ⅱ 〜GPGPU編〜
El text.tokuron a(2019).katagiri
System Center Operations Managerによる仮想環境の高度な管理
Open design computer project
研究室見学2023.pdf
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
20180729 Preferred Networksの機械学習クラスタを支える技術
14(haifu)
Anaconda & NumbaPro 使ってみた
2015年度先端GPGPUシミュレーション工学特論 第15回 CPUとGPUの協調
Isca13 study
コンテナーによるIT基盤変革 - IT infrastructure transformation -
TotalViewを使ったFOCUSスパコンでのデバッグ体験 2016
2015年度GPGPU実践基礎工学 第7回 シングルコアとマルチコア
[GTCJ2018]CuPy -NumPy互換GPUライブラリによるPythonでの高速計算- PFN奥田遼介
20130126 sc12-reading
20020713

More from 智啓 出川 (18)

PDF
Fortranが拓く世界、VSCodeが架ける橋
PDF
Very helpful python code to find coefficients of the finite difference method
PDF
Why do we confuse String and Array of Characters in Fortran?
PDF
Pythonによる累乗近似
PDF
数値計算結果のPythonによる後処理について(1次元データのピーク値およびその位置の推定)
PDF
オブジェクト指向Fortranが拓く(はずだった)新しい世界
PPTX
Schematic diagrams of GPUs' architecture and Time evolution of theoretical FL...
PDF
GPGPU Education at Nagaoka University of Technology: A Trial Run
PDF
Cuda fortranの利便性を高めるfortran言語の機能
PDF
PGI CUDA FortranとGPU最適化ライブラリの一連携法
PPTX
教育機関でのJetsonの活用の可能性
PDF
GPGPU Seminar (Accelerataion of Lattice Boltzmann Method using CUDA Fortran)
PDF
GPGPU Seminar (PyCUDA)
PDF
2015年度先端GPGPUシミュレーション工学特論 第14回 複数GPUの利用
PDF
2015年度先端GPGPUシミュレーション工学特論 第13回 数値流体力学への応用 (高度な最適化)
PDF
2015年度先端GPGPUシミュレーション工学特論 第11回 数値流体力学への応用 (支配方程式,CPUプログラム)
PDF
2015年度先端GPGPUシミュレーション工学特論 第10回 Poisson方程式の求解 (線形連立一次方程式)
PDF
2015年度先端GPGPUシミュレーション工学特論 第3回 GPUプログラム構造の詳細 (threadとwarp)
Fortranが拓く世界、VSCodeが架ける橋
Very helpful python code to find coefficients of the finite difference method
Why do we confuse String and Array of Characters in Fortran?
Pythonによる累乗近似
数値計算結果のPythonによる後処理について(1次元データのピーク値およびその位置の推定)
オブジェクト指向Fortranが拓く(はずだった)新しい世界
Schematic diagrams of GPUs' architecture and Time evolution of theoretical FL...
GPGPU Education at Nagaoka University of Technology: A Trial Run
Cuda fortranの利便性を高めるfortran言語の機能
PGI CUDA FortranとGPU最適化ライブラリの一連携法
教育機関でのJetsonの活用の可能性
GPGPU Seminar (Accelerataion of Lattice Boltzmann Method using CUDA Fortran)
GPGPU Seminar (PyCUDA)
2015年度先端GPGPUシミュレーション工学特論 第14回 複数GPUの利用
2015年度先端GPGPUシミュレーション工学特論 第13回 数値流体力学への応用 (高度な最適化)
2015年度先端GPGPUシミュレーション工学特論 第11回 数値流体力学への応用 (支配方程式,CPUプログラム)
2015年度先端GPGPUシミュレーション工学特論 第10回 Poisson方程式の求解 (線形連立一次方程式)
2015年度先端GPGPUシミュレーション工学特論 第3回 GPUプログラム構造の詳細 (threadとwarp)

2015年度GPGPU実践基礎工学 第6回 ソフトウェアによるCPUの高速化技術