サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
CES 2025
nushio.hateblo.jp
「価格性能比と消費電力効率を極限まで追求した超並列計算機システムの実用化に関する研究」第一回シンポジウムというのに行って、JavaRockという言語でFPGAプログラミングを学び、Pongみたいなゲームを作ってきました。 ソース: https://github.com/nushio3/practice/tree/master/JavaRock 回路記述は大変だ、というのはよく聞きます。で、解決策は大別して 好みのプログラミング言語内の操作できるデータ構造として回路を表す 好みのプログラミング言語のプログラムが回路に翻訳されるようにする 抽象化力の高い新しい回路記述言語を作る らしく、JavaRockはこのうちJavaで書かれたプログラムをVHDLに翻訳するという第二のアプローチです。Javaのマルチスレッドプログラムを書くと、回路上の並列処理になるというすごい発想です。 史上初のJavaR
Paraisoの論文がAcceptしました。確かにこれで、偏微分方程式の解法を記述する数式を処理し、並列仮想マシンを経てCPU/GPU向けのコードを生成し、さらに遺伝的アルゴリズムで自動チューンするまでを一つのシステムとして実証するという一歩を進めることができました。が、現在のParaisoは生後まもない言語で、いろいろとアドホックな箇所が残っています。 インターフェイスも、生成されるコードの速度もまだまだ洗練の余地があり、たくさんのドキュメントを整備していくことで、おそらく誰にも(私にも!)使えない言語という状態を脱してゆきたいと思います。 そのために、数値流体力学の入門記事をParaisoで書いてみようと思います。無論数値流体力学のずっと良い教科書は沢山ありますがParaisoで書いてあるのは初めてなんじゃないかな!インターフェイスというのはみんなで作るものなので、どうかコメントくださ
クリックすると動画に飛びます 見よ!流体力学ソルバーのParaiso実装を! cell2 <- proceedSingle 1 (dt/2) dR cell cell -- まず時間1次精度でdt/2だけ進めておいて、 cell3 <- proceedSingle 2 dt dR cell2 cell -- それを使ってもとの量をdtだけ進める。 ありのままの姿で書かかれた2次のルンゲ・クッタ法を! interpolate order i cell = do let shifti n = shift $ compose (\j -> if i==j then n else 0) -- i軸方向、nマスの平行移動を定義 a0 <- mapM (bind . shifti ( 2)) cell -- 2マス平行移動を全ての変数に適用、 a1 <- mapM (bind . shifti ( 1
未だにICFP programming contest 2011の余韻から抜け出せないでいます。打ち上げでもいろんなプログラマーやジャッジ側と交流ができて楽しかったです。 さて、その打ち上げ当時から「1ターンで殺してゾンビ化して次弾Getまで出来るよね」「それで浮いたターンで殴れば最強じゃね?」とかいうアイデアがよく出ていましたが、いざ作るとなると断片的な浮いたターンで呪文を組み立てるとかとても難しそうです。ところが週末にそれを可能にするフレームワークの発想が降ってきたので矢も盾もたまらず実装していました。 ありがたいことに、id:tanakhさんから「こういうきれいな抽象化を書かれると悔しい><」「世界が嫉妬するコード」「これはやばいし、Haskellじゃないともはやこのレベルのコードはここまで綺麗にかけないだろう」「これコードシンプルすぎるし、他の言語だと多分これ実装するの死ぬのじゃな
ICFPコンテスト2011に参加してきました。 近年は予定がかぶったりでまともに参加できていませんでしたが、今回は久々にちゃんと参加できました。実は遠隔でなく泊まり込みで参加するのは初めての体験です。 ひとまず実装や作戦の詳細に関してはチームのページ https://github.com/tanakh/ICFP2011 も参照していただくことにして、コンテスト終了後に使い方を覚えたgit logから私の時系列を思い出せる限り復元してみます。 -3 days 計算機パワーが必要な問題を想定し、haskellの並列・分散計算の勉強を始める parは過去の遺物であると聞いて衝撃 forkIOでグリーンスレッドを立てまくるだけでマルチコアプログラムが書ける衝撃 msgpack-rpcを使って型つきrpcプロトコルがいとも簡単に書ける衝撃 STMはメモリと言うからIntくらいしか突っ込めないのかと思
(この記事はDvorak Advent Calendarの一環として書かれました) いきなりですが、僕はキーボードをこんな配列で使っています。 そう、kinesisです。101キーボードに焼き直すとこんな感じだと思います。 RAKDAO配列 という名前をつけています。まあ自分専用配列なのですが、日本語も英語もプログラムも打つ人向けなどに役に立てばと、このたび公開することにしました。RAKDAOは、Dvorak配列をベースに、以下の点で改良を加えたものです。 Dvorakを左右反転させることで、日本語の左右感覚に近づける さらに右面を上下反転させ、記号をほぼQWERTY位置に DvorakJPに基づく、「か」行、拗音、撥音、二重母音の入力効率化 (Kinesis Contoured Keyboardの採用) 命名の由来は Dvorakを | 左右反転 | 右面を上下反転 | 日本語入力が D
Chapter 1. Motivations あれは、今から86万4000秒前の出来事だったか・・・ xxxx様 新規利用申請を承認しました。 アカウント名は 10IKA101 です。(つд⊂)ゴシゴシ→(;゚ Д゚) …!? 10IKA101 神は言っている・・・ Functional Ikamusume Advent Calendarに参加するのです、と・・・ Chapter 2. Introduction of Haskell to TSUBAME 2.0 というわけで今日はLINPACK日本最速のスパコン(c.f. http://www.top500.org/list/2010/11/100)を侵略するでゲソ! まずは橋頭堡を築くでゲソ。さしもの関数型イカ娘もGHCが入らなければ何も出来ないでゲソ。 10IKA101@t2a006172:~> cat /etc/issue We
研究者は大変です。世界で戦っていくにはぜひとも毎日 今日出た論文のチェック 英語 この2つののトレーニングが欠かせません、これ結構時間くってしまいますよね・・・ そこで、この2つが同時に、しかもながら勉強でできてしまうという超画期的なライフハックツールを作ってみました!その名も arXivRadio です。これ実行するだけで、arXivから最新1日ぶんの論文リストを取ってきてニュース風に読み上げてくれます。朝ご飯たべながら、通勤中しながらなど、耳さえ空いていればいつでも使え、さらに英語のリスニングの勉強もできます!デフォルトでは宇宙物理学(astro-ph)を読みに行くようになってますが、スクリプトの中のNEWS_URLのとこを書き換えると、arXivのほかのページも読み上げてくれます。 いや、実は去年くらいからあってずっと公開しようと思ってたんですが、このたびgithubを覚えたのを機に
(この記事はHaskell Advent Calendar jp 2010のために書かれました) 要旨 絶対にバグが出ない言語などというものは 無く、理不尽な挙動を前にして 途方にくれる時もある。 それを乗り越える為には、確固 たる信念と洞察、そして (1)deriving Show (2)print (3)Debug.Trace が必要である。 Haskell Haskellはやっぱり魅力的です。無限リストを使ったプログラム(速度はともかく)や、自分でも理解しないまま型を合わせただけのプログラムがなぜか無事に動いたりすると魔法すら感じられます。ソースの見た目も美しいです。シンプルに書けて副作用が無くて型推論が有るので、Haskellはバグの出にくい言語とされています。 それだけに、Haskellで出たバグは取りにくく、しかも苦労して突き止めた結果が言語設計の根幹に関わる深刻な問題とかなら
C++や、それ風の言語で書いていると徒労感に襲われる時ってありませんか。 マクロはほとんど使用禁止みたいなもんだし、そもそも文字列を繋ぐ程度の能力しかありません。テンプレートはコンテナとか作ってるぶんにはいいのですが、少々凝ったことをしだすと関数オブジェクトだのtypenameだのが乱舞しだしてタイプ量が減ったのか増えたのか分からないことになり、チューリング完全とか言い出すと闇が待ち受けています。マクロを使って不安に苛まれるか、テンプレートを使って何とかするか、諦めて手で繰り返し書くかの不愉快な三択。 こいつはそもそもC++のメタプログラミング能力が貧弱なのがいかんのです。 というわけで、Ruby風にCをプリプロセスできるというものを作ってみました。設計方針は 実装が簡単、見た目がシンプル emacsのc++-modeで使うことが前提 です。 サンプルその1 いきなりですが、サンプルです。
Haskell Hackathon 2008に参加してきました。結果的に12時間+αで、Template Instantiationが実装できて、関数型言語がどう動いているのかの理解の着実な第一歩を進められたので大満足です。企画&参加の皆様ありがとうございました! Haskellがどう動いているかについては、調べれば調べるほど驚異のメカニズムであることが判明してきたので、マラソンが始まる前から降参状態といった感じでした。そこでもう何かオリジナルなことをするのは一切あきらめて、実装を通じて学ぶという原点に立ち返り、Implementing functional languages: a tutorial、略してIFLT http://research.microsoft.com/~simonpj/Papers/pj-lester-book/ を教科書として忠実に実装することにしました。言語は
ライブコーディング http://livecoding.org/ に行ってきました。 ライブコーダーがテーマを決めて即興でプログラムを書いて、その過程をみんなで鑑賞したり応援したりするというもので面白くて全く目が離せない。 Livecodingでは色々ためになる発見があったが、ぜひ使ってみたいと思ったのがflymake。 Eclipseがやってくれるみたいに、ソースを保存した時点で背景でコンパイルを行い、エラーのある箇所を表示してくれます。 帰ってきてさっそく導入に挑戦。emacs(僕の場合はxyzzy)はデフォルトで便利なのでつい素のままでずるずる使ってきましたが、はたして.emacsをうまく書けるでしょうか?
わが教室にGRAPEなる新型計算機(正確には演算ボード)が入ってきた。こいつは特定の演算(2質点間の重力)だけを超高速に遂行するというもので、使って見るとたしかに普通のコードで計算するより1000倍くらい速い。 ところで新しい環境に慣れるためには次のことをするのが手っ取り早い。 まずhello world 動かなかったらサンプルを読む つぎにgameをつくる というわけで春休み中1週間ほど新しい環境を集中的に研究していた。その成果がこの図である。 端的に言うと自分の天体を操り、ほかの恒星やガスを吸い込んで成長していくゲーム。 自分以外の天体もすべて同じ重力法則で成長していたり、ある程度自分が成長すると「おもむろに」暴走的に周りの星を吸い込み始めるところは、ちょっと一般の計算機では再現できないリアリティがある。似たようなシチュエーションをテクスチャの回転拡大多重スクロール等で演出しているすば
ついに完成した。たいへんな回り道でありました。 この装置は、この前のブックスキャナのスキャナの機能をデジカメに代替させることで より高速化を図ったものです。 使ったのは、レゴの他には、ごく一般的なデジカメと日曜大工店で買った金属レール2本くらいです。 デジカメ撮影により、本のスキャンにかかる時間そのものは約1分から約1秒に大幅に短縮できることは分かっていたので、あとはページめくりメカニズムをいかに高速化するか、だったのですが・・・ テープで吸着する、掃除機で吸いつけるなどの方式を試した挙句 「やっぱり摩擦がいい」 というわけで元祖ブックスキャナとおなじゴムで擦ってめくる方式に落ち着いてしまいました。 動画はこちら。 http://www.geocities.jp/takascience/lego/pic/abs2.wmv 1サイクル30秒(前回の約1/3)。なおカメラは動画の撮影に使ってい
一年に一度、国際関数型プログラミング学会ことICFPがあるプログラミングコンテストを主催する。 http://www.icfpcontest.org/ これこそ、世界同時・3日間ぶっつづけで行われ、優勝者には「その使用した言語がthe programming language of choice for discriminating hackers と呼ばれるという栄誉」が与えられるという、いわば年に一度のプログラミング言語頂上決戦なのだ。 となれば、参加するよりあるまい。 というか、去年とおととしも参加してるわけだが→ http://d.hatena.ne.jp/nushio/searchdiary?word=ICFP さて、今年のテーマはこれである。 http://www.icfpcontest.org/task.shtml 西暦1967年、工事現場から発掘された未知の言語による巻物か
簡潔に記述したい。TemplateHaskellとかつかう? レコードに型変数持たせて多相にしたい Maybeを意識しないといけない箇所を減らしたい(Control.Lens.Prismをつかえば良いらしい?) Object型以外の型にも特異メソッドを追加できる型をいろいろ作りたい(Objectクラスにすればよい?) その他、アイデア募集中です! https://github.com/nushio3/practice/tree/master/duck {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE Rank2Types #-} {-# LANGUAGE TypeFamilies #-} module
このページを最初にブックマークしてみませんか?
『nushio's diary』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く