忙しくないわけではないのに半年ぶりに更新する気分になったので、今年初ブログ更新!
今までもそうだけど、これからも、ブログとツイッターで馬鹿みたいにプログラミングのことについて発信していく方針は変わらずで行こうと思う。
というのも自分がいつごろどんなことをした、っていうのが見返せるから
プログラミングはまさに技術の蓄積で、過去に無駄だと思ってほって置いたゴミのようなプログラムがあるとき突然宝のような資産に生まれ変わったりするのだ
最近あんまりプログラムしていないし、昔のプログラムみてれば何か面白い掘り出し物あるかもしれないというわけで、自分なりにプログラミング等してて記憶に残った大きなイベントを振り返ってみようとおもう
2005年頃?HSPというプログラム言語を知る
2007年8月 乗算の高速化、Karatsuba法に興味持つ
2007年8月 FFTをやるが挫折する
2007年10月 チュドノフスキーの公式で円周率を求めるソフト(高速電子式計算機)をつくる
2008年8月 FB完成
2008年10月 HSPコンテストでショート作品のレイトレーシングを見て驚愕する
2009年4月 大学はいる!
2009年5月 一億桁×一億桁 プロジェクト始動!すぐ挫折
2009年8月 ババドンつくる
2009年8月 標準命令でセピア変換する
2009年9月 HSPのプラグインでどれが一番描画が高速か測る
2010年1月 突然レイトレーシングのプログラムつくる
2010年2月 高速化のためFortranに手を出す
2010年2月 伝説の超こってり黒歴史生まれる・・
2010年2月 クォータニオンに興味持つ
2010年4月 リアルな雲の表現を目指しパーリンノイズを猛勉強する
2010年9月 東工大のTSUBAME2というトンデモスパコンとGPGPUというトンデモ技術を聞きつける
2010年10月 分子シミュレーターをコンテストに応募する
2011年2月 リアルな雲や煙の再現のため数値流体力学をやり始める
2011年3月 ポアソン方程式の解法で共役勾配法に寄り道する
2011年4月 SOR法を知って歓喜する
2011年5月 ついに自前の2次元流体力学のプログラムが動く!http://twitpic.com/4sett3 http://twitpic.com/4sfwyd http://twitpic.com/4sfxh3 http://twitpic.com/4sfz0c twitpic.com/4vjz1q
2011年6月 突発的にCubicセミ・ラグランジアンで3次元流体する http://twitpic.com/5grlg0
2011年7月 パーリンノイズやりつくす
2011年7月 セピア変換のサンプルからEasy3D(HSP)でGPGPUができるとわかる!
2011年7月 HLSLかじり始める
2011年7月 2次元流体力学をHLSLに移植! http://twitpic.com/5onl28
2011年9月 レイトレーシングをHLSLに移植! twitpic.com/6rgf0w twitpic.com/6rvsrn twitpic.com/72nb7h
2011年10月 hspでgpgpu応募、一部に大好評
2011年10月 2次元流体力学をxcodeに移植
2011年11月 水面条件つけるためにlevel set法に手を出すが失敗する
2012年2月 minecraft で32bit電卓作り始める
2012年9月 minecraft の電卓動画公開する
2012年9月 iPhoneアプリ パズドラルート解析君つくる
2012年11月 HLSL応用してGPGPU用プラグインHSPSHAD作り始める
2012年12月 PCソフト パズドラルート解析GPGPU版つくる
2012年12月 再びFFTに挑戦して、プログラム動く!
2012年12月 一億桁×一億桁 プロジェクト再開
2013年3月 HSPSHADやっぱやめる
2013年3月 HLSL卒業してOpenCLデビュ~
2013年4月 HSPCL開発開始
2013年4月 FFTをOpenCLに移植する
2013年6月 再び円周率の計算に興味もつ
2013年6月 FMTという魔法の乗算アルゴリズムを嗅ぎつける
2013年7月 突如HLSLでフレネル反射に浮気 pic.twitter.com/5pKOPRM4La
2013年10月 android版 パズドラルート解析君 バンされる
2014年1月 2次元流体をOpenCLに移植 pic.twitter.com/6rWQWME5n2
こうやって見ると最近めっきりプログラムしてないわけでもないことに気づく。というかもっと大昔のほうが何もしてなかった時期が長かったみたいだ
一方で3年近く前にHSPでGPGPUを可能にしているにもかかわらず、GPGPUを活用したゲームやツールをあまり作れていないことに自分は危機感を感じている
もちろんPC版パズドラルート解析はGPGPUをフル活用していて好評だが、まだこのツール1種類のみ。
FFTや流体力学はOpenCLに移植まではできているものの、ツール化、ゲーム化するところまではいってない
今年の目標として、GPGPUを活用した作品をもう2作品は作りたいと思う
ひとつはもう決まっていて、6年近く前に完成させたとあるゲームの続編を作る。この続編は何度も企画が上がっていたがいつも最終目標が定まらず企画頓挫していた。
だが今回はゲームエンジンから組み立てていく方式でいくので、前作やババドン等の経験から恐らく完成できると思われる
そしてもう1つの作品は、GPGPUで円周率を計算するソフト。これこそ早く作りたい!
今はBinary splittingで行き詰まっている。1つに素因数まで分解するところまではできているのだが、その後乗算と加算で結合していくところの、数値の桁数の管理で行き詰まっている。
どのような桁数でもFMTで高速に乗算できる機構がまだうまく思い浮かばないのだ。
また1つに、巨大桁A B Cにおいて A*B A*C と乗算していく時、 BとCの素因数に共通なものがあれば、BとCはそれ(最小公倍数)で割っていいという数学的理由がある。割るだけでBinary splittingの最後の方で得られる数値の桁数が大きく減ってくる。つまり計算量が減らせるのだ。
だが、巨大桁の数を非常に小さな素数、例えば1億桁の数を素数1877で割るのは最速でも筆算法しかなく、上位桁から順に1877で割った余りを次の下の桁でつけるといった作業が必要だ。これによる処理にどれほどの時間がかかるのかが未知数であり、例えば1877ならint型に収まるが
4056519585705363113等のlong型でも入るか分からない素数で割るといった話になると、筆算法の中にニュートン逆算を入れて行わなければいけなくなり、これは結果的に非常に時間のかかる効率の悪い計算法になってしまう。ではBとCの素因数を全て記憶しておき、BとCをある素因数で割った時の値は、割る素因数を抜いた素因数のデータから乗算だけで導き出すと言った方法も考えられるが、それはそれで膨大な計算量になる。
ここの問題を抱えながらここ半年くらいは悶々としていた。
今年の目標としては、なによりこの円周率プロジェクトを成功させたい!そして完成した暁にはグラボをフル稼働させて部屋を熱くするんだ!
今までもそうだけど、これからも、ブログとツイッターで馬鹿みたいにプログラミングのことについて発信していく方針は変わらずで行こうと思う。
というのも自分がいつごろどんなことをした、っていうのが見返せるから
プログラミングはまさに技術の蓄積で、過去に無駄だと思ってほって置いたゴミのようなプログラムがあるとき突然宝のような資産に生まれ変わったりするのだ
最近あんまりプログラムしていないし、昔のプログラムみてれば何か面白い掘り出し物あるかもしれないというわけで、自分なりにプログラミング等してて記憶に残った大きなイベントを振り返ってみようとおもう
2005年頃?HSPというプログラム言語を知る
2007年8月 乗算の高速化、Karatsuba法に興味持つ
2007年8月 FFTをやるが挫折する
2007年10月 チュドノフスキーの公式で円周率を求めるソフト(高速電子式計算機)をつくる
2008年8月 FB完成
2008年10月 HSPコンテストでショート作品のレイトレーシングを見て驚愕する
2009年4月 大学はいる!
2009年5月 一億桁×一億桁 プロジェクト始動!すぐ挫折
2009年8月 ババドンつくる
2009年8月 標準命令でセピア変換する
2009年9月 HSPのプラグインでどれが一番描画が高速か測る
2010年1月 突然レイトレーシングのプログラムつくる
2010年2月 高速化のためFortranに手を出す
2010年2月 伝説の超こってり黒歴史生まれる・・
2010年2月 クォータニオンに興味持つ
2010年4月 リアルな雲の表現を目指しパーリンノイズを猛勉強する
2010年9月 東工大のTSUBAME2というトンデモスパコンとGPGPUというトンデモ技術を聞きつける
2010年10月 分子シミュレーターをコンテストに応募する
2011年2月 リアルな雲や煙の再現のため数値流体力学をやり始める
2011年3月 ポアソン方程式の解法で共役勾配法に寄り道する
2011年4月 SOR法を知って歓喜する
2011年5月 ついに自前の2次元流体力学のプログラムが動く!http://twitpic.com/4sett3 http://twitpic.com/4sfwyd http://twitpic.com/4sfxh3 http://twitpic.com/4sfz0c twitpic.com/4vjz1q
2011年6月 突発的にCubicセミ・ラグランジアンで3次元流体する http://twitpic.com/5grlg0
2011年7月 パーリンノイズやりつくす
2011年7月 セピア変換のサンプルからEasy3D(HSP)でGPGPUができるとわかる!
2011年7月 HLSLかじり始める
2011年7月 2次元流体力学をHLSLに移植! http://twitpic.com/5onl28
2011年9月 レイトレーシングをHLSLに移植! twitpic.com/6rgf0w twitpic.com/6rvsrn twitpic.com/72nb7h
2011年10月 hspでgpgpu応募、一部に大好評
2011年10月 2次元流体力学をxcodeに移植
2011年11月 水面条件つけるためにlevel set法に手を出すが失敗する
2012年2月 minecraft で32bit電卓作り始める
2012年9月 minecraft の電卓動画公開する
2012年9月 iPhoneアプリ パズドラルート解析君つくる
2012年11月 HLSL応用してGPGPU用プラグインHSPSHAD作り始める
2012年12月 PCソフト パズドラルート解析GPGPU版つくる
2012年12月 再びFFTに挑戦して、プログラム動く!
2012年12月 一億桁×一億桁 プロジェクト再開
2013年3月 HSPSHADやっぱやめる
2013年3月 HLSL卒業してOpenCLデビュ~
2013年4月 HSPCL開発開始
2013年4月 FFTをOpenCLに移植する
2013年6月 再び円周率の計算に興味もつ
2013年6月 FMTという魔法の乗算アルゴリズムを嗅ぎつける
2013年7月 突如HLSLでフレネル反射に浮気 pic.twitter.com/5pKOPRM4La
2013年10月 android版 パズドラルート解析君 バンされる
2014年1月 2次元流体をOpenCLに移植 pic.twitter.com/6rWQWME5n2
こうやって見ると最近めっきりプログラムしてないわけでもないことに気づく。というかもっと大昔のほうが何もしてなかった時期が長かったみたいだ
一方で3年近く前にHSPでGPGPUを可能にしているにもかかわらず、GPGPUを活用したゲームやツールをあまり作れていないことに自分は危機感を感じている
もちろんPC版パズドラルート解析はGPGPUをフル活用していて好評だが、まだこのツール1種類のみ。
FFTや流体力学はOpenCLに移植まではできているものの、ツール化、ゲーム化するところまではいってない
今年の目標として、GPGPUを活用した作品をもう2作品は作りたいと思う
ひとつはもう決まっていて、6年近く前に完成させたとあるゲームの続編を作る。この続編は何度も企画が上がっていたがいつも最終目標が定まらず企画頓挫していた。
だが今回はゲームエンジンから組み立てていく方式でいくので、前作やババドン等の経験から恐らく完成できると思われる
そしてもう1つの作品は、GPGPUで円周率を計算するソフト。これこそ早く作りたい!
今はBinary splittingで行き詰まっている。1つに素因数まで分解するところまではできているのだが、その後乗算と加算で結合していくところの、数値の桁数の管理で行き詰まっている。
どのような桁数でもFMTで高速に乗算できる機構がまだうまく思い浮かばないのだ。
また1つに、巨大桁A B Cにおいて A*B A*C と乗算していく時、 BとCの素因数に共通なものがあれば、BとCはそれ(最小公倍数)で割っていいという数学的理由がある。割るだけでBinary splittingの最後の方で得られる数値の桁数が大きく減ってくる。つまり計算量が減らせるのだ。
だが、巨大桁の数を非常に小さな素数、例えば1億桁の数を素数1877で割るのは最速でも筆算法しかなく、上位桁から順に1877で割った余りを次の下の桁でつけるといった作業が必要だ。これによる処理にどれほどの時間がかかるのかが未知数であり、例えば1877ならint型に収まるが
4056519585705363113等のlong型でも入るか分からない素数で割るといった話になると、筆算法の中にニュートン逆算を入れて行わなければいけなくなり、これは結果的に非常に時間のかかる効率の悪い計算法になってしまう。ではBとCの素因数を全て記憶しておき、BとCをある素因数で割った時の値は、割る素因数を抜いた素因数のデータから乗算だけで導き出すと言った方法も考えられるが、それはそれで膨大な計算量になる。
ここの問題を抱えながらここ半年くらいは悶々としていた。
今年の目標としては、なによりこの円周率プロジェクトを成功させたい!そして完成した暁にはグラボをフル稼働させて部屋を熱くするんだ!
>>2013年10月 android版 パズドラルート解析君 バンされる
これはガンホーに怒られたということでしょうか?
もしこれ以降開発を行わないというのであれば残念です