SC12論文紹介大会を開催しました
東工大にて,HPC系のトップカンファレンスのひとつであるACM/IEEE Supercomputing 2012 (SC2012)の論文の読み会を開催しました.
今回は4件の発表がありました.皆さんわかりやすい資料を作ってきてくれました.
また少人数の会だったため,気軽に質問・ディスカッションできたのが良かったです.
僕は"Mapping Applications with Collectives over Sub-communicators on Torus Networks"という論文を紹介しました.
トーラスのネットワークを持つスパコン上でのタスク配置を効率的に行うためのツールに関する論文です.
2012年総括
まもなく2012年も終わりですね.
某同期に習って,今年のまとめを.
結婚式を挙げました
プライベートで最も大きな出来事でした.
準備はじっくりと,そして式自体はあっという間.
皆様が来てくれたおかげで,幸せな時間を過ごすことができました.
ありがとうございました.
出張
今年はいろいろ機会があって,国際会議に出席するために海外出張に4度行ってきました.
特に印象深いのは,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])
その他
APIはruby版のラッパーを参考にさせて頂きました.
追記 (2013年1月13日)
- Python3にも対応
- SatSolver.solve()がSATがSatisfiableかどうかを返すように変更
- SatSolver.view()を追加
ttyUSBのパーミッションを自動的に設定
/etc/udev/rules.d/60-udev.rules
KERNEL=="ttyUSB*", GROUP="grpname", MODE="0666"
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()