2015-03-01から1ヶ月間の記事一覧
ウインドウ内をボールが飛び跳ねるプログラム (改良版) import Graphics.Element(..) import Graphics.Collage(..) import Color(..) import Signal(..) import Time(..) import Window(..) type alias State = { x : Float, y : Float, vx : Float, vy : Fl…
Elmとは 公式サイト Functional Reaticve 言語 インタラクティブなアプリケーションのための言語 HTML + CSS + JavaScript にコンパイルされる オンラインで簡単に試すことができる とりあえず使ってみた Hello, World. Elmはサンプルプログラムが非常に充実…
オレオレ行列積。まだ諦めていませんよ。 プログラム プログラム全体は以下のGitHubリポジトリにあります。 今回利用するプログラムは、 main.cとmy_dgemm11.cです。 lambdataro/mydgemm コンパイル $ gcc -static -fopenmp -mavx -O3 main.c my_dgemm11.c -…
オレオレ行列積ルーチンが微妙に速くなった。 プログラム プログラム全体は以下のGitHubリポジトリにあります。 今回利用するプログラムは、 main.cとmy_dgemm10.cです。 lambdataro/mydgemm コンパイル $ gcc -static -fopenmp -mavx -O3 main.c my_dgemm10…
オレオレ行列積ルーチンがまた少しだけ速くなった。 プログラム プログラム全体は以下のGitHubリポジトリにあります。 今回利用するプログラムは、 main.cとmy_dgemm09.cです。 lambdataro/mydgemm コンパイル $ gcc -static -fopenmp -mavx -O3 main.c my_d…
オレオレ行列積ルーチンがまた少しだけ速くなった。 プログラム プログラム全体は以下のGitHubリポジトリにあります。 今回利用するプログラムは、 main.cとmy_dgemm08.cです。 lambdataro/mydgemm コンパイル $ gcc -static -fopenmp -mavx -O3 main.c my_d…
色々試行錯誤した結果、大分速くなった。 OpenMPの使い方も大分わかってきた。 前のプログラムが動かなかったのはprivate節を指定していなかったからだった。 プログラム プログラム全体は以下のGitHubリポジトリにあります。 今回利用するプログラムは、 ma…
ディスクトップ環境を入れていない理想的なlinux環境を用意したので、 そこで行列積ルーチンの速度を測定して見ました。 実験環境 CPU: Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz メモリ: 16GB OS: Debian 7.8 64bit 最小インストール状態から必要なソフトウ…
行列積の実行結果が時々極端に速くなったり遅くなったりする現象に遭遇した。 ATLASのインストール時にCPU-Throttlingを無効にするという操作をしたのを 覚えていたので、これまで作ったルーチンをCPU-Throttlingを無効にして 測定しなおしてみた。 それぞれ…
今回はOpenMPを使って並列化してみました。 プログラム プログラム全体は以下のGitHubリポジトリにあります。 今回利用するプログラムは、 main.cとmy_dgemm05.cです。 lambdataro/mydgemm コンパイル 今回はiccを用いた。 $ icc -static -openmp -mavx -O3 …
今回はSIMD演算を使って見ました。 プログラム プログラム全体は以下のGitHubリポジトリにあります。 今回利用するプログラムは、 main.cとmy_dgemm04.cです。 lambdataro/mydgemm コンパイル $ clang -static -mavx -O3 main.c my_dgemm05.c -I/opt/OpenBLA…
行列積のプログラムを色々いじっていたら速くなったのでブログに載せます。 プログラム プログラム全体は以下のGitHubリポジトリにあります。 今回利用するプログラムは、 main.cとmy_dgemm04.cです。 lambdataro/mydgemm コンパイル $ clang -static -O3 ma…
今回はブロック化を適用してみました。 プログラム BNがブロックサイズです。ブロック化を適用するとこで、 行列がキャッシュに乗りやすくなります。 問題はこのブロックサイズをいくつに定めるかですが、 とりあえず20から1000まで10刻みで試してみて折れ線…
今回から前回の単純な行列積プログラムを最適化していきます。 今回適用する最適化はループの交換です。 プログラム 前回のプログラムでは、ループの順番がi-j-lの順番でしたが、 今回はi-l-jの順番になっています。 こうすることで、行列Cと行列Bへのメモリ…
行列積の計算に興味をもったので、 自分でも行列積を計算するプログラムを自作してみようと思います。 最初に何の工夫もない行列積プログラムを作って、 それを順次最適化していく事で、自力でどこまで高速なルーチンを 実現できるか挑戦していきたいと思い…
インテル Parallel Studio XE 2015 Composer Edition for Fortran & C++ の 30日間の体験版を申し込んだので、Intel MKLを使って行列積の計算をしてみた。 プログラム プログラムは前回の記事「LinuxでOpenBLASとATLASを使って行列積の計算をしてみた - Unit…
最近BLAS(Basic Linear Algebra Subprograms)に ついて調べたので簡単な使い方等をまとめます。 はじめに BLAS (Basic Linear Algebra Subprograms) は行列やベクトルに関する基本的な演算の 仕様を定めたもので、この仕様に従った実装がいくつか存在します…