>酔漢さん
SDKでセグメントレジスタをいじっていますが、
必要ないと思います。というよりは危険かも?
USB自作キット
http://www.planex.co.jp/contest.htm
なんだかおもしろそう^^
なるほど。やっぱり foo[eax]でいいのですね。
先に進めます。
あ”っ!空白がつまって大変なことになってる^^;
プさんが答えてしまっていますが(^^;)
私が調べたところこんな感じでした。
;ここから
.686p
.model flat, c
.xmm
00000000 .code
00000000 entry05 proc uses esi edi ebx, \
n:dword, reInitData:dword, imInitData:dword,\
reResultData:dword, imResultData:dword,\
reCoeff:dword, imCoeff:dword, count:dword
local a:dword, b:dword, d[3]:dword
00000000 55 * push ebp
00000001 8B EC * mov ebp, esp
00000003 83 C4 EC * add esp, 0FFFFFFECh
00000006 56 * push esi
00000007 57 * push edi
00000008 53 * push ebx
00000009 8B 45 08 mov eax, [n]
0000000C 8B 45 0C mov eax, [reInitData]
0000000F 8B 45 FC mov eax, [a]
00000012 8B 45 F8 mov eax, b
00000015 8B 45 EC mov eax, d[0*4]
00000018 8B 45 F0 mov eax, d[1*4]
0000001B 8B 45 F4 mov eax, [d+2*4]
0000001E 0F A2 cpuid
00000020 0F 7F C8 movq mm0, mm1
00000023 0F 0F C1 9E pfadd mm(0), mm(1)
00000027 0F 58 C1 addps xmm0, xmm1
ret
0000002A 5B * pop ebx
0000002B 5F * pop edi
0000002C 5E * pop esi
0000002D C9 * leave
0000002E C3 * ret 00000h
0000002F entry05 endp
end
;ここまで
「local c:dword」は予約語みたいで使えませんでした。
アセンブラって感じがヒシヒシとします^^;
廉価版SocetAthlonことSpitFireが4/24に発表みたいですね。
キャッシュはL1-128k、L2-64kで落ち着きそうです。
結局どんなブランド名で出てくるんでしょうね?K6-4とか^^;
550MHzで$79ですか。これだとK6-2+は出せませんね^^;;
Coppermine-128k(略してCuleronらしい^^;)もでてくるので
平均スペックが底上げされそうです。
プティタイジュここに見参!
フリーのためならどんな苦労もなんのその!
今こそお役に立ちましょう!
#masmを手に入れるまではnasmオンリーだったのですが
#Windowsの実行形式はnasmだけでは作れませんからねぇ
A.OKなのよう
僕もリスティングファイルを見たときは考え込みましたが、
いろいろやってるうちに気が付きました。
mov ebx,foo[eax*4]は
実は
mov ebx,[ebp+eax*4+イミディエート値]
なのですよう。
それで、このイミディエート値は絶対番地を意味するのではないのよう。
ebpから配列分だけ引くということを意味するのよう。
お役に立ちましたでしょうか?
#また、はずしまくってたりしたらすみません
うぐっ。MASMは結局使ってないから分からないです。
とりあえず、コードの頭に
.686p
.model flat, c
.xmm
.code
を入れるところまでは確認しました。
また遊んでみますね。
ずーっと前にtasmを使ってたことがあったのを
思い出してしまった^^;
#結局Nasmがお気に入りな私
質問です
MASMでCの関数を
.model c
proc _entry00 ......
local foo[32]:dword
のように定義して、ローカルな配列fooを定義した場合の
質問です。このとき、関数内でスタックフレーム上の配列
fooのn番目の要素をアクセスするとき、
mov eax,n*4
mov ebx,foo[eax]
でよかったでしょうか。配列アクセスの場合のうまい説明
が手元にないため、悩んでいます。お助けを。
エントリーの分割は、要求があったときに
対応しましょう。その場合、既存のエントリーに
影響が出ない方法を考えます。RequiredFeatureを
使えばうまくやれるはずです。
Round3/4に分けるのはあんまりいい案じゃないです
ね。私としては分けたくないですが、皆さんの意見も
同じのようで。
>エントリーを「準備」「本体」の二つに分け
ちょっと複雑になりますね。どうしましょうか?
>今回ビット反転も計測にいれいてますが、このさいはずしてRound4にしますか?(笑)
FFT本体をRound3、ビット反転をRound4ということでしょうか?
分解するとそれぞれが中途半端な気もしますね。
うーん、どうしましょうか?
#私は変わっても困らないのですが、
#途中で変えられると困る人がいる・・・かなぁ?
座布団の幅2倍になってしまった・・・
座布団1枚とりあげ(TwT)
むに!うるりさん、やっぱりいろいろ作ってますね。
これからじっくり見させて頂きます。
>>これはFSINCOSでCをぶっちぎろう的戦略ですね(^^;
勘違いでした(^^;
>このさいはずしてRound4にしますか?(笑)
む〜ん、いいかも(^w^)
#20%ほど本気だったりして
>座布団2枚。
(^w^)
==========
ここで調子にのりまくって師匠の怒りを買い、「座布団3枚とっちゃって」と
なるのがお約束ですが、このプティタイジュはそんなヘマは
やらかしません。座布団貯め込むのよう。
#100枚でアメリカ行き同行獲得とか(^^;
>これはFSINCOSでCをぶっちぎろう的戦略ですね(^^;
エントリーを「準備」「本体」の二つに分け、本体だけ
計測する案です。準備のところで係数配列を作れば一番
気に入った方法で高速化できます。
今回ビット反転も計測にいれいてますが、このさい
はずしてRound4にしますか?(笑)
>しかも、天文・地理や歴史と同じレベルでですよ(^^;
うまい。座布団2枚。なかなか上手な突っ込みです。
>Winが落ちるので危ないとかありますか?
あります(TwT)おやめください。
皆様にはバイナリだけにしてよう〜とか言いながら、
自分はソース出してしまいました。
Linuxなのでやむを得ず、すみません。
それにしても、なにがだめって、スクランブラ部は絶対速いはずなのに
全体だと遅いということは・・・自分のFFTが激遅ってことですか!?
いいと思ったんだけどなぁ。
>係数配列をエントリー側に作らせるよう検討しようか
と思いますが、どうでしょう?
これはFSINCOSでCをぶっちぎろう的戦略ですね(^^;
けれどもやっぱりベンチマークを都合よく細工して、
世のどんなFFTの結果よりも小さい数字が出てる方がインパクトあっていいかも(^^;
#InitDataからResultDataへのコピーがなくなると少し楽になると思うのですが
#皆様はどうってことないでしょうか?
「コンバット越前」
全然知りませんでしたが、ちょっと調べたら、解説してる人達の文章が面白すぎ。
この時点ではそれ以上に面白い反応ができそうになかったので見過ごすことにしました。
ところが!今日酔漢さんのページのリンクの所をふと見たら
3つも載ってる(^^;
しかも、天文・地理や歴史と同じレベルでですよ(^^;
そんなに参りまくりだったのですか(>w<)
僕だって姫様に参りまくりですよう。自信あります。
#変なところで張り合っています
今週末はエントリー改変は無理です。WEBページは
更新したくせにねぇ…
うるりさん
私のほうはさすがに基数変更まで手出しはしませんが、
DSPでは基数4はよく使われており、そこそこの成果は
あげています。計算量は変わりませんが、幾分速いよう
です。
ところで周波数間引きや、斬新なアルゴリズム向けに
係数配列をエントリー側に作らせるよう検討しようか
と思いますが、どうでしょう?
あ、プさんが飛んでいってる^^;
えっと、あのプログラムはWinが落ちるので危ないとかありますか?
とりあえずソースの方を眺めてみたいと思います。
#何が悪いんだろう???
>う、時間間引きで組んでいるのは私だけ?
SSEだと周波数の方が有利かな、と思ったのですが、
分割統治(=tree化?)が出来ない状態になってしまいました。
次はそのあたりも見直さないといけないみたいです。
基数も変えてみたいけど逆に効率が悪くなる可能性も
感じたりしています。
とりあえずいろいろデータを取ってみようかな?
現在うりゃうりゃ度3%くらいなので、もう(XwX)です。
とりあえずタダモノの絵は更新しときました・・・
うるりさん、プさん、
>時間間引きの方が素直な気もします。
>私はとりあえず周波数の方で組んでますけど。
う、時間間引きで組んでいるのは私だけ?
プさん
>・・・?。そうか!酔漢さんのおっしゃる「プリン頭」のことですね!!
>つまり!酔漢さんも姫様に参りまくりなのだけれども、
ええ、「なんだこのプリン色の頭はぁ?!」とコンバット
越前なみに驚いた後、まいってしまいました。プリン色は
やっぱり変ですよ。
>ラウンド3は半年から1年はかかります(笑)
そうですね。半年はかかりそうな気がしますね^^
>やはり周波数間引きでしょうか?
時間間引きの方が素直な気もします。
私はとりあえず周波数の方で組んでますけど。
酔漢さん、ハリウッドのお約束を超える世界最高レベルの
技術に大感激ですが、
・・・踊りすぎてますよ(^^;
>#プリン頭というのは誉め言葉です>プさん
ずっとそのように解釈しておりましたが、
ここにきて道に迷っているプティタイジュに対する御気遣い
ありがとうございます。
・・・?。そうか!酔漢さんのおっしゃる「プリン頭」のことですね!!
つまり!酔漢さんも姫様に参りまくりなのだけれども、
酔漢さんほどの漢がそんなことを言うのは照れくさい!!
そこで酔漢さんの心の友でらっしゃる全充さんが解説してくれたということですね!!!
皆様、やはり周波数間引きでしょうか?
#データのコピー的に
僕は「こちら時間」と「こちら周波数」の立て札のところを
行ったり来たりではかどりません(^^;
#マルチスレッド的には・・・
全充さん、
>いやなに、これでも10年以上前ですがフォートランで
>FFT組んだ記憶があるんですよ。
フォートランですか。フォートランなら複素数が使える
のできれいに書けますね。DO 文も数値演算むきだし。
DO ... CONTINUE とか懐かしいです :-)
私もフォートランでプログラムを書いたり、踊ったり
していました。
♪ヤーッ フォーッ フォートランランラン♪
全充さん、
>いやなに、これでも10年以上前ですがフォートランで
>FFT組んだ記憶があるんですよ。
フォートランですか。フォートランなら複素数が使える
のできれいに書けますね。DO 文も数値演算むきだし。
DO ... CONTINUE とか懐かしいです :-)
私もフォートランでプログラムを書いたり、踊ったり
していました。
♪ヤーッ フォーッ フォートランランラン♪
全充さん大丈夫です!
ラウンド2の経験からするとラウンド3は半年から
1年はかかります(笑)
うるりさん、
今週末は2日出社なので怪しくなりましたが、結構
な速度向上は次の一回だけだと見込んでいます。今
のうるりさんのエントリーににじりよって終わりだ
ろうと見ています。
スタートラインに立ったかと思ったら
いきなりこけて、いまだ起き上がっていない全充です
皆さんはもう折り返し地点でしょうか。
折り返してもまだ私が見えないでしょうが
かまわずゴール目指して突っ走ってください。
できましたら、ゴールテープを切る前に立ち止まり
いや、ゴールしてからで結構です、私のゴールするのを
舞っていてください(舞って?、待ってです)
#キーボートと指の相性、FEPの馬鹿に嫌気が指している今日この頃
いやなに、ちょいと忙しいもので、ちょっと愚痴ってみました。
はやくヤマタノオロチを退治したい。
でもこれがラスト伽羅ではなく(伽羅?キャラでしょ)
既に背後に迫る大物ボスキャラ
私はいつ自由のみに?
酔漢さま
逃避はFFTでなく仕事に対してです。はい
いやなに、これでも10年以上前ですがフォートランで
FFT組んだ記憶があるんですよ。
ただなにしろ最近頭が固くて
#プリン頭というのは誉め言葉です>プさん
>#「あー、来たねー」?
(\/#)こんな感じで怒ってるので違うと思います^^;
せっかくですから酔漢さんの再加速を迎撃してみたいと思います^^;;
#でも、酔漢さんにあと2回もブーストされると辛いなぁ。
N>=8で設計していますが、N>=16にするとまた遊べそうです。
迎撃用コードはN=1024よりもNが大きい方が最適化の効果が出るみたいです。
>ただのSSEですか(TwT)
でも、このせいでAMDがSSEを搭載することになるだろう
との見方もあるようですね。
>Celeron(=Coppermine128k)らしいのでSSE止まりです。
ただのSSEですか(TwT)・・・ヤツもしょせん僕と同じタダモノだったのか
>あー、きたねー(\/#)
これはきたないのではなく、あわれなプティタイジュを待ってくれているので、
皆様、当分バイナリだけの投稿にしてください(^^;
#「あー、来たねー」?
>最終兵器として温存しておきます^^;
あー、きたねー(\/#)
今週末のエントリー再加速もかわされそうですね。
まずビット反転をつめて、その次の週に3DNow!コードを
つめる予定です。今回はAthlon最適化ももくろんでいま
す。
それが終わったらMMXで4並列SIMDで遊ぶつもりです。
予想に反して早くもSSEコードが書き上がってしまいました。
最終兵器として温存しておきます^^;
>x86でやろうとするとPowerPC等の何倍も苦労するところでしょうか。
SOAだとレジスタが足りません。
というかx86はどう考えてもレジスタが足りません^^;
>Cとマシン語の差がでるようなお題
座標変換とか・・・それってRound2ですね^^;
>Piiiに決定ですか?やっぱりdouble x 2のSSEが効いてるのでしょうか?
Celeron(=Coppermine128k)らしいのでSSE止まりです。
SSEを無理矢理128bitにしたのは倍精度SIMDのためでしょうね。
SSEのPIIIでの実装はとりあえず普及させる的だと思います。
#MMXの存在価値が無いような気がするのは気のせいでしょうか?
>PS2のおかげでマシン語使いの地位が上がる
要アセンブラという噂も聞きますので地位向上は大丈夫では^^;
#DVDがリージョンフリーになるのはまずいだろぉ>PS2
#書き込みとお肌が荒れてるのは疲れのせいです^^;;
ど〜ぅも、アセンブラでの調子が悪いです。
プリフェッチは多少効果がありますが、
Nが小さいときに思いっきり邪魔です^^;
しかもループが16Byte単位なので無意味なプリフェッチが
約半数。改善するにはさらにもう一段展開が必要(- -;
次の段に移動するところのみに保険代わりに入れておこうか。
とりあえず試走からちょびっとしか速くならないなぁ。次はビット反転かな。
>お題の選定間違えたかなぁ。
楽しいですよ^^
でも、新規参加するにはちょっとコード量が多いかな?
>Round2は全展開すれば勝ち
とうぜんRound3も・・・^^;
#え?ループ回数増やすんですか?(笑)
どうか落ち込まないでくださいよう(^^;
FFTはもうすでに偉大な先人がアルゴリズム完成させてしまっていると思ってましたが、
それなりに改良するところはありましたね。
問題は分かりかけるまでが最悪なくらいはまりまくることです。
それと、このお題はアルゴリズムの比重が大きいので
「やっぱりマシン語にしても意味ないじゃん」と言う人に都合がいいのと、
酔漢さんが既におっしゃっているように
x86でやろうとするとPowerPC等の何倍も苦労するところでしょうか。
この掲示板を見に来てくださっている方々は
マシン語で組む事を理解してくれますが、
その他の人々が納得するくらい、Cとマシン語の差がでるようなお題だと
うれしいです(^w^)
#でもそれってどんなお題だろう・・・?選定も非常に大変そうですね
つなぎにX−Boxのネタを振っておきます(^^;
Piiiに決定ですか?やっぱりdouble x 2のSSEが効いてるのでしょうか?
思うにKatmaiでレジスタ2倍にもかかわらず3DNow!と同じ性能しかなかったのは
これのためだったのですね。
double x 2になって性能が落ちたらイメージ悪いので
3DNow!と同じ性能にしておいたというところですね、きっと。
それにしてもPS2のおかげでマシン語使いの地位が上がるかと思っていたのに
X-Boxですか(^^;
お題の選定間違えたかなぁ。
みなさんの書き込み読んで落ち込んでいます(苦笑)。
私としては、せっかくサーキットがテストデータを
提供するので、Cで大浦さんのコードを載せることや、
サンプルエントリーから始めることをお勧めします。
私は逆に久しぶりに楽しんでいます。Round1はすぐ
頭打ちになっちゃいましたし、Round2は全展開すれ
ば勝ちという面白くない結果になったので、Round3は
取り組みがいを感じています。
#うるりさん、ループ回数増やしましょうか(笑)
代表決定しましたね。全充さんおめでとうございます^^
案内を早くも現地に派遣して・・・シドニーに応援に行かれるのですね?
#本番のコースは非常にタフみたいですね。
FFTは悩みがいがあって良いですね^^;
プさん同様に私もアセンブラの楽しさを失っております。
10秒が5秒になると嬉しいですが、1秒が0.5秒になっても
嬉しくないみたいです。体感できることは自己満足の上で
大切なことみたいですね^^;
#K6のFPUと3DNow!の速度差はアセンブラの楽しさを
#倍増させていますね。P6のFPUとSSEは差がないですからね。
#K6は理論値で8倍ぐらい、実測で2〜4倍
#P6は理論値で4倍ぐらい、実測で1.5〜2倍
#あ、いかん。書いていてさらに気分が落ち込んでしまった(^^;
\(^O^)/\(^O^)/\(^O^)/\(^w^)/\(^O^)/
やっぱりFFTから逃避して宇宙海賊あるいはヤクザなぷーを演じている
プティタイジュです。
>如何に?
もう自分ではよく分かりません(^^;
とりあえずDLLで作ってみないとだめですね。
#これがきついです。ポケコンでやってるときは平気でハンドアセンブル&デバッグしてたのに(TwT)
#というより、一発で動くコードを書けなくなってる事が問題です
Round3のあまりのむずかしさ(&いろいろな事情)により
楽しさを忘れてました。
高橋尚子さんは楽しんでやることを教えてくれたので
僕も頑張ります。
マラソンから逃避してFFTねたを振りつづける
酔漢です。
プさん、コードを拝見しました。どうも問題が
あるとしたらビット反転ルーチンじゃないかなと
にらんでいますが、如何に?
一人だけマラソンねたを振りつづけるやつです。
実はFFTの理屈がよくわからなくて、逃避モード?
まあおいといて。
高橋尚子、代表決定ですね。
私のことではないですが、
みなさん応援ありがとうございました。
それではシドニーを夢見て、Round3に。。。。。
そうそう今シドニーには会社の後輩が1年間留学中で
オリンピックを見てから会社に復帰するなんていっている
んですよ。何か頼もうかな。
Round3のエントリーは
思いのほかビット反転に時間がかかっているので、
そちらをつぶすのがポイントでした。ループの外で
配列に展開できればどれほど楽か(-_-)
とりあえず、うるりさんのSSE試走コードにはもう
少し詰め寄れそうです。
どうして今日は新聞が休みなのでしょう。
高橋尚子1面のスポーツ紙は全て買ってやる。
しかし、山口さん、昨日の走りがマイナスに評価
されることは無いとは思いますが、弘山さんを評価
する声も出てきました。
3人しか出られないってのは、今回に限り酷です。
バルセロナの時の松野さんも厳しい選考結果でしたが
今回はもっと厳しい。
世界選手権3位までの選手は枠外で別途3人出場できれば
いいのに。
日本じゃなく世界のオリンピック委員会のみなさんに
叫びたい。
さらに、いよいよ今日!
もう完璧に決まりでしょう!
>さて選考はどうなる事やら(もめそう^^;)
選考する人へ声明を発表するのよう!
あれだけの実力を見せつけても納得しないようなら
全充組系傘下ぷ組突撃隊長プティタイジュがだまってないですよう!(>w<)
#だまってないだけで、なにもしませんが(^^;
##テロ対策部隊向けに注を付けときました。ぶっちゅ〜
>ビジネスクラスがいいよう。
酔漢さん、お帰りなさいなのよう。
今更ながらいい方法を思いついたのよう。
ミーティングの時にホワイトボードにアドレスを落書きしたら!
「Oh!にっぽん人に負けてはいられないアル。
このジョニーが参戦してやるぜ、ベイベー!メルシー」
となっていたかも。
僕もどうにか微妙に別実装完成・・・!?
全充さんの実況中継がありますね^^;
高橋さん強かったです。十分にアピール出来たのではないでしょうか。
さて選考はどうなる事やら(もめそう^^;)
>キャッシュ制御
ちょっと寝ぼけた事を書いていました。ほとんど間違ってます^^;
キャッシュ制御なんだからやっぱりキャッシュ構成には依存しますね。
#完成する頃にはL2-Ondie-1Mぐらいになってるだろうからなぁ。
>3DNow! SIMDコード
K6の悲劇でしょうか?もう少しアウトオブオーダーが強力ならば・・・
#渾身の一撃がミスった時のダメージはおおきいよう。
>BC++でインラインアセンブラ
どうなんでしょうか?ありそうな気がしますが。
>2000年問題の予算が大余り
うれしい誤算かな?
ようやく 3DNow! SIMDコードがあがりました。
しかし、出てきた数字は遠く目標には達しません。
なぜだ。
#毎度の事ながら、「こう並び替えると速くなるだろう」
#という努力が水泡に帰すのは精神衛生に悪いです。
高橋尚子さん、がんばりましたね。
私もがんばってエコノミークラスを
座りぬきました。ラスト3時間は
疲れました。ビジネスクラスがいいよう。
さすがにラスト5キロやや疲れましたか
しかし2時間22分19秒でましたね。
決まりでしょう。
やはり一人旅になりましたか
彼女本来のペースまで上げましたね
ゴールは2時間22分前後か?
千葉真子は棄権したのね
一人旅かぁ
プチタイジュさん
>いよいよ今日!
>プティタイジュも応援してます。
いよいよ、今日、高橋尚子が走ります。
が、私は今会社にいます--->なんで(T_T)
12時から会社のテレビ(応接にしかないんだなこれが)
を見てやる!
どうせ今日はそんなに出てない、と思うでしょう。
ところが、各フロア(4Fまであるんですが)全て誰か
出ている。
だいたい、2000年問題の予算が大余りらしくて
年度末駆け込みの依頼がわんさか
さばききれませんって。
でもね大切なお客様のお願いはなるべく聞いてあげないと
っていうのが今の事業部長様の方針で。
いかん、いかん、愚痴になってしまった。
兎に角、高橋尚子の走りに注目です。
鍵を握るのは、千葉真子の飛び出し。
彼女(千葉)には先行逃げ切り2時間22分を切ることしか
オリンピックの道は無い。
彼女の走りと高橋のリズムがあえば、何とかなる
と期待しています。
不安は、今回の調整は押さえ気味に行ったこと。
後半のスタミナに一抹の不安があります。
いよいよ今日!
プティタイジュも応援してます。
>キャッシュ制御
む〜ん、わかりません。あまり期待は出来ないと思いますが(^^;
#BC++ってインラインアセンブラでSSEとか使えるのでしょうか?
キャッシュ制御って読み込みがメインなのでしょうか?
それとも書き出し?
弱順序(WeakOrder)で書き出すとうれしいことが
ありそうな気がします。
プリフェッチと違ってキャッシュ構成に影響受けなさそうだし。
ちょっと実験してみようかなぁ。
#用途不明ソフト。イラストロジックを解きます。
#http://ww1.tiki.ne.jp/~hino/Logic100.zip
#とりあえず用途不明シリーズはこれで打ち止めです^^;
>おお!微妙にどころか、見た目にも違いがわかります!
多少は効果があるみたいですね。
それでもHardwareHnLがあるときと比べると劇遅ですからね^^;
PS2は値段的に見ると妥当な性能ではないでしょうか?
でも300MHzではプさんにはもの足りないですね^^;
>ミーティング中にエントリーのアイデアが浮かび
そんな時はすぐにメモしておきましょう。
良いアイディアほど、ど忘れしやすいものです^^;
#良いアイディアの例
# ・必殺ペーパーリリース^^;
この掲示板をご覧になるような皆様は
普通は既にコンパイラを買ってしまっているはずなので
BC++対応にしても同じでは(TwT)
それよりRound3のお題の選び方に問題があるような(^^;
うるりさん、だめだめプティタイジュをハイブリッド・マシンで
待っていてくださってますが、ちょっと時間かかりそうです。
#やり方は分かったのに、何かが足らないのです!何かが!(>w<)
これが映画かなんかならヒロインのおねえさまが現れて
プティタイジュ超絶復活、そしてうるりさんのマシンと供に大空へ!
となるところなんだけどなぁ。
ミーティング中にエントリーのアイデアが浮かび、
つくづく開発環境を持ってくればよかったと思う
今日このごろです。
エントリーをBC++にすると参加者が増えるかな?