FPSを作ってみる@wiki
11)
最終更新:
slice
-
view
(2014/11/26)
OpenCL with GPUでJavaのKeystoreにブルートフォースするアレ
結局頑張ったところでCPUの3.5倍程度しか高速化できなかった…
と、諦めついでにSHA1ハッシュを計算するルーチン(他人のCソースから移植してきた物)内部で
一時バッファにデータコピーする際にループ回してる所を、アルゴリズムを工夫して無くしてみたら6倍に。
更にメモリのコピーを安直に8bit単位でやってたところをulong(64bit)で纏めてみたら10倍程度に。
そんなもんか。どうやらそんなものらしい。
一時バッファにデータコピーする際にループ回してる所を、アルゴリズムを工夫して無くしてみたら6倍に。
更にメモリのコピーを安直に8bit単位でやってたところをulong(64bit)で纏めてみたら10倍程度に。
そんなもんか。どうやらそんなものらしい。
今どきのCPUじゃ分岐予測が優秀な為かちっとやそっとifやループを減らしたところで殆ど何も変わらないが
GPUの分岐予測はコンパイル時の静的な物だけらしく、冗談じゃなく分岐が入るたびに遅くなる印象。
GPUの分岐予測はコンパイル時の静的な物だけらしく、冗談じゃなく分岐が入るたびに遅くなる印象。
で、せっかく作ったのだからソースをgithubに上げてみたいが、
ネットで拾ったSHA1ハッシュ計算のソースはオープンソースではないらしく
このままでは無理っぽい。
SHA1部分だけ各自取ってきてとやろうにもGPU向けに結構手を加えてしまってるんでそれもちょっと…
もし需要があったらフリーのSHA1ルーチンをベースに改変してみてもいいけど、まぁ知名度ないですし。
そういえば速い速いって言ってるのはx86上での話みたいだ…
ネットで拾ったSHA1ハッシュ計算のソースはオープンソースではないらしく
このままでは無理っぽい。
SHA1部分だけ各自取ってきてとやろうにもGPU向けに結構手を加えてしまってるんでそれもちょっと…
もし需要があったらフリーのSHA1ルーチンをベースに改変してみてもいいけど、まぁ知名度ないですし。
そういえば速い速いって言ってるのはx86上での話みたいだ…
#追記
今の所CPUの12倍程度の速度が出ている。
まだ最適化の余地があるので16倍は行けそうだ。
まだ最適化の余地があるので16倍は行けそうだ。
というのも現状ではキー(1200byteくらい)をデコードして一旦グローバルメモリに置いてから
改めて別のカーネルでそのハッシュを計算後、正しいかチェックという形をとっていて
これを「キーをデコードしつつハッシュも計算する」様にすれば遅いグローバルメモリを経由せず済む事になり、更なる高速化が望める。
あとはやる気があれば…
改めて別のカーネルでそのハッシュを計算後、正しいかチェックという形をとっていて
これを「キーをデコードしつつハッシュも計算する」様にすれば遅いグローバルメモリを経由せず済む事になり、更なる高速化が望める。
あとはやる気があれば…
絵
モフモフってアニメ調でどうやって表現するの~?とか、動きの線(スピード線など)はどんな風なの?とか
そういうのを他人の絵を見たり描いてみたりして、要するに表現に関する試行錯誤。
従って描きかけばっかり増えて成果(完成品)は出てない現状。
そういうのを他人の絵を見たり描いてみたりして、要するに表現に関する試行錯誤。
従って描きかけばっかり増えて成果(完成品)は出てない現状。
久々にペン握ったら線もまともに引けなくてかなり焦ったが、1時間もやってたら戻った。
(2014/11/22)
OpenCL
ちょいと思う所があって今週はOpenCLの勉強をしていた。
思ったのは、OpenCLでプログラムを動かすのはわりかし簡単だけどGPUでの効率を求めると
やっぱりちゃんとAMDやNVIDIAのリファレンスを読んで仕組みを掴んでおく必要があるなという事。
思ったのは、OpenCLでプログラムを動かすのはわりかし簡単だけどGPUでの効率を求めると
やっぱりちゃんとAMDやNVIDIAのリファレンスを読んで仕組みを掴んでおく必要があるなという事。
既存のマルチスレッドなコードを素直にOpenCL Cにベタ移植しただけの物をGPUで動かすと
良くて4コアCPUの3倍程度、下手すりゃ殆ど同じくらいしか速度が出なかった。
(試したのはPhenomII X4 955とRadeon HD6850の組み合わせでJava Keystoreにブルートフォース方式でパスワードクラックを試みる自作プログラム)
良くて4コアCPUの3倍程度、下手すりゃ殆ど同じくらいしか速度が出なかった。
(試したのはPhenomII X4 955とRadeon HD6850の組み合わせでJava Keystoreにブルートフォース方式でパスワードクラックを試みる自作プログラム)
普通にCPUでマルチスレッドするのに比べてOpenCLはそれなりに手続きや決まり事が有るため
移植やコーディングに余分な手間がかかるのに、速度がCPUと似たりよったりでは寂しい。
移植やコーディングに余分な手間がかかるのに、速度がCPUと似たりよったりでは寂しい。
流石にOpenCLで試しました -> でもパフォーマンスは思ったほど出ませんでした
で終わりじゃアレ過ぎるんで、折角だから
上述の通りopencl programming guide等でググって出てきたPDFを読んだりとかしていた。
で終わりじゃアレ過ぎるんで、折角だから
上述の通りopencl programming guide等でググって出てきたPDFを読んだりとかしていた。
今はGPUに向けたデータ構成とアルゴリズムで組み直してる最中で、これで駄目なら諦める予定。
バッテリーWidgetの更新
物自体はできてるが、お察しの通りまだアップロードしてない。
最新版を試してみたい人はこのページ下の”添付ファイル”の欄に
app-release.apkというのがあるんで、そこからどうぞ。
内容は
最新版を試してみたい人はこのページ下の”添付ファイル”の欄に
app-release.apkというのがあるんで、そこからどうぞ。
内容は
- Android2.3でも正常に表示されるようにした
- 温度と電圧の表示、
- 充電時のエフェクトを追加
である。アプリの署名が前と異なっている為、一度古いのをアンインストールしてからでないとインストール出来ないかも知れない。
絵
そろそろ次を描かないとね。月曜日さんは思いつきで1時間程度で仕上げたからあれはノーカウント。
(2014/11/15)
心機一転
忘れた署名keyのパスワードを特定すべく総当りと辞書攻撃する簡単なプログラムを書き、
これを開発している間バックグラウンドで動かしている…
並列化までしたけどやっぱり総当りは遅い。
ここまでわからないとは一体自分はどんなパスワードを設定したんだ?!と逆に興味が湧いて来た。
けど実際どうだろう、あまり期待せず見つかればラッキー位にしか思ってないが。
これを開発している間バックグラウンドで動かしている…
並列化までしたけどやっぱり総当りは遅い。
ここまでわからないとは一体自分はどんなパスワードを設定したんだ?!と逆に興味が湧いて来た。
けど実際どうだろう、あまり期待せず見つかればラッキー位にしか思ってないが。
そんな訳で自作AppWidgetは新たに公開し直す方向で進めている。
以前と違いイラストも少しだけ描けるようになったから今見るとビミョーなロゴとか、
途中でアプリの名前変えたりして説明文と辻褄があってない部分も一掃出来て良いじゃないかという事で。
GooglePlayへ一度アップしたAPKは仕様上削除できず、公開停止という形でずっと残りスッキリしないが
まぁそんなのはこの先も度々あるさね。
以前と違いイラストも少しだけ描けるようになったから今見るとビミョーなロゴとか、
途中でアプリの名前変えたりして説明文と辻褄があってない部分も一掃出来て良いじゃないかという事で。
GooglePlayへ一度アップしたAPKは仕様上削除できず、公開停止という形でずっと残りスッキリしないが
まぁそんなのはこの先も度々あるさね。
名前はどうしようかと、数分悩んだ挙句…
まず、元ネタであるDカウンターの DとCは入れたい。
DはDragonだとまんま過ぎるからDのつく何か -> 適当にDigital
C -> Widgetの見た目からしてCube
わかり易さの点で”Battery”という単語は欲しいし、AppWidgetなら”Widget”も必須か。
結果、無難にDigital Cube Battery Widgetという感じに。(いや、今もそうなってるんだけどね)
まず、元ネタであるDカウンターの DとCは入れたい。
DはDragonだとまんま過ぎるからDのつく何か -> 適当にDigital
C -> Widgetの見た目からしてCube
わかり易さの点で”Battery”という単語は欲しいし、AppWidgetなら”Widget”も必須か。
結果、無難にDigital Cube Battery Widgetという感じに。(いや、今もそうなってるんだけどね)
(2014/11/13)
やりました
さあ不具合修正も終ったし更新かけとくかーと思いきや、署名に必要なkeyringのパスワード忘れて死亡。
keystoreの方は何とか思い出せたがkeyの方が、なんとも…
いや、自分の事だから大体アタリはつくんだけど部分的な2〜4文字くらいが思い出せない。困った。
幸いファイルはオフラインで何度も試行できるから、こうなればクラックしてみるか・・・?
いや、自分の事だから大体アタリはつくんだけど部分的な2〜4文字くらいが思い出せない。困った。
幸いファイルはオフラインで何度も試行できるから、こうなればクラックしてみるか・・・?
(2014/11/13)
2.3.3のAVD
例の、Android2.3系で自作ウィジェットがバグるという話。
今まで2.3.3のエミュレータがどうにも動かなくて「まぁ古いしいいかー」と放置していたけどプログラミングのリハビリがてら対処に本腰を入れてみる。
今まで2.3.3のエミュレータがどうにも動かなくて「まぁ古いしいいかー」と放置していたけどプログラミングのリハビリがてら対処に本腰を入れてみる。
まず、エミュレータが起動しないことには確認が出来ないのでそこから始める。
「動かない」というのは最初のAndroidのロゴさえ出ないか、出た直後にフリーズしてしまう現象のことである。
これについて調べてみたが…当方の検索スキルが足りないせいか
ググっても2010年あたりの「新しく追加されたAndroid2.3のエミュを使ってみよう!」みたいな話ばかりで一向にそれらしい対処法が得られず参った。
「動かない」というのは最初のAndroidのロゴさえ出ないか、出た直後にフリーズしてしまう現象のことである。
これについて調べてみたが…当方の検索スキルが足りないせいか
ググっても2010年あたりの「新しく追加されたAndroid2.3のエミュを使ってみよう!」みたいな話ばかりで一向にそれらしい対処法が得られず参った。
ならばと4.4から4.3, 4.2…とバージョンを下げていって何処まで起動できるか試したら、4.2までは
普通に動いて4.1と4.0はロゴが終わって上に通知バーが出た所で固まってしまった。
と思いきやスリープボタンを押してみたら動いた。そういうもんかね。
普通に動いて4.1と4.0はロゴが終わって上に通知バーが出た所で固まってしまった。
と思いきやスリープボタンを押してみたら動いた。そういうもんかね。
そんな調子でオプションを変えつつ色々やっていたら、どうやら2.3.3は
アーキテクチャをARMにした上でUse Host GPUのチェックを外す事で起動できる事がわかった。
アーキテクチャをARMにした上でUse Host GPUのチェックを外す事で起動できる事がわかった。
で、動作が遅いながらも無事に起動したんで早速不具合確認。
よし。ちゃんと実機で見たようにバグってる。
(2014/11/11)
相変わらず絵の方だけ進んでてお察し。
けどまぁ、少しは落ち着いたんでAppWidgetのバグでも修正してみようかと思う…
2週間近くプログラミング自体してないんで色々とやばいかもしれない。
けどまぁ、少しは落ち着いたんでAppWidgetのバグでも修正してみようかと思う…
2週間近くプログラミング自体してないんで色々とやばいかもしれない。
(2014/11/01)
Android2.3でのAppWidget
とりあえず、Android2.3.5の実機(SH-01D)を触る機会があったのでさり気なく自作のバッテリーウィジェットを入れてみたら
レイアウトが崩れているのを確認。
具体的にはピクチャーの表示オフセットが全部(0,0)で左上に寄ってしまっている。
幸いSH-01DはAndroid4.0へアップデート可能なのでアップデートすれば問題ない訳だけど
2.3系の対応を謳ってる以上、直したい。そのうち。
一時期停滞していたウィジェットのインストール数が最近微妙に増えてきたので機能追加もするかもしれない。
レイアウトが崩れているのを確認。
具体的にはピクチャーの表示オフセットが全部(0,0)で左上に寄ってしまっている。
幸いSH-01DはAndroid4.0へアップデート可能なのでアップデートすれば問題ない訳だけど
2.3系の対応を謳ってる以上、直したい。そのうち。
一時期停滞していたウィジェットのインストール数が最近微妙に増えてきたので機能追加もするかもしれない。
ゲームの方
先月の進捗更新が11日で止まっていて、にもかかわらず絵の方だけは着々とアップされている現状を見てお察し。
でもGitHubを見ればわかる通り、全くの放置でもないよと言い訳。
簡単に言えばモデルコンバータを作るうえで必要になったデータ構造2つとそれらの単体テスト、
自作ライブラリをAndroid向けにコンパイルする上で引っかかった(clangのバージョンが古くてエラーになった)箇所の修正など。
早くPCやAndroidでゲームを動かしたいものだ。
簡単に言えばモデルコンバータを作るうえで必要になったデータ構造2つとそれらの単体テスト、
自作ライブラリをAndroid向けにコンパイルする上で引っかかった(clangのバージョンが古くてエラーになった)箇所の修正など。
早くPCやAndroidでゲームを動かしたいものだ。
などと、言ってるそばからコレだけど。