nvccとgccでのオブジェクトファイルのリンク

ねむいですね。
最近ブログのネタがないので、しょーもない内容で記事ひとつ。すぐ↓の説明さえ読んでわかるならそれ以下は見る必要ないですww

さて、CUDAコンパイラnvccの吐くオブジェクトファイルは普通にgccの吐くのと同じELF形式ですので、デバイスコードを記述したソース(*.cu)をnvccで-cオプション付きでコンパイルして出力したオブジェクトファイルとgccで出したオブジェクトファイルをリンクすることができます。

mainから直接nvccを通さないために、カーネルを呼び出すフロントエンド関数を用意

void a_cuda_kernerl_frontend();

デバイスコードがこちら

#include "a_cuda_wrapper.h"

__global__ void cuda_kernel()
{
}

void a_cuda_kernerl_frontend()
{
	cuda_kernel<<<1, 1>>>();
}

そしてnvccを通さないmainがこちら

#include <iostream>
using namespace std;

#include "a_cuda_wrapper.h"

int main()
{
	a_cuda_kernerl_frontend();
}

これで

% g++ -c main.cpp
% nvcc -c kernel.cu
% nvcc main.o kernel.o
% ./a.out

リンクするときにg++じゃなくてnvccを使いましょう。当然ですね。

これで、C++ベースのでかいシステムの一部としてCUDAを用いることもできますね!!
これができることくらい誰でも知ってると思うんだけど、実際にやってるサンプルて見ないなぁと思って(mainまで*.cuに書いてある)
(そうですサンプルにするほどのこともないからです

LinuxでのeclipseのPleiadesによる日本語化のメモ

設定としては全く難しいこともめんどくさいこともないけど,いっつもやり方わすれてあれれってった末にどうせ英語でも困らないからいいやって放置しちゃってるので,この際メモ.

Windows/Mac版eclipseでも手動で日本語化する手順はいっしょなんじゃないかな?未確認ですが.
これからeclipse導入するというWindowsの人であればpleiadesサイトにある日本語化済みのを落としてくればいいと思います.

まずPleiadesを落としてきます.
http://mergedoc.sourceforge.jp/#pleiades.html
ここの最新版とか安定板の方を.All in Oneは違います.

で,これをeclipseのルートに展開します.
つまり,展開して出てくるpluginsとかfeaturesディレクトリで,eclipseルートにあるplugins,featuresを上書きしちゃうような位置で.

んで,eclipse.iniに

 -javaagent:plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar

を追記.

これでおk

boost::ublas::bounded_vectorを使うときは少し気をつけてねという話

この記事は,Boost Advent Calendar 2011の14日目の記事です.
(2時間近くも遅刻してすみません><)

スキルはまだまだですが,それでももうboostが無いと生きていけない体になってしまいました.
そういえば魔導書Vol2id:kikairoya先生の章(一番最後ですね)あたりは,ホントに「boostを使い倒す!」かんじがして最高に読み応えがありました.ぜひお読みください.

さて,本来はこのアドベでは無難に「あまり日本語情報の出回ってないライブラリを(ほとんど翻訳で)紹介する」つもりだったんですが,意外とネタ探しにつまづいたので,方針転換して僕が引っかかってしまった落とし穴を紹介することに.
筋違いなことを言ってたら,たぶん言ってますが,ツッコミをお願いします.
ホントに不当なdisがあったら全力で謝罪記事を書かせて頂きます….

(2011.12.15 12:30) 編集上のミスについて指摘をいただいたので訂正

Continue reading

sshのXForwardingでGLUTなプログラムが実行できない場合の設定

どうも,昨日で22歳になりました.もはやアラサーですよアラサー.

sshのXForwardingでGUIなプログラムをリモート実行できますね.すごく便利です.
そのやり方については他を参照のこと.リモートのsshd_configのX11Fowardingをyesにしてssh -Xで入るだけです.

で,ふつうのXプログラムはできるのにGLUTなプログラムができなくて困ってました.
症状としてはこんなかんじ

% aglutprog.out
freeglut (aglutprog.out):  ERROR:  Internal error <FBConfig with necessary capabilities not found> in function fgOpenWindow
X Error of failed request:  BadWindow (invalid Window parameter)
  Major opcode of failed request:  4 (X_DestroyWindow)
  Resource id in failed request:  0x0
  Serial number of failed request:  27
  Current serial number in output stream:  30

解決策は

% export LIBGL_ALWAYS_INDIRECT=1

環境変数設定が必要だったんですね.非リモート時の場合には影響ないので,zshrcにでも書いちゃいましょう.

なお,手元の環境はDebian GNU/Linux 6.0.3です.

Debian SqueezeでFlash PlayerとかAdobe Readerみたいな非フリーなパッケージを入れる

debianは完全にフリーなOSを目指してる関係でプロプライエタリなパッケージは標準では提供されないです。
(ubuntuはmp3系とかみたいにそういうのもガンガン最初っから入れられますね)

apt-lineをちょっといじくる(/etc/apt/sources.listを編集する)と、準標準?とでも言うんでしょうか、そういうパッケージを入れられます。

diffをとるとこんな感じ。行末にcontribを追加しただけですね。

% diff sources.list sources.list.bak
7,8c7,8
 < deb http://ftp.jp.debian.org/debian/ squeeze main contrib
 < deb-src http://ftp.jp.debian.org/debian/ squeeze main contrib  ---  > deb http://ftp.jp.debian.org/debian/ squeeze main
 > deb-src http://ftp.jp.debian.org/debian/ squeeze main

で、更新。Flash Playerを入れてしまいましょう。

% sudo apt-get update
% sudo apt-cache search flashplugin
flashplugin-nonfree-extrasound - Adobe Flash Player platform support library for Esound and OSS
flashplugin-nonfree - Adobe Flash Player - browser plugin
% sudo apt-get install flashplugin-nonfree flashplugin-nonfree-extrasound

これでfirefoxならfirefoxを再起動すればようつべが見られます。ワーイ

Adobe Readerとか入れたいなら、こっちは上のみたいに準標準?的なんじゃないと思いますが、apt-lineに

deb http://www.debian-multimedia.org squeeze main non-free
deb-src http://www.debian-multimedia.org squeeze main

を追記して、

% sudo apt-get install debian-multimedia-keyring  #これしないと次ので公開鍵がだめぽって怒られます
% sudo apt-get update
% sudo apt-cache search acroread
acroread-debian-files - Debian specific parts of Adobe Acrobat Reader
acroread-fonts-jpn - Japanese fonts for Adobe acrobat reader
acroread - Adobe Acrobat Reader: Portable Document Format file viewer
acroread-data - data files for acroread
acroread-dictionary-en - English dictionary for for acroread
acroread-escript - Adobe EScript Plug-In
acroread-l10n-en - English language package for acroread
acroread-plugin-speech - This plugin enable the Read Out Loud feature in acroread
acroread-plugins - Plugins for Adobe Acrobat(R) Reader
mozilla-acroread - Adobe Acrobat(R) Reader plugin for mozilla / konqueror
% sudo apt-get install acroread

わっふるわっふる
この辺が参考になります>D: lenny/Package – Debian GNU/Linux スレッドテンプレ

2011/11/30 追記
acroreadはこれで入れると日本語フォント関係で不具合があって直すのが面倒なので,adobeの配布している*.debからdpkgしたほうがいいようです.

Debian Squeezeでフォントをうつくしく

どーも、ラボPCが起動しなくなって頑張って復旧するのもいいけどこの際ubuntuからsqueezeにしちゃえってなったおさかなさんです。

で、フォント、というよりは描画があんまし好きくない、つか汚かったんでググったら、
メモ:Debian squeezeでフォントの表示を綺麗にする: 日々想うこと
こちらを参考にして

% sudo ln -s /etc/fonts/conf.avail/10-unhinted.conf /etc/fonts/conf.d/

スクショ撮ってればどんぐらい見違えたかわかりやすかったんですが。
えっ、unhintedなの?それでいいの?とか半信半疑だったんで撮ってなかった。
なんかフォントきしゃないお>< って方はお試しあれ。

ついでにフォントはTakao系かIPA系にしとくといいと思いますよっと

rvmなgemでzlibなエラー

なぐり書き.

gemでzlibのLoadErrorが出るよ>< 困ったよ!><
っていう現象はわりとよくあるらしい.僕も引っかかった.

% gem update
ERROR:  Loading command: update (LoadError)
    no such file to load -- zlib
ERROR:  While executing gem ... (NameError)
    uninitialized constant Gem::Commands::UpdateCommand

んで,探して出てくるのはだいたい,ディストロ標準zlibパッケージ入れて,rubyをmakeしてmake installして

んと,rubyの環境はやっぱりrvmで構築したい派なので,これじゃ解決策になりません.

rvmでrubyを入れる直前に,

% rvm pkg install zlib
% rvm install 1.9.3

これでおk.
rvm installは既存のバージョンであれば再インストールになるので,すでに入ってる人も上の作業でおっけーです.

C++用ビジュアライゼーション環境”openFrameworks”をぺろぺろしてみた

ビジュアライゼーション言語,すなわち手軽なデザイニングや可視化に特化した言語・環境といえば,Javaベースのprocessingが非常に有名です.
C++上でライブラリとして提供される同様のものにはcinderやopenFrameworkといったものがあります.
特徴はやっぱり速いこと.
例えばProcessingと比べるとC++なので然るべきコーディングをすれば然るべき速度差で動きますし,何も考えなくともOpenGLでよろしく描画してくれるので,そこらのX11やGDIで動くGUIツールキットで頑張るのとは段違いの速度で動きます.

今cinderの人気が高まっている印象ですが,Linuxで使えない(無理ではないらしいけどタダではすまない)という僕にとってはとても残念なかんじなので,より歴史のある(らしい)openFrameworksを使ってみました.

で,実は2011年12月3日に開催される名古屋合同懇親会で,僕がこのネタでLTさせていただくことになってます.
よろしかったら直接おいでいただくかustで視聴してみてください.
NGK2011B 昼の部(LT大会) ←こっちでしゃべります
NGK2011B 夜の部(懇親会+野良LT大会)

Continue reading

Nagiosでサーバ監視@squeeze

あんまし情報がないですね.みなさん余裕だからですか.
WEBベースのサーバ監視システムの一つにNagiosというのがあります.すごい高機能です.
ということで導入と動かすまでの設定方法をかるーくメモ.

環境はDebian6(x86)で,LAMP構成とします.
入れたのは他でもないこのサーバ(さくらVPSで稼働)です.最近いろいろあってクリーンインストールしました.

今日のところは,細かい設定はアドホックなかんじになるので省略ということで.
あとVirtualHost下にしたりみたいないろいろできますがそのへんも気が向いたら書きます.
あんま詳細書くと僕がこの鯖のどこをどう固めてるかわかっちゃうので気は向かないと思うんだ.

以下の作業は特記ない場合全てサーバ上で行います.

Continue reading