shtaxxx日記

コンピュータアーキテクチャについて研究している研究者の日記や技術紹介

SC12論文紹介大会を開催しました

東工大にて,HPC系のトップカンファレンスのひとつであるACM/IEEE Supercomputing 2012 (SC2012)の論文の読み会を開催しました.

今回は4件の発表がありました.皆さんわかりやすい資料を作ってきてくれました.
また少人数の会だったため,気軽に質問・ディスカッションできたのが良かったです.

僕は"Mapping Applications with Collectives over Sub-communicators on Torus Networks"という論文を紹介しました.
トーラスのネットワークを持つスパコン上でのタスク配置を効率的に行うためのツールに関する論文です.

2012年総括

まもなく2012年も終わりですね.

某同期に習って,今年のまとめを.

 

結婚式を挙げました

プライベートで最も大きな出来事でした.

準備はじっくりと,そして式自体はあっという間.

皆様が来てくれたおかげで,幸せな時間を過ごすことができました.

ありがとうございました.

 

出張

今年はいろいろ機会があって,国際会議に出席するために海外出張に4度行ってきました.

  • ASPLOS 2012 (ロンドン・イギリス)
  • ARC 2012 (香港・中国)
  • CF 2012 (カリアリ・イタリア)
  • ISCA 2012 (ポートランド・アメリカ)

 

特に印象深いのは,ISCAかなぁ.

高性能なメモリシステムの構成を競うMemory Scheduling Championshipで,我々のチームが世界一になったのは嬉しかった.

バンケットとかでも「俺ら,昨日世界一を取ったんだー!」て自慢できるなんてそうそうないと思う.

 

国内は,長崎・沖縄・鳥取・福岡などに出張で行った気がします.まだあったような気がしますが,失念.

 

夏の鳥取で開催されたSWoPP2012では,夜のお楽しみセッション「学生・教員のちょっと聞いてみてもいいですか? ~言いたいことも言えないこんな研究室じゃ~」を主催しました.

パネリストの先生方をお招きして,「理想の研究室」というテーマでぶっちゃけトークができたのではないかなと.

聴講している学生・先生方にも結構楽しんでいただけた様で,やってよかったなぁと思います.

 

しかし,これだけ飛行機に乗ってもANAのプラチナメンバーにはなれないんですね.

とりあえずは来年のブロンズメンバーは確定したので,もうちょっと頑張って再来年こそはプラチナメンバーになりたいです.

 

研究会を開催しました

12月に学生主導で集積回路研究会の学生・若手研究会を東工大で開催しました.

初めてのローカルアレンジメント(会場設営)で,会場の手配やら懇親会の手配やらでかなりばたばたでした.

 

せっかくこの時期に開催する学会なのだから,学生と企業の方の出会いの場というのをテーマで,懇親会にもこだわりました.

お酒でも飲みながら気楽に話をしながら,お互いのことを知る場があってもいいんじゃない?と個人的に思っていて,今回,その理想に近い場が実現できたのが嬉しいです.

もちろん,学生だけの力ではこのような場を実現することはできなくて,お力添えを頂いた皆様に本当に感謝です.

 

研究

新しい研究を始めました.

まだまだ発表まではほど遠いですが,100%自分主導のテーマなので,苦しくても頑張ろうと思います.

 

今年は,国際会議には数本,筆頭著者で論文を投稿しましたが,かなり負けが多かったのが悔しいです.

もっと論文・研究に深く向き合って熟考する必要がありますね.

 

後輩のテーマを考えることも多くなりました.

でも,個人のレベルに合わせた簡単なテーマを与えるということができなかったのが.残念です.

俺,大学教員には向いていないなと思いました.

 

まとめ

今年は海外・国内ともに露出の多い一年でした.

その分,地道に研究すすめる時間が少なくなった点は反省です.

今年築いた新しい土台を来年はどうやって拡張・活用していこうかな.

 

2013年は,残りわずかの博士課程の2年生を経て,博士課程の最終年度3年生へ.まだ学生です.

就職活動をして,そして博士論文執筆に向けて研究を進めてまとめるフェーズに入ります.

あと,まだ確定していないので発表できませんが,いくつか新しいことにチャレンジしようと思っています.

ということで,2013年のテーマは「ステップアップ」で!

 

それでは,よいお年を!

MiniSatのPythonラッパーを書いてみた

SAT(充足可能問題)を解く必要があったので,高速なSATソルバーのMiniSatをPythonから触るラッパーを書いてみた.

ダウンロード

githubにあげてあります.shtaxxx:pyminisat

使い方

SatSolver()がソルバーでSatVarが変数.
SatSolver.append()で節を追加していく.
最後にSatSolver.solve()を呼び出してSATを解く.

from minisat import *
solver = SatSolver()
a = SatVar()
b = SatVar()
solver.append((-a, -b))
solver.append((-a, b))
solver.append((a, -b))
#solver.append((a, b))
satisfy = solver.solve()

solver.view()
if satisfy:
    print(solver[a], solver[b], solver[c])

その他

APIruby版のラッパーを参考にさせて頂きました.

追記 (2013年1月13日)

  • Python3にも対応
  • SatSolver.solve()がSATがSatisfiableかどうかを返すように変更
  • SatSolver.view()を追加

Windows7でシンボリックリンクを作成する

コマンドプロンプトで以下のコマンドを実行する.
管理者権限が必要なため,コマンドプロンプトを右クリックして「管理者モードで実行する」を選択する.
フォルダのシンボリックリンクを作成する場合は/dオプションをつける.
ファイルの場合は/dオプションをつけない.

mklink /d LINKNAME TARGETNAME

参考

こちらを参考にさせていただきました.ありがとうございます

Threadingで実行した関数の実行結果を呼び出し元で知るには

Queue.put()とQueue.getを使う.

import threading
import thread
from Queue import Queue

def threaded_func(a, b, q):
    #return a + b
    ret = a + b
    q.put(ret)

def main():
    q = Queue()
    th = threading.Thread(target=threaded_func, args=(1, 2, q))
    th.start()
    th.join()
    rslt = q.get()
    print rslt

if __name__ == '__main__':
    main()