Fortran (90以上) を書く時に気をつけると良いこと

ここ1年以上メイン言語は Fortran90 です.ここでは,Fortran そのものに関する賛否はさておき,(個人的に) Fortran でこのように書かれていると良いだろうという話をしていきます *1. implicit none を必ず書く これが何かわからなくてもいいのでとにかく…

autotools の出力について

最近,autotools に苦戦しているのでメモ.autotools を使った時に make のログが以下のように表示される事があるが,これは configure の --enable-silent-rules が有効になっているため. CXX hoge.o CXX fuga.o AR libx.aそれ以外の方法では,configure.i…

カーネルをなんとかして関数テンプレートにしたい

はてなブログに移行しました.そして最初の記事です.最近 Xeon Phi なるものを触ったりしていますが,かなりとても書きづらいというか pragma ベースで書くのは (OpenMP で楽に並列化できるレベルなら良いですが) 決して楽ではないと僕は感じています.なぜ…

ログインシェルが bash/sh 以外で MPI のプログラムを動かすときに環境変数が渡らないときは

MPI

最近,研究室の環境も zsh で動かしています.しかし,MPI のプログラムを走らせるときにどうしても環境変数に頼ってしまう部分があって,そのままプログラムを実行すると環境変数が他のノードに渡らなくてプログラムがクラッシュします.(もしかしたら実装…

MPI ことはじめ資料 (研究室向け)

MPI

この間の高速化,並列化みたいなスライドの MPI 版です.OpenMPI を使う必要があるとのことで,OpenMPI を対象として (といってもビルドと実行方法が OpenMPI 用になっているだけですが) 作りました.C++ と書いておきながらほぼ C です.# MPI は素で書くの…

for のループカウンタがいじれて辛い問題

C++

ぶんちょうさんが Twitter / yutopp: forループで for(int i=0; ...と おっしゃっていたので.boost::for_each(boost::irange(begin, end), [](int i) { ...; }); な書き方は良いんですが,個人的にめんどくさいので for みたいに書けた方が良い.ただループ…

並列化の入門的な資料 (研究室向け)

研究室の大先輩が某所の*1某プロジェクトに入るそうなので,これまで並列化とか高速計算とかあまりやっていないけど,これからやらないとまずいってことだったので,僕が勉強会で教えていました.昨日のうちに slideshare にアップロードしていましたけど言…

Boost.勉強会 #11 で発表してきた

Boost.勉強会 #11 東京 - boostjp茨城の山奥に行ったりとか,書類書いてたりとかして1週間も経ってしまいましたが書きます."CilkPlus, TBB, OpenMP 〜 並列プログラミングを支える技術" という大層なタイトルで発表してましたが,つまるところこの辺のライ…

CilkPlus について

C++

コード書くの疲れたので休憩も兼ねて書きます.知っている人も多いと思いますが,CilkPlus は並列処理を容易にするため,Intel が自社のコンパイラに用意している C/C++ 用の言語拡張です. 元々は MIT で作られていた C 言語用の拡張だったとかなんだとか.…

PLplot でコマンドライン引数にデータファイルを指定する方法

最近 TeX に載せるグラフを書くために Numbers とか使って EPS に変換したりとかしてたのですが, よくある2段組み用に使うと汚くてかなり見づらい.今日とうとう諦めて PLplot を使って描画プログラムを書くことにしました.PLplot Home Page - MainPLplot は …

FreeBSD サーバと Moodle による Web 学習環境

これをやるきっかけは, 大学の1年生が主に使っているシステム (がマウントしているファイルサーバだったかな) が今年度でサポート完全停止でいつ壊れても修理できないそうで, 今学内全体で使うためのクラウドシステムの準備中らしく, その期間安全に使えるシ…

Boost.MPI は実際 MPI_Allgatherv や MPI_Scatterv をサポートできてない

Tutorial - 1.53.0Boost.MPI ドキュメントの "Table 19.5. Collectives" を見てもらえると分かりますが, Boost.MPI では MPI_Allgatherv といった collectives はそれぞれ非 v な collectives でサポートされているかのように書かれています.ちなみに MPI_Al…

Boost.MPI, Serializationで動的確保した配列がメンバに含まれるクラスインスタンスをシリアライズして送る.

できるのかと思ってたんですが, Boost.Serialization のチュートリアルちゃんと読んだら書いてありました.Serialization配列のサイズが分かっていればできそうです.(2013/02/11 追記) 動的確保されたメモリの場合, serialize 関数でメモリ確保は行われないた…

Intel C++ Compiler で C++ 標準ライブラリを使うときに気をつけたいこと

C++

2ヶ月以上ぶりです.最近 Intel C++ Compiler (icpc) を使う機会が増えたのですが, GCC で書いたプログラムを他のコンピュータ (自分でシステム管理ができないタイプ) でコンパイル/実行しようとしたときに躓いたのでメモ.Intel C++ Compiler Linux 版は GCC …

C++ Advent Calendar 2012 「18日 : Cer に知って欲しい C++」

C++

この記事は, C++ Advent Calendar 2012 (C++ Advent Calendar 2012 - PARTAKE) の18日目です.温いネタをやりたいので C 言語を使っている人 (Cer) に C++ の知って欲しい/今すぐ使える機能を Tips 的に書いていこうと思います.対象は特に設けなくていい気が…

Boost.MPI に MVAPICH2 を用いる

Boost.MPI は MPICH や OpenMPI では Default Configuration が良い感じに走って using mpi するだけで問題ないのですが, MVAPICH2 はコンパイラの名前が異なっているため, そのままでは動きません./tools/build/v2/user-config.jam に以下のように書きます.…

Environment Modules で複数のバージョンのソフトウェアを扱う

Modules -- Software Environment Management *1これはユーザーが異なる複数のバージョンのソフトウェアを使用できるようにするために, load/unload を提供して管理を楽にする為のソフトウェアのようです.PC クラスタ(OSCAR Project)などでの運用実績があ…

メモ:jasmine + Coffeescript でテストを書く.

テストと言っていいのか, BDD ではスペックというのが一般的なのかはよくわからないのですが, gem の jasmine でテスト環境を準備したのでメモ.jasmine 自体の説明は公式といい感じのページあったので.pivotal/jasmine · GitHub Jasmineでテスティング | fee…

最近気になるもの

大体 CUDA か GPU 関係.Boost.ODEIntが採択されました - Faith and Brave - C++で遊ぼうODEInt は常微分方程式を解くためのライブラリ. 無条件採択されたらしい. Thrust を使用して GPU で計算もできるとかなんとか.書いてるの反復法といくつかなので使い道…

guard-coffeescript と guard-shell で Coffeescript と jade を自動ビルド

jade だけだったら watch とか使えば良いと思うんですが, Coffeescript も自動ビルドしたい. しかしぱっと見 guard-jade とかなさそう.Coffeescript の自動ビルドは guard-coffeescript でなんとかして頂きたい. ということで jade については自分で書く. $ …

PhoneGap (Apache Cordova) について追記.

この間の闇鍋で PhoneGap について発表したのですが, あの後わかったり, 言うの忘れていたことがあったのでここに書きます. PhoneGap Build Adobe に置いてあるクラウドサービスで, Javascript や HTML をアップロードすれば, それを Adobe 側のサーバでビル…

第2回闇鍋プログラミング勉強会 各発表のスライド

ngx_small_lightを使った画像変換 @cubicdaiya さんの発表. ngx_small_light at 第2回闇鍋プログラミング勉強会 from Tatsuhiko Kubo Intel AVX で SIMD 入門 id:kawa0810 さんの発表. Yaminabe simd from kawa0810 ATL に見る黒魔術 id:egtra さんの発表. A…

第2回闇鍋プログラミング勉強会を開催しました.

第2回 闇鍋プログラミング勉強会 - Togetterまとめ * 9/17 追記: @sters9 さんがまとめてくれました!ありがとうございます!昨日9月15日に闇鍋プログラミング勉強会第2回を開催しました.当日は, 参加者が迷ったりするのはまあ今回の会場が初見の人はいいと…

ある変数がメソッドを呼び出せるかで SFINAE

C++

auto func(...) -> decltype(...) を使えば, 渡された変数がメソッドを持つか持たないかで SFINAE とかできる. #include <iostream> struct memory { std::string to_string() const { return "is memory."; } }; struct device { std::string to_string() const { ret</iostream>…

カーネル関数を分離して C++11 コードをビルド.

nvcc でないとビルドできないのはカーネル関数なので, ここと通常の C++ コードを分離してそれぞれビルドしたオブジェクトをリンクすれば, 普通に C++11 を使ったコードが(カーネル関数以外で)書けるようになる.後, CUDA を使うために必要なライブラリとか, …

わんくま横浜勉強会に参加したら発表してきた話.

わんくま同盟昨日行われたわんくま横浜, nyaocat さんが発表するとのことでふらっと参加するかーと思ったら, 当日 nyaocat さんが風邪で病欠になっており, たまたま居合わせた僕があおいさんに見つかってしまい代理発表させられるすることになりました.別に…

CUDA の CRS spmv についてのメモ

Efficient Sparse Matrix-Vector Multiplication on CUDA | NVIDIA の論文の、CRS spmv vector のメモ。CRS spmv の場合、1行に複数のスレッドが計算したほうが効率がよい。 しかしある行で各スレッドが計算した結果を全て足し算 (parallel reduction) をす…

第2回闇鍋プログラミング勉強会のお知らせ

ようやく会場とか日時とか決まりました。第2回 闇鍋プログラミング勉強会 : ATND日時:9/15(土) 会場:IIJ 東京本社 大会議室1(神保町)希望調査時からご登録いただいた方には ATND にメッセージをお送りしました。発表者がいないので誰か発表しましょう…

gettimeofday よりも clock_gettime よりも boost.chrono.Clock

実行時間を図るとき、posix 系列なら gettimeofday で実行時間を測っていた。だいたいこんな感じ。 #include <cstdio> #include <sys/time.h> double second() { struct timeval t; gettimeofday(&t, NULL); return t.tv_sec + t.tv_usec * 1e-6; } int main(int argc, char** ar</sys/time.h></cstdio>…

Boost.勉強会 #10 に参加しました

Boost.勉強会 #10 東京 - boostjpもう二日経ったけど書く。色々あったけど、最後に書くとして、各発表の感想。 Boost ライブラリ一周の旅 1.45.0 〜 1.50.0 C++Now! 2012 参加レポート local function については、「あれ、auto でラムダ式を束縛すれば良い…

疎行列格納形式の話

久しぶりに何かまともな記事を書こうと思ったので書く。自然現象をうまく計算可能な形に持っていくと大体連立一次方程式になる、らしい。で、連立一次方程式は次元数的に規模は違えど大体が要素の殆どが零要素になっている疎行列(Sparse Matrix) になる、ら…

OpenMPI で rsh を使って複数のマシンで実行

久しぶりに書く。ssh で繋いでもいいけど、パスワード打つのが面倒なので。 rsh の使い方 $(HOME)/.rhosts にマシン名と実行するユーザ名を書く machine1 krustf machine2 krustfこれで、 rsh を使って hostname コマンドが実行されれば OK. $ ssh machine2 …

闇鍋プログラミング勉強会 第2回 の参加者調査

というわけで、第2回が予定されたようです。第2回 闇鍋プログラミング勉強会 : ATND今回は参加希望調査。なぜかというと、今度借りる場所はある方が場所を提供してくれるかもということで、今場所を借りるための手続きやご相談をして頂いているのですが、ど…

nvcc で任意のコンパイラをバックエンドに指定する

バックエンドコンパイラに引数を渡すには -Xcompiler または --compiler-options というのは知ってましたが、バックエンドコンパイラ自体を設定する方法は知らなかったのでメモ。 $ nvcc --compiler-bindir=g++-4.6 hoge.cuどうも --compiler-bindir で指定…

関東 GPGPU 勉強会に行ってきました

関東GPGPU勉強会 : ATND先日のことです。参加者層が僕はよくわからなかったので、多分入門とかソフトな感じの勉強会なんだろうなと思って TL 流れてきた瞬間に参加ボタンを押したのですが、発表タイトルだけ見て非常にハードなことを感じました。実際発表聴…

<今更報告>株式会社 Aiming で働いています

最近色んな勉強会に行って、Aiming のシール配ったりチラシ配ったりしていますが、「そういえば krustf さん某A社でしたっけ!?」とか驚かれたりするので(しかも同じような感じで入った人からも言われたりするので)、一度記事にしておこうかな、というだ…

new iPad 買いました。

特に記事にすることでもないけど。new iPad 32GB WiFi モデルのホワイト買いました。アップル - iPad本当は5万だったんですが、店員の口車にだまされて Apple なんとかケアとかいう8800円のサービスに加入してしまったのと、AppStoreCard が同時購入で20%引…

Boost.勉強会 #9 つくばで発表してきた。

家に帰宅して早速書いてます。Boost.勉強会 #9 つくば - boostjpBoost.Multiprecision について僕が調べてみたことを全部書きました。Boost.Multiprecision (SlideShare)当日の発表では、結構早く進んでしまったので章の区切りごとに質問時間をとってみたの…

今週末は Boost.勉強会で発表してきます

Boost.勉強会 #9 つくば : ATND今週末になりました Boost.勉強会 #9 つくば です。 今回はこのブログでも書いた Boost.Multiprecision について、もっとまともに調べたことを話します。 使い方とか、分かったこととか、ML 読んでの内容とか。GMP, MPFR とか…

闇鍋プログラミング勉強会の資料とその他

闇鍋プログラミング勉強会 : ATND 今更ですが、まとめました。 CUDA ざっくり入門詐欺 CUDA ざっくり入門詐欺 View more presentations from krustf 怪しい Windows プログラミング 怪しいWindowsプログラミング View more presentations from nagoya313 機…

Boost.Multiprecision を調べてみた

Faith and Brave - C++で遊ぼう<2012年4月6日に調査>Boost.Multiprecision が、なんとなく良さげなライブラリに見えてきたので、落として調べてみました。ただの調査メモなので、使い方的な入門は書いてないです。 gcc で使いたい どうもテスト環境は Wind…

Boost.ProgramOptions 備忘録

ちょっとコマンドラインでぽちぽちやる必要がでてきて、解析するのがめんどくさいので Boost.ProgramOptions でも使おうと思います。このライブラリはビルドしないと使えない(ヘッダオンリで利用できない)ので、そこは注意して下さい。名前空間は長すぎて泣…

闇鍋プログラミング勉強会を行いました。

昨日、東京の某所某大学で闇鍋プログラミング勉強会を行いました。当日、闇の軍団の力か、東京では強風が吹き荒れ、JR各線が運転見合わせや徐行運転などで大幅にダイヤが乱れ、30分遅れた状態に加えて参加者がこれなくなりキャンセル者が発生という自体に陥…

CUDA プログラミング入門みたいなのが NVIDIA Japan から出ていた。

NVIDIA JAPAN - YouTube真面目に全部は見ていませんが、どこかの会社の人が担当してビデオを撮っているらしく、エディタを叩いてプログラムを作っていく様はまるでライブコーディングでした。基礎的な部分もある程度しっかり紹介しているらしく、これが後数…

3月31日(土) 勉強会、します。

色々ありましたが、場所が確保できたので勉強会をしたいと思います。闇鍋プログラミング勉強会 : ATNDもともとはテーマが「C++」だったんですが、それ以外のほうが面白いということで、「プログラミング全般」ということにしました。恐らく主テーマは「ごっ…

勉強会テーマについてアンケート募集

というわけでこの間勉強会開くと言っていたのですが、会場さえ確保できればほぼ完了な気がするので、今のうちにどういうテーマのニーズがあるのか調べてみたいと思います。投票 - IT系勉強会で、これなら参加したい!&発表したい!と思えるテーマを教えてく…

gcc 4.5をビルド

C++

CUDA 4.1でgcc 4.6がビルドできると思ったらただの勘違いよろしくgcc 4.5までしか対応していないとのことでしたので4.5をビルドしなおしました。この間のgcc 4.6をビルドしたのとそこまで変わりません。変わったのは、gccのディレクトリ内に適当なディレクト…

CUDA 4.1でGCC 4.6が使えると言ったな、アレは嘘だ!(多分)

タイトルどおりです。つい2週間前にやったときにはエラーもなくビルドできたはずなのですが、今になってエラーになりました。どうしてかはよく分かりませんが・・・。GCC 4.5はサポートされているようなので、そちらはばんばん使いましょう。

gcc 4.6.2とOpenMPIとBoost.1.49.0をインストールする

ただのメモ書きです。Boost.1.49.0はBoost.MPIも使えるようにしておく。 CentOS 6.2 Core i7 3GHz (多分) 12GB RAM (多分) gcc 4.6.2のビルド 今回は /usr/shareの中にgcc-4.6というディレクトリを掘ってそこにインストール。まず必要な3つのライブラリをイ…

予告)C++の勉強会しますか

1徹していて若干気分がアレです。それはともかく、前にアキラ先生から「どっか小規模な勉強会に使える会場ないか」みたいな話があったので、調べてみると僕が通っている学部のキャンパスはどうとでもなりそうということだったのを思い出しまして。「せっかく…