Unity 勉強メモ

ゲームエンジンのUnityを勉強するブログです。

2015-03-01から1ヶ月間の記事一覧

Elmを使ってみた時のメモ (その2)

Elm

ウインドウ内をボールが飛び跳ねるプログラム (改良版) 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を使ってみた時のメモ (その1)

Elm

Elmとは 公式サイト Functional Reaticve 言語 インタラクティブなアプリケーションのための言語 HTML + CSS + JavaScript にコンパイルされる オンラインで簡単に試すことができる とりあえず使ってみた Hello, World. Elmはサンプルプログラムが非常に充実…

C言語でオレオレ行列積ルーチンを作るプロジェクト (その11)

オレオレ行列積。まだ諦めていませんよ。 プログラム プログラム全体は以下のGitHubリポジトリにあります。 今回利用するプログラムは、 main.cとmy_dgemm11.cです。 lambdataro/mydgemm コンパイル $ gcc -static -fopenmp -mavx -O3 main.c my_dgemm11.c -…

C言語でオレオレ行列積ルーチンを作るプロジェクト (その10)

オレオレ行列積ルーチンが微妙に速くなった。 プログラム プログラム全体は以下のGitHubリポジトリにあります。 今回利用するプログラムは、 main.cとmy_dgemm10.cです。 lambdataro/mydgemm コンパイル $ gcc -static -fopenmp -mavx -O3 main.c my_dgemm10…

C言語でオレオレ行列積ルーチンを作るプロジェクト (その9)

オレオレ行列積ルーチンがまた少しだけ速くなった。 プログラム プログラム全体は以下のGitHubリポジトリにあります。 今回利用するプログラムは、 main.cとmy_dgemm09.cです。 lambdataro/mydgemm コンパイル $ gcc -static -fopenmp -mavx -O3 main.c my_d…

C言語でオレオレ行列積ルーチンを作るプロジェクト (その8)

オレオレ行列積ルーチンがまた少しだけ速くなった。 プログラム プログラム全体は以下のGitHubリポジトリにあります。 今回利用するプログラムは、 main.cとmy_dgemm08.cです。 lambdataro/mydgemm コンパイル $ gcc -static -fopenmp -mavx -O3 main.c my_d…

C言語でオレオレ行列積ルーチンを作るプロジェクト (その7)

色々試行錯誤した結果、大分速くなった。 OpenMPの使い方も大分わかってきた。 前のプログラムが動かなかったのはprivate節を指定していなかったからだった。 プログラム プログラム全体は以下のGitHubリポジトリにあります。 今回利用するプログラムは、 ma…

行列積の計算を理想的な環境で測定し直してみた

ディスクトップ環境を入れていない理想的なlinux環境を用意したので、 そこで行列積ルーチンの速度を測定して見ました。 実験環境 CPU: Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz メモリ: 16GB OS: Debian 7.8 64bit 最小インストール状態から必要なソフトウ…

行列積の計算をCPU-Throttlingを無効にして測定し直してみた

行列積の実行結果が時々極端に速くなったり遅くなったりする現象に遭遇した。 ATLASのインストール時にCPU-Throttlingを無効にするという操作をしたのを 覚えていたので、これまで作ったルーチンをCPU-Throttlingを無効にして 測定しなおしてみた。 それぞれ…

C言語でオレオレ行列積ルーチンを作るプロジェクト (その6)

今回はOpenMPを使って並列化してみました。 プログラム プログラム全体は以下のGitHubリポジトリにあります。 今回利用するプログラムは、 main.cとmy_dgemm05.cです。 lambdataro/mydgemm コンパイル 今回はiccを用いた。 $ icc -static -openmp -mavx -O3 …

C言語でオレオレ行列積ルーチンを作るプロジェクト (その5)

今回はSIMD演算を使って見ました。 プログラム プログラム全体は以下のGitHubリポジトリにあります。 今回利用するプログラムは、 main.cとmy_dgemm04.cです。 lambdataro/mydgemm コンパイル $ clang -static -mavx -O3 main.c my_dgemm05.c -I/opt/OpenBLA…

C言語でオレオレ行列積ルーチンを作るプロジェクト (その4)

行列積のプログラムを色々いじっていたら速くなったのでブログに載せます。 プログラム プログラム全体は以下のGitHubリポジトリにあります。 今回利用するプログラムは、 main.cとmy_dgemm04.cです。 lambdataro/mydgemm コンパイル $ clang -static -O3 ma…

C言語でオレオレ行列積ルーチンを作るプロジェクト (その3)

今回はブロック化を適用してみました。 プログラム BNがブロックサイズです。ブロック化を適用するとこで、 行列がキャッシュに乗りやすくなります。 問題はこのブロックサイズをいくつに定めるかですが、 とりあえず20から1000まで10刻みで試してみて折れ線…

C言語でオレオレ行列積ルーチンを作るプロジェクト (その2)

今回から前回の単純な行列積プログラムを最適化していきます。 今回適用する最適化はループの交換です。 プログラム 前回のプログラムでは、ループの順番がi-j-lの順番でしたが、 今回はi-l-jの順番になっています。 こうすることで、行列Cと行列Bへのメモリ…

C言語でオレオレ行列積ルーチンを作るプロジェクト (その1)

行列積の計算に興味をもったので、 自分でも行列積を計算するプログラムを自作してみようと思います。 最初に何の工夫もない行列積プログラムを作って、 それを順次最適化していく事で、自力でどこまで高速なルーチンを 実現できるか挑戦していきたいと思い…

LinuxでIntel MKLを使って行列積の計算をしてみた

インテル Parallel Studio XE 2015 Composer Edition for Fortran & C++ の 30日間の体験版を申し込んだので、Intel MKLを使って行列積の計算をしてみた。 プログラム プログラムは前回の記事「LinuxでOpenBLASとATLASを使って行列積の計算をしてみた - Unit…

LinuxでOpenBLASとATLASを使って行列積の計算をしてみた

最近BLAS(Basic Linear Algebra Subprograms)に ついて調べたので簡単な使い方等をまとめます。 はじめに BLAS (Basic Linear Algebra Subprograms) は行列やベクトルに関する基本的な演算の 仕様を定めたもので、この仕様に従った実装がいくつか存在します…