DTV関係のツール追加
DTV関係のツールとして、SimpleDiskSpaceManagerを追加しました。
指定ディレクトリで、指定された空き容量が確保されるまで古いファイルから順に削除していくソフトです。コマンドラインから引数を指定することで実行します。常時監視ではなく好きなタイミングでファイル消去、容量確保をしたい方におすすめです。
DTV関係のツールとして、SimpleDiskSpaceManagerを追加しました。
指定ディレクトリで、指定された空き容量が確保されるまで古いファイルから順に削除していくソフトです。コマンドラインから引数を指定することで実行します。常時監視ではなく好きなタイミングでファイル消去、容量確保をしたい方におすすめです。
ご無沙汰です。いろいろと楽しいおもちゃを買ってしまって、更新サボってました!
DTV関係のソースとスクリプトをアップしました。
http://gura7.com/develop/dlpage/dtv/
完全に自分の都合で作ったソースとスクリプトですが、もしかしたら誰かの役に立てるかもってことで公開しときます。
そこで公開しているperlは初めて触ったのですが、正規表現は超便利ですね。
文字列操作はもう正規表現が無いとやってられないぐらい便利です。驚いた。
リンク先にも書いてますが、DTV関係の質問には答えられません。そこんとこよろしく。
CUDA エクササイズ3は配列の反転。
単一ブロック、複数ブロック、複数ブロック高速版があった。
単一ブロック
// Part 1 of 1: implement the kernel
__global__ void reverseArrayBlock(int *d_out, int *d_in)
{
int in = threadIdx.x;
int out = blockDim.x - 1 - threadIdx.x;
d_out[out] = d_in[in];
}
複数ブロック
// Part3: implement the kernel
__global__ void reverseArrayBlock(int *d_out, int *d_in)
{
int inOffset = blockDim.x * blockIdx.x;
int outOffset = blockDim.x * (gridDim.x - 1 - blockIdx.x);
int in = inOffset + threadIdx.x;
int out = outOffset + (blockDim.x - 1 - threadIdx.x);
d_out[out] = d_in[in];
}
複数ブロック高速版
// Part 2 of 2: implement the fast kernel using shared memory
__global__ void reverseArrayBlock(int *d_out, int *d_in)
{
extern __shared__ int s_data[];
int inOffset = blockDim.x * blockIdx.x;
int in = inOffset + threadIdx.x;
// Load one element per thread from device memory and store it
// *in reversed order* into temporary shared memory
s_data[blockDim.x - 1 - threadIdx.x] = d_in[in];
// Block until all threads in the block have written their data to shared mem
__syncthreads();
// write the data from shared memory in forward order,
// but to the reversed block offset as before
int outOffset = blockDim.x * (gridDim.x - 1 - blockIdx.x);
int out = outOffset + threadIdx.x;
d_out[out] = s_data[threadIdx.x];
}
不思議なのは高速版で、sharedメモリ(ブロック内でのみアクセス)を介することで高速化しているらしい。
普通に見たらsharedメモリ挟む分速度が下がりそうだけど、ブロック単位にメモリアクセスを分ければ高速になるのだろうか。ぐぬぬ。
まぁこれで一通りのエクササイズが終了しました。
次はCUBLASについて調べようと思います。
続いてエクササイズ2、カーネルの起動いきまーす。
ソース一部抜粋
// Part 3 of 5: implement the kernel
__global__ void myFirstKernel(int *d_a)
{
int idx = blockIdx.x*blockDim.x + threadIdx.x;
d_a[idx] = 1000*blockIdx.x + threadIdx.x;
}
// Part 2 of 5: configure and launch kernel
dim3 dimGrid(numBlocks);
dim3 dimBlock(numThreadsPerBlock);
myFirstKernel<<<dimGrid,dimBlock>>>(d_a);
// block until the device has completed
cudaThreadSynchronize();
※以下私なりに丸めたちょっと怪しい表現を使います。正しい表現は本家ページで!
CUDAでは「関数名<<<グリッド内のブロックの数、1ブロックあたりのスレッドの数>>>(引数) 」で並列カーネル(デバイス上で実行される機能)を呼び出す。
CUDAで書いた関数(この場合myFirstKernel)が1つのスレッドに当たる。1度に実行できるのは1つのグリッドだけ。従って、一度に実行されるスレッド数(myFirstKernel)は、グリッド内のブロックの数(numBlocks)×1ブロックあたりのスレッドの数(numThreadsPerBlock)となる。
ちなみに、グリッド内のブロックの数、1ブロックあたりのスレッドの数は、2次元での表現も可能(ブロックあたりスレッド数は3次元まで可能)で、画像屋さんにはとても助かる。
また、カーネル内では、以下の変数が自動的に定義されており、アクセスができる。
dim3 gridDim;
ブロックのグリッドの次元(最大で2次元)
dim3 blockDim;
スレッドのブロックの次元
dim3 blockIdx;
グリッド内のブロックのインデックス
dim3 threadIdx;
ブロック内のスレッドのインデックス
てなわけでスレッドのインデックスとしては、
int idx = blockDim.x * blockIdx.x + threadIdx.x;
が1次元の並列カーネル呼び出しでは定番となる。
以上、次もエクササイズ!
CUDAをかじろうかと思う。
CUDAってのはGPGPUプログラムのための開発言語、開発環境のことで、まぁ詳しくはこちらを参照ってことで。
GPGPUに関してはこれから出るOpenCLの方が便利そうですし普及しそうだけど、そのベースになるCUDAも勉強しといて損はないかなと。
CUDAは以前サンプルを読んだりもしていたのですが、かなり断片的にしか分かっていないので今回は改めてお勉強。
基本的に本家本元NVIDIAのCUDAのページがとても親切に教えてくれるので、それを追う形でいこうかと。
アーキテクチャはこんなん。

NVIDIAHPより
ここでは実装に重きを置いて書くことにするので、基本的なCUDAの仕組みはここの「CUDA ベーシックプログラミングガイド」で学んでくださいな。というか私も今はこのページをなぞるだけ。
以前よりSDKのバージョンも上がってるし、動かないサンプルがあったので開発環境構築から。
グラボ:GeForce9600GT
OS:Vista 32bit
ここから
1. 最新CUDAドライバ(185.85)
2. CUDAツールキット一式(2.2)
3. CUDA SDKコードサンプル(2.21)
をダウンロード・インストール。
nVidiaのページの学習コースに乗っかる。第1巻: CUDAプログラミング入門 (日本語版)ってとこ。
・エクササイズ1: ホストとデバイス間でのコピー
ホストはCPUで、デバイスはGPU。ホスト-デバイスはGlobal Memoryを通じてデータをやりとりする。大容量だけど遅いから使用は最小限に抑える。
課題部分のソースを抜粋
// Part 1 of 5: allocate device memory
size_t memSize = dimA*sizeof(float);
cudaMalloc((void**)&d_a, memSize);
cudaMalloc((void**)&d_b, memSize);
// Part 2 of 5: host to device memory copy
cudaMemcpy(d_a, h_a, memSize, cudaMemcpyHostToDevice);
// Part 3 of 5: device to device memory copy
cudaMemcpy(d_b, d_a, memSize, cudaMemcpyDeviceToDevice);
// Part 4 of 5: device to host copy
cudaMemcpy(h_a, d_b, memSize, cudaMemcpyDeviceToHost);
// Part 5 of 5: free device memory pointers d_a and d_b
cudaFree(d_a);
cudaFree(d_b);
とこんな風に、ホストとデバイスのメモリを意識して使い分ける。
おそらく、対象データをホストからデバイスにコピー→デバイス内で演算→結果データをデバイスからホストにコピーの流れになる。
今回は以上。次もエクササイズを追っていきます。

gura7.com
gura7.comみたいなデスクトップっぽいページを作る方法。
まず、mb.ideas.repositoryにアクセス。gura7.comはこのページをベースに作る。mb.ideas.repositoryは様々なjQueryプラグインを公開してくれているところで、今回のデスクトップっぽいインターフェイスの他にも面白そうなプラグインがいっぱい。
このデスクトップっぽいインターフェイスを作っているプラグインはmbContainersPlusなので、これをダウンロードする。
ダウンロードしたものにサンプルが入っているので、これを元に作っていく。(今回はさらに楽をするため、mb.ideas.repositoryのファイルを元に作った)意外に難しくはなく、ウィンドウは実は移動可能なdivタグであることに気づく。ユーザはまとまったdivタグをhtmlに追加し、class属性でウィンドウのスタイルを指定するだけ。ウィンドウのスキン(色など)はcssで指定できる。
<div class="containerPlus draggable resizable {buttons:'m,c,i', icon:'browser.png', skin:'white', width:'500',iconized:'true', dock:'dock', grid:100}" style="top:100px;left:400px">
<div class="no"><div class="ne"><div class="n">preiconized container</div></div>
<div class="o"><div class="e"><div class="c">
<div class="mbcontainercontent">
<div class="evidence">
<h3>And this is a preiconized container!</h3>
<p>to preiconize containers just add the param <span style="font-weight: bold;">iconized:'true'</span></p>
</div>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras metus. Maecenas justo elit, lacinia sit amet, cursus ut, sagittis sed, eros. Suspendisse potenti. Maecenas nec nisi. Donec vestibulum sollicitudin tellus. Sed consequat pellentesque ante. Vestibulum turpis quam, vulputate nec, nonummy convallis, ultrices congue, ligula. Ut rutrum leo et orci. Proin pharetra. Nam non sem ut eros fringilla ornare. In ullamcorper lorem eget ipsum. Suspendisse semper enim in arcu cursus consectetuer. Suspendisse potenti. Proin libero eros, adipiscing quis, volutpat in, ultrices ut, lacus.</p>
<p>Nulla facilisi. Vestibulum vel magna in ante lobortis semper. Integer posuere justo et urna. Vestibulum sit amet sapien ut quam tempor fringilla. Fusce a neque a enim mattis dapibus. Ends with a paragraph element!</p>
</div>
</div></div></div>
<div >
<div class="so"><div class="se"><div class="s"> </div></div></div>
</div>
</div>
</div>
これでデスクトップっぽいインターフェイスはできあがり。mb.ideas.repositoryみたいな派手なエフェクトは本家を参照。私もソースコードを頂いて真似しただけなので。
さらにブログのRSSを読み込んで、ウィンドウを生成するスクリプトも追加している。RSSの読み込みはjFeedプラグインを使用。
function makeContainersFromRSS(url){
$.getFeed({
url: './proxy.php?url=' + url, //proxy.phpはダウンロードしたファイルのもの
success:
function(feed){
$.each(feed.items,
function(i,item){
if(i < 5){
$("<div/>")
.attr({id:item.title, width:"400", height:"", buttons:"m,c", icon:"blog.png",skin:"white"})
.css({left:-2500})
.addClass("containerPlus")
.addClass("draggable resizable")
.addClass("blog")
.append(
$("<div/>").addClass("no").append(
$("<div/>").addClass("ne").append(
$("<div/>").addClass("n").html("<a href=\"#\" onclick=\"$(this).parents('.containerPlus').find('.minimizeContainer').click();\">"+item.title+"</a>")
)
).append(
$("<div/>").addClass("o").append(
$("<div/>").addClass("e").append(
$("<div/>").addClass("c").append(
$("<div/>").addClass("content").html(
(item.image?"<img src=\""+item.image+"\" alt=\""+item.id+"\" />":"")+
"<p>" + item.description + "</p>" +
(item.link?"<p style=\"float:right;\"><a class=\"button special\" href=\""+item.link+"\"><span>"+ "続きを読む" +"</span></a></p>":"")
//(item.link?"<p style=\"float:right;\"><a class=\"button special\" href=\"#\" onclick=\"loadPage('"+item.link+"'"+(item.type=="develop"?",'"+"blog"+"'":"")+")\"><span>"+ "続きを読む" +"</span></a></p>":"")
)
)
)
)
).append(
$("<div/>").append(
$("<div/>").addClass("so").append(
$("<div/>").addClass("se").append(
$("<div/>").addClass("s")
)
)
)
)
)
.appendTo("body")
.buildContainers({
containment:"document",
elementsPath:"elements/"
});
}
}
);
}
});
}
Twitterからの読み込みも上記を流用すれば可能。RSSは便利だわほんと。
JavaScriptはずっと敬遠してきて(なんかソースが汚いから)触ったことがなかったけど、意外なほどあっさりできてしまった。jQueryのおかげなのか、プラグインが充実したせいなのか分からないが、すごく読みやすくなっている気もする。楽しいー。
FC2からWordPress(ここ)にお引っ越ししてきました。WordPressはさくらインターネットでサーバーをレンタルして動かしています。やっぱフォーマットあわずに表示が変になっちゃう記事とかあるけど許してね。
ついでにダウンロードページもWordPressで構築。今後も追加が楽になりそう。
さらに友人に誘われついにtwitterの軍門に下ってしまう。やってる人いたらフォローしてね!外人のフォローとか楽しいかも。
そしてそれらを束ねるサイト、gura7.comを作成!これが一番苦労した!jQuery使ってAjaxなサイトができました!といってもmb.ideas.repositoryのまねをさせてもらっただけですけど。RSSを読み込んで表示するようにしたので、このブログの更新とtwitterの更新がそのままgura7.comに反映されます。自分ではほとんどjavascriptのコードは書かず。やりたいことがあると、誰かがどこかで助けてくれる。自分でこんなサイトが作れるとは、いい時代になったもんじゃー。
大学入学時(5年前)買ったノートPCを分解してお掃除した。
機種はLavie RX LR700/8。
こいつとは長い付き合いで、1年前デスクトップ買うまでのメインマシン。
高速化を狙ってメモリを1GB追加(512KB→1.5GB)
OSがおかしくなったのを機にHDDを若干高速のものに交換
など、いろいろとお世話して今もサブマシンとして活躍中なのであります。
こんな風にOS初期化+メモリ増設+HDD交換すれば5年前のPCでも十分使えますぞ!
今日久々に電源をつけたところ、
香ばしいかほりがして、
常にファン全開、
異常なほど発熱、
等の症状が現われたので、ほこりが原因と判断、お掃除することに。
HDDの交換とメモリの追加は開ける場所が違うので、本格的な分解お掃除は実はこれがはじめてです。
参考サイト様はこちら
ではでは、

分解!

ずばぁん!

ぎゃああああああああああああ((((;゚Д゚)))

きれいになりました(*´Д`)
これで一安心。ながーく使って保証期限が切れちゃったノートは分解お掃除おすすめです。
もちろん自己責任でね!
ヤックデカルチャー!
YOKO KANNO SEATBELTS「超時空七夕ソニック」
~次回公演は22世紀を予定しております。~
に行ってきました!
当日午前に用事があったので、東京まで飛行機で飛んでいきましたよ!
⊂二二二( ^ω^)二⊃
作曲家菅野よう子さんの音楽が好きになったのは中学3年でした。
かれこれ9年間願い続けていたことがついに現実に・・・!
夢としか思えない3時間でした。
生の菅野よう子さんは、とてもお茶目!
音遊びしたりひよこの格好したりw
そして弾く!踊る!オーケストラ指揮する!そしてなんと・・・なんと・・・歌う!
そうしてライブ中ほとんど表に出てるのに、ずっと笑顔!楽しんでる!
なんでこんな元気なんだ!すげぇわ。最強だわこの人。
そしてそして。
SEATBELTSの皆さんの演奏、サイコーに格好良かったです。
TANK! が生で聞けるなんて!サックス格好ええ!パフォーマンス楽しかった!
オーケストラ曲はワルシャワ国立フィルハーモニー管弦楽団が!
最後のメドレーアツい!ワルシャワのSMSは贅沢すぎw
そして超豪華なボーカリストの面々。
まあやの声は生でも綺麗で透き通っていました。
まめぐは可愛かった。歌も踊りも!「1,2,3,キラッ☆」
May’nの歌は力強くて鳥肌が立ちました。「もってっけー!」
山根麻以さん!姉さんの歌はしみるぜ!
Origa!あなたの歌は全部鳥肌立つ!
スティーブ!歌も顔もかっけー!イケメン!
スコット!ほっとする歌ありがとう!
そして、Gabriela Robin、まさかあなたがあなただったなんて。
あなたの歌を生で聞いた人間の一人になれたことを感謝します。
とんでもなく豪華で、とんでもなく濃密だったライブは、あっという間に過ぎてしまいました。
あぁ、生きてて良かった。
次は22世紀かぁ。
※余談:和服のおじさまがいると思ったら京極夏彦先生でした!

ひよこ隊長!

さいたまスーパーアリーナ@帰り!
とんでもないものを見てしまった。
昨日映画を見てきました。

ヱヴァンゲリヲン新劇場版:破と、
トランスフォーマーリベンジと、
・・・ヱヴァンゲリヲン新劇場版:破。
2回見てしまいました。
いやほんまとんでもねーものを見てしまった。
圧倒されっぱなし。興奮しっぱなし。鳥肌立ちまくり。面白すぎて涙目。
【!ネタバレ注意!】ヱヴァンゲリヲン新劇場版検証まとめwiki【!ネタバレ注意!】読んでからもう一度見ようかな。
最近のコメント