にゃははー

はへらー

Concurrent/Parallelism

スレッドアンセーフなshared_ptr

多分みなさんはstd::shared_ptrを使ってるとシングルスレッドで使うんだからスレッドアンセーフでいいのにとか思うことが良くありすぎて再実装したくなると思います。ならない方はなって下さい。設計が悪いと言う人はrecursive mutexを今後使わないで下さい…

futureで欲しいutility

つらつらとfutureを使ってたらこういうのが欲しいというのがあったのでまとめ。 と言っても2つしか無いけど (static_)future_cast future<T>のcastが欲しいという話。std::(static|dynamic|const)_pointer_castがあるんだからfutureも欲しくないですか?ってい</t>…

Boost.Coroutine with 1.55.0 Beta 1 RC

もうBoost 1.55.0の時季となったわけで、リリースノートの翻訳作業も進めている。 Boost 1.55.0のリリースノート翻訳を更新 - Faith and Brave - C++で遊ぼう今回はBoost.PredefというBoost.Configみたいな感じのものが来る。 どうせ誰かが解説するし、変更…

Boost.Contextのnamespace

また変わりました...Boost.Contextの怒涛の変更 - にゃははー でboost::contextsからboost::ctxに変わったことは記憶に新しいですが、boost::ctxというnamespaceは命名規則に則ってないのではという議論が巻き起こりました。 Boost mailing page: [boost] [c…

Boost.Contextのこととか話した

Boost.勉強会 #9 つくば - boostjp Boost9 session 並行と並列とスレッド 前半はなんか概念的なことばっかり話したと思う。しかも後半でほとんど関係なくなったし。 とりあえずユーザースレッドってものを導入したかったのだと思う。多分。カーネルスレッド…

Boost.Contextの怒涛の変更

Boost.Contextがtrunkに入ってだいぶ経ちましたが、ここのところ非常に大きな変更が入っています。 ※今後も更に変更されるかもしれないので、リリース時にはこのエントリも役に立たないかもしれないです。 これまでの流れ 内部実装とかユーザから直接関係な…

libstdc++で_GLIBCXX_USE_NANOSLEEPがないとstd::sleep_for/std::sleep_untilが定義されない件について

結構前から議論が上がってて見てたけどそういえば書いてなかったので今更ですけど...例えばLinux等POSIX系OSで #include <chrono> #include <thread> int main() { std::this_thread::sleep_for(std::chrono::seconds(1)); } としてもGCCは hoge.cpp: In function ‘int main(</thread></chrono>…

Steven Watanabeの神コミット in Boost.Context

Boost.Contextがtrunk入り - にゃははーでBoost.Contextのビルドオプションが面倒だと言ったが、我らがSteven Watanabeがやってくれた。svnではrev.77196,ftp.tsukubaのgitでは6d06ffddf135088328525bb677c0c0e0687c917dだ。このコミットが何を意味するか端…

Boost.Contextがtrunk入り

タイトルの通りBoost.Contextがsvn trunkに入りました.多分1.50.0でのリリースになるのではないでしょうか. 先日githubから突如としてリポジトリが消え去っていましたが,ようやくtrunkに入るまでになったようで何よりです.svnはrev.76974で,ftp.tsukubaが出…

【解決】Intel Atom環境でBoost.ContextがSEGVる

普段VAIO Z(Intel Atom Z550 + Ubuntu 10.10)で開発してるわけなんだけど、Boost.MMMを作るにあたってBoost.ContextがAtom環境でSEGVってくれる。 具体的にはboost_fcontext_startでboost::contexts::detail::trampolineに行く時にtrampolineの第1引数の値が…

Many-to-Many thread Modelのライブラリを書いてみてる

Boost.Context github現在Boost.Contextのmini reviewが実施されてます。これはコルーチンやファイバーを実装するベースとなるコンテキストスイッチを提供します。Boost.CoroutineやBoost.Fiberが頓挫してる中レビューまでこじつけたライブラリです。既存のB…

【解決済】VDPAUのOutput Surfaceに書き込めない?

いま、VDPAUに犯されまくってるのは周知の事実として、Output Surfaceに書き込もうとすると蹴られるんですが、何か情報ないですかね。つまり int width; uchar4 *dev_ptr; kernel<<< ... >>>( dev_ptr, ... ); ... VdpOutputSurface surface; cudaGraphicsRe…

任意の数のスレッドを同期する方法無いですかね

condition variableを相互に使ってとかすごく頭悪い方法やりたくないので、なんかスレッディング周りでいい文献あったら教えてください。

Boost.Test(boost/test/unit_test.hpp) with nvcc

segfaultします。

cudajpのサイトを作りました

cudaに日本のコミュニティってないよね - Flast?なにそれ、おいしいの?でGroupsは作りましたが、なんかwelcomeメッセージすら書けないとかいうプギャーな使用に変更されてるっぽいのでGoogleSitesで簡易的にサイト作りました。 CUDAjp Groupsのメンバなら…

cudaに日本のコミュニティってないよね

だからつくろうと思う。 Google グループなので興味のある人は入ってみてください。初心者・上級者・未経験問いません。とりあえず未経験でもCUDAをやってみたいとかそういうのであれば歓迎です。 また、勉強会を主催したいとかそう言うのもあればいいですね…

CUDAにおけるBoostをつくるという意気込みで頓挫するプロジェクト

を細々とやろうかと。例えばCUDAのサードパティー製ライブラリと言えばtrustが有名だが、これはHostレベルでSTLっぽくできるようにするライブラリである。(と思う というのも私は軽く眺めただけなのでよく知らないで、どっちかって言うとDeviceレベルのコー…

祭りだそうで

0から1000までの0の数を数える ->無駄に並列化してみる ->TBBで遊んでみたよ(12) ->並列化?ハナアルキしてやんよ! >いまここ 今のご時世CPUで並列化とか...ってことで書いたんだけどレジスタが11も使われてて悲しい・・・ あと1つ減らせたら理論値で実行効…

Driver APIのリンク方法が分からなくなった

前は/usr/local/cuda/libをldに渡して-lcudaすればDriver API使えた気がするんだが・・・ nvccはほんと黒魔術で.aが存在しないのにRuntime APIにはリンクできる。んーwindows版だとcuda.libとかcudart.libがあるんだけどな・・・Driver APIがgccから直接リン…

GPUコンピューティング2010に行ってきた

んだけど、完全にアウェー状態ですごく悲しかった。 それしか言えないorz

vimのsyntaxが更新されないので...

だれかCUDAのやつを更新してあげてください。と言っていてもダメだと思うけどいつものように他人任せ。思いついたのはローカルに書き足したりしてる。気が向いた人がいたら下のやつを適当に修正して投げてあげてください。 # HG changeset patch # User Kohe…

CC2.1とかGTX460とか

出ました。でもCC2.1についてはリファレンスに特に書いてなかったんだけど、どうやら出力されるPTX/CUBINが若干変わるらしい。GTX460用に。残念ながらPTXの仕様は一回も読んでなので詳しいところはわからんけど、32CC/SM(CUDA Core par SM)から48CC/SMになっ…

CUDA3.1をざっとまとめてみる

簡単にprogramming guide 3.1を読んでみたので備忘録も兼ねて軽くまとめる。コード量とかあるので基本Runtime APIで。あと、結構落としてる箇所があると思うけど、まぁキニシナイ。

CUDA3.1toolkitの対応ディストリ

対応するディストリのバージョンが上がりました。前見たときは代わってなかった気がしたんだけどな。 ディストリ CUDA3.0 CUDA3.1 Fedora 10 12 Ubuntu 9.04 9.10 RedHad 5.3(?) 5.4 OpenSUSE 11.1(?) 11.2 RedHadとOpenSUSEはうろ覚えなので変わってなかっ…

CUDA3.1

はやいですねーCUDA3.1がリリースされました。今回はデバイスコードの中にprintf()を埋め込めたり、Fermiで__device__の関数ポインタを取れたり再帰できたりとゆがみないですねー。 まぁFermi持ってないので悲しいですが。バージョン上げるのは嬉しいんだけ…

これ何がいけないんだろう

#include <stdlib.h> #include <iostream> using namespace std; int main( void ) { float3 h_ptr[ 1024 ][ 1024 ]; float4 *d_ptr = NULL; if ( cudaMalloc( &d_ptr, sizeof( float4 ) * 1024 * 1024 ) != cudaSuccess ) { cout << cudaGetErrorString( cudaGetLastError() ) <</iostream></stdlib.h>…

cudaMalloc3Dの上限

cudaMalloc3Dを試しに使ってみたらcudaErrorMemoryAllocationが返ってきた。extentが小さい場合はアロケート出来るらしいんだけど、各軸がある程度以上だとどうやら失敗するらしい。 アロケートの上限サイズについてはcudaMalloc3DArrayには各軸[0,2048)(3D)…

そういえば

そういえばあれだけ騒いでた(?)AviUtlのプラグインについてですが、そろそろ公開するかもしれないという脳内情報を聞いた気がするのでそれについて。 とりあえず未だDL出来るようにはなってないけどそろそろ出来るはず。いろいろめんどいんで http://www.ac-…

processとthreadとfiberと

並列化をCPUレベルでやろうとすると必ず出てくるthreadとprocess。 明らかに動作のレベルというか粒度の違うこれらはカーネル側のコンテキストスイッチだったり使ってて大量に動かすと重くなると言われている。(記憶の限り)これらの他に最近知ったのがfiber…

やっぱ3.0のせいだろうか・・・

昨日マンデルブロ集合に関する記事を書いたが、cuda3.0のドライバにしてからやけに描画まわりが重くなる。どうもIOが多い様で、最悪CPUの50%を持ってかれる。gridderなFlastには痛い。ということで2.3に落としてきます。 どうせ3.0の機能なんか使いこなせな…