C++

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

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

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 は …

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 に以下のように書きます.…

ある変数がメソッドを呼び出せるかで 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 さんが風邪で病欠になっており, たまたま居合わせた僕があおいさんに見つかってしまい代理発表させられるすることになりました.別に…

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 でラムダ式を束縛すれば良い…

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

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

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

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

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

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

CUDAでBoostを使ってみたかったんです

よくよく考えると、最近Boostをほとんどつかってないなーと思いました。ちゃんと言うと使いどころが出てこなかったんだと思います。 最近はCUDAをさわりつつ、という感じだったのでBoost.MPIとか使えると嬉しいなと思っています。なので少しずつBoost.MPIの…

Texture Memory使いたかったから勘弁してください

この記事書いてる途中にOpera for Ubuntu11.10が2度クラッシュしてデータ消えたのでもうUbuntuで記事書いてるときにOperaは使わないと心に決めました。もう書くのめんどくさくなってきたのでさくっと書きます。CUDAにはTexture MemoryがあってTexture Unitか…

Effective C++やC++11やテンプレートを教えてみた。

C++

某研究室の院生の人に飲み会の席で冗談混じりに「教えて」とか言われたので、試しにやってみました。CやJavaを学んだ+テンプレートは型Tをfloatやdoubleに置き換えて使っている程度ということだったので、まあEffective C++とかC++11とかテンプレートのテク…

メモ:OpenGL Interoperability の話

長いので Interop にして話す。OpenGLとの相互運用のこと。Direct3Dとも可能だが、Direct3Dはいかんせん初期化が面倒なので使いたくないので無視。CUDA C Programming Guideの3.2.11辺りにGraphics Interoperabilityのページがある*1のでそれと、SDKのサンプ…

メモ:neocomplcacheでC++のインクルード補完

なぜかすごい躓いたのでとりあえずメモ。 .vimrcでg:neocomplcache_include_paths.cppに設定する方法もあるようだが、何かうまくいかないのでとりあえずpathに追加する形で。 " ~/local/includeにboostのインクルードディレクトリが置いてある set path+=$HO…

メモ:CUDAをWindows + Visual Studio 2010で使う

以下のページを見たりして、色々設定してビルドできるようにしたのですが、VisualStudioでビルドする意味ってあんまりないな、と思ったりします。既存のVSプロジェクトにCUDAコードを追加する方法 - PukiWiki for PBCG Lab CUDAを使う:tech.ckme.co.jp例え…