2011-10-03

Mac OS Xでエイリアスファイルを探す方法

Mac OS Xで種類がエイリアスのファイルを探すには、Spotlightの検索語に [kind:エイリアス] を指定する。

コマンドラインで行う方法が知りたい。Spotlight対象外の領域のファイルについては?

2011-09-26

Dell XPS 15z をトリプルブートにする

Dell XPS 15z をアメリカから個人輸入した。ASCII 配列のキーボードが欲しかったから。このマシンに Windows 7 と Ubuntu を入れようかなと思っているところに Windows 8 の Developer Preview 版が公開されたのでトリプルブート設定に挑戦した。

まず Ubuntu Server 11.04 のインストールディスクで起動し、パーティションを設定する。最近の Windows は先頭に謎のパーティションを必要とするらしいので、あらかじめ Windows 用のパーティションを用意しておくのではなく、フリー領域にしておいて Windows インストーラに勝手にやらせるのがいいと思いそうした。

# dd if=/dev/zero of=/dev/sda bs=512 count=512
# parted
(parted) mktable msdos
(parted) mkpart primary 473gib 600gib
(parted) mkpart extended 600gib -0gib
(parted) mkpart logical 683gib 685gib
(parted) mkpart logical 600gib 683gib

ところで、この 600gib 〜 683 gib のパーティションが謎で、こちらを 683gib 〜 685gib より先に作ると、なぜかギャップができてしまう。また、Windows をインストールするとフリー領域に化けてしまう。原因は全くわからず。

最初に Windows 7 のインストールを行う。パーティションを指定してインストールする画面に行って、先ほど用意したフリー領域を指定する。あとは放っておくだけ。

再び Ubuntu Server 11.04 のインストールディスクで起動し、473gib 〜 600gib のパーティションを削除する。

Windows Develooper Preview のインストールディスクはあらかじめ作成しておく。Mac で作成したのだが、Win-Mac 両用の DVD を焼くのはいくつか設定が必要。また、この DVD にはいくつかバージョンがあって、開発環境込みの場合は片面2層の DVD-R が必要なので注意。

Windows Develooper Preview のインストールディスクで起動し、パーティションを指定してインストールする画面に行って、先ほど用意したフリー領域を指定する。あとは放っておくだけ。これで Windows 7 - Windows 8 のデュアルブート体制が完成。なかなかおしゃれなOS選択画面が出てくる。マウスで選択までできてしまう。ただしこの選択画面までかなり時間がかかるのが謎。

次に Ubuntu Desktop 11.04 インストーラで Ubuntu をインストールする。最新ノートなので生のインストーラでは画面が真っ暗になってしまう。ブート時にすぐに何かキーを押していると、ブートオプションが選択できる画面になる。[Install Ubuntu] のところまでカーソルを持って行き F6 を押して acpi=off にチェックを入れる。ESC を押してから ENTER を押してインストールを開始する。トラックパッドも動作しないので USB マウスを挿してから行わなければならない。

インストール後の起動にも acpi=off が必要なので grub 画面で e を押してオプションを指定して起動する。いつものごとく、以下を行った。

  • aptitude
  • vim
  • etckeeper
  • aptitude update && aptitude safe-upgrade

そして grub にオプションの指定を設定する。

$ sudo vi /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash pcie_aspm=force acpi=noirq i915.semaphores=1"
$ sudo update-grub

再起動するとうまくログイン画面まで行くはず。

あとは、nvidia の proprietary ドライバを入れたのだが、これはうまく動作しない。また、Intel HD 3000 と nouveau の切り替えが /sys/kernel/debug/vgaswitcheroo/switch ファイルへの echo でできると読んだのだが、そんなファイルは存在しなかった。

当初の目的であるトリプルブートは、特に何もしなくとも上記の順番でインストールすれば達成できた。

References

Dell XPS 15z での Ubuntu 11.04 の挙動については HardwareSupport/Machines/Laptops/Dell/XPS/15z - Ubuntu Wiki

2011-09-10

CUDAのカーネル関数を長時間実行するとエラーになる問題

自宅に設置したスーパーワークステーションの環境設定も終わって、早速CUDAプログラミングで遊んでみた。Massiveな並列計算をする前に、GPU自体の計算ってどのくらい速いかを見てやろうと思ってテストプログラムを作ってみた。

__global__ void kernel_test()
{
    // 重い計算
}

    // ...
    kernel_test<<<grid, block>>>();
    cudaMemcpy(/* ... */);
    // ...

計算のパラメータとして定数Nを用意してやっていろいろ変えて遊んでみた。小さいNの時は問題なく動くのだが、Nをちょっと大きくすると以下のようなエラーが出てうまくいかない。

Cuda error in file 'test.cu' in line 8 : the launch timed out and was terminated.

変だなーと思って会社のCUDAマシンで実行したところ問題ない。う〜む壊れているのかと思っていろいろ検索してみたところ原因が判明。家のマシンはTeslaが2枚ささっているのだが、そのうち1つをディスプレイデバイスとして使っている。このデバイス上で一定時間カーネル関数が実行されたままになるとwatch dog timerによって実行が中断されるとのこと。

CUDA SDKに倣ったプログラム環境でcutilを用いている以下のような場合:

#include <cutil.h>
int main(int argc, char *argv[])
{
    CUT_DEVICE_INIT(argc, argv);
    // ...
}

コマンドライン引数として--device=1を与えることで2枚目のディスプレイにつながっていないTeslaを利用するように指定できる。

References

CUDA program causes nvidia driver to crash - Stack Overflow