1 名前:chinkasu [02/10/05 14:27] このすれ立てても一人としてレスはいるとはおもっちゃ ねーけどさ 2ちゃんのアフォにはこのレス荒らすことぐらいしかできないと 思ってるぜ お前らに期待を裏切るような書き込みをリクエストする
618 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 18:55:22 ] Java側のコードも頼む
619 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 18:58:28 ] やっぱりついて来れる奴はいないか。 ま、せいぜいWebで資料(英語も)あさりでもしてバグ探してみてよ。
620 名前:デフォルトの名無しさん [2009/01/04(日) 19:02:47 ] >>617 おまえの方が頭バグってんじゃねーの?w
621 名前:デフォルトの名無しさん [2009/01/04(日) 22:33:37 ] 負荷試験のコードに向かって「コスト掛けすぎ」とか、なんという言いがかり。
622 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 23:37:49 ] なんの負荷はかってんのか、という問題では
623 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 23:51:05 ] 1500の原因が呼び出し側にある気がするが 呼び出し側のコードがないので 今のままだと彼の妄言と区別しようがない
624 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 00:07:22 ] 繰り返し呼ぶとJITコンパイラが動くんだけど、その回数がclient vmだと1500回だってさ。 -XX:CompileThreshold java.sun.com/javase/technologies/hotspot/vmoptions.jsp 1000回とかにして落ちる回数が変わったらこれかもな。 今回の件にどう絡んでるかわからん。 native method自体はJITコンパイル対象外だし。 スタックポインタの16bytes alignがズレてる可能性はあるかな。 adstやasrcのアドレスをprintfしてみるといいかも。 ま、>>616 にこれが理解できればの話だけど・・・
625 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 00:49:38 ] 追加 使ってるgcc(mingwってgccだよね)のバージョンは? こんなんあったぞ gcc.gnu.org/ml/gcc-prs/2003-05/msg00244.html >>609 の落ちた場所のコードってmovapsじゃなくてmovupsじゃないか? んでアドレスが16bytes alignされてない気がする ds9a.nl/gcc-simd/example.html を"0f 28 45 e8"で検索すると例がある >mingwでsseなんでだいぶ資料が少ないからついてこれる人がいるか心配なんですけどw この程度でパニクってるお前の低脳さが心配だよw レベル低過ぎw
626 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 01:13:27 ] デバッグご苦労。
627 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 01:50:17 ] 素直に馬鹿はJNIなんて触るなっていっておけばいい物を・・・やさしいな
628 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 01:55:00 ] >>624 gcc (GCC) 3.4.2 (mingw-special) Copyright (C) 2004 Free Software Foundation, Inc. gcc のそれは最適化すると勝手にアドレス替えちゃうって言うのじゃなかったか(特にスタックにある位置とasm("")のときも)。 スタックの話が出ると思ってたけど、ヒープ・メモリalligned_malloc(16, sizeof (jfloat)*4)でも 1500回目で落ちるからあまり関係ない感じはする。(1500回以内は正常復帰であることが説明できない)。 そうするとjvm.dllの仕様なのかもな。1500を増やしても解決できるわけではないし、server vmにするわけでもないしなぁ。 それとJava側のコードとか普通に想像できるのしか使ってない。 何ていうか、普通に使うこの程度の用途でこんなバクが出てるんじゃ、Cやコンパイラ仕様に精通してないと全く刃が立たないし、 そもそもJavaから入った奴なんかチンプンカンプンでsimdなんかやる気なくなるだろうwところで、他の人は同じバグでないの? long nowtime; float[] fa={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,}, fb=new float[fa.length]; nowtime=System.currentTimeMillis(); for (int k=count; k-->0;){ ベクタライズ計算のあれ♪(fa,0,4,fb,0); } nowtime=System.currentTimeMillis()-nowtime;
629 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 02:08:24 ] 未だに>>617 みたいな分かてないトウシロもいるから書いておくけど、 JNIは「使うとアプリが速くなる」とか「速くしたいから」JNI使うとか言う代物ではないよ。 SUNの英語サイトでもさんざん書いてあるんだけど、Java/jvmだけでは実現できない機能への「アクセス」が目的で アプリの速度とか機能の向上が目的なAPIではないよ。 例えばwin32apiとかsse,gpuとかのネイティブ機能を使うには唯一JNIを使うしかないってこと。 dot netだとこのへんもdot net frameworkに組み込んでunsafeとかで実現してるけど(winだけ)、j vmは同じことをJNIのAPIで実現してる。 それからasmとかじゃないただのネイティブ・アクセスならこっちの方でライブラリ・パッケージ化されてるから、少しは敷居が低くなった。 たぶんwin32apiとか使う人はこれで事足りるんじゃないか? en.wikipedia.org/wiki/Java_Native_Access
630 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 02:24:48 ] つまりjvm.dllの仕様とかgccのビルトイン関数の仕様が原因だと、ユーザレベルではどうしようもできないから解決法はない。 それに、この程度の利用方法でバグってるならSIMDは需要すらないってことだとから、人柱になるつもりもないな。 asmを直接使ってasmに神経使うつもりもないし。 C関数_mm_add_psのほうも使ってみるけど、もうIntelのSSEには期待してないからどうでもいいけど。
631 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 03:05:22 ] はあ・・・ オプションを1000にしたら落ちるまでの回数も1000になりましたか? 低脳君はこれだから・・・
632 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 03:10:27 ] >>627 こういう性分でな。 ま、低脳君のためにやってるわけではないので。 誰か(低脳君を除く)のお役に立てれば幸い。
633 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 06:41:26 ] JNIを呼ぶメソッドをHotSpotコンパイラの対象外に設定すればいいだけの話。
634 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 09:37:02 ] JNIはもともとHotSpot対象外だよ。何いってのこのオッサン
635 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 10:03:47 ] >>633 HotSpotですけど、インタプリタモードで全体のon/offは出来るけどピンポイントでメソッド単位では出来ないでしょ。 それともjava/javacでそういうオプションがあるんですか? JNI FAQとかhotspot optionsを眺めてみたんですけど、そういうのはないみたいですよ。 一応 -serverでは大丈夫みたいなんで、たぶんhotなコードでHotSpotが効いてるのか、もしくは FAQにもあったんだんですけどSSE使ってる最中のGC起動でどうとか言うバグ(GCがらみ)と思います。 つまりgccや私のコードでなくjvmのバグってことです。
636 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 11:59:45 ] つ.hotspot_compilerファイル tp://java.sun.com/javase/6/webnotes/trouble/TSG-VM/html/crashes.html#gbyzd >>634 お前みたいな低脳見てるとイライラするわ。一生ロムってろ。
637 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 12:39:02 ] おいおい、それ Note - The .hotspot_compiler file is an unsupported interface. It is documented here solely for the purposes of troubleshooting and finding a temporary workaround. とか書いてあるけど、中の人向けでやばいんじゃないの? ていうかこれ、-XXオプションよりもSUNネイティブじゃんw もしMSだったらそんな文書はます存在(公表)しないんじゃないのかと思う。「MS仕様です!」とかの域ww
638 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 13:02:43 ] RIAにC並みの性能をもたらす次世代のMozilla JavaScriptエンジン www.infoq.com/jp/news/2008/09/tracemonkey hotspot調べてたらこんな記事があったけどjvmではどうですか? ざっと読んだところこの手法は、メソッドじゃなくてブロック単位でアスペクト切り替えみたいだけど、たぶん次世代な感じです。 それと .hotspot_compiler 使ってループテストは無事完了しました。 しかしこれではあまりにコアすぎるので他の方法でメソッド単位・クラス単位でJITコンパイル無効とかないですか? よく考えると、JITコンパイルされようがなんだろうが、コードにバグがあるわけじゃなくてJVMの機構の問題なんで、 このような一時しのぎに頼らざる得ないのはおかしな話ですよね。awt.Canvas::paintとかどうしてるんでしょうか。 native funcやnative asmのret address がgcとかのデータ領域配置換えとかJITネイティブコンパイルによってコードのアドレスが変わって、ret先がずれてるってことなのかなと思う。 もうこのあたりはコアすぎて専門家か職人じゃなきゃ無理でしょ。
639 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 13:07:16 ] よってコード領域のアドレス
640 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 23:02:17 ] >>625 movupsならalignされてなくても問題ないのでは? 落ちた部分の 0x61e012bb: 0f 28 45 e8 0f 58 45 d8 0f 29 45 e8 8b 45 08 8b を逆汗すると MOVAPS XMM0,DQWORD PTR [EBP-18h] ADDPS XMM0,DQWORD PTR [EBP-28h] MOVAPS DQWORD PTR [EBP-18h],XMM0 EBPの値は>>609 より、0x0094fc00なので、EBP-18h=0x0094fbe8。 ま、どう見ても16byte alignされてないな。 おしまい。
641 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 06:31:38 ] >>640 >movupsならalignされてなくても問題ないのでは? といってみたり、 >ま、どう見ても16byte alignされてないな。 といってみたり、何をいいたいのかどうも良く分からないんだが。 もしかして、「俺ってアセンぶりぶりだぜ!!」ってこと?
642 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 21:55:10 ] バカホイホイスレ化してきました。
643 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 19:25:03 ] ここだけじゃなくてJava系スレは軒並みそうだけどな
644 名前:611 [2009/01/16(金) 01:06:01 ] >>609 から、明らかにネイティブコードでアクセス違反起してるのに、JITコンパイル が云々とか、もうね。
645 名前:611 [2009/01/16(金) 01:23:15 ] あ、悪い多分JITコンパイル関係あるわ。 JITコンパイルされて、呼び出し(Java)側のスタックフレームのサイズが変わったんだろ。 んで、インタプリタ実行中はたまたま>>640 の言う、EBP-18hが16byteアラインになるEBP(SP)だったってことな。 つまり、>>616 のローカル変数(jfloatかv4sf...SSEは素人なんて、どっちかわからん)を、16byteアライン させれば直るだろ。 Cってアラインを強制する修飾子あるのかな?あるならそれ使って、 ないなら苦肉の策として、16byteのローカル変数突っ込めば、強制アラインされるから、多分直る。 jdouble aaaa; // ←追加 jfloat adst[4],asrc[4]; v4sf d1,s1; あと利口なコンパイラだと、aaaaの使用点がないと、最適化で消しちゃうから適当な 仕様点作るとか。
646 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 20:45:33 ] C++(MFC)で作ったGUIプログラムをEcilpseのプラグインに移植しようとしています。 GUIだけをEclipseで作って、GUI以外は元のプログラムをそのまま使いたいのですが、 プラグインから元のプログラムをJNIで呼ぶのと、ソケット通信で呼ぶのでは どちらが実装しやすいでしょうか?
647 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 21:49:29 ] ソケット通信部分が既に実装済みならソケット通信。 そうでなければ大して手間は変わらんと思う。
648 名前:デフォルトの名無しさん [2009/03/14(土) 03:56:14 ] >>601 648ゲットオォオオォ!!!!! ∧∧ (^ω^) cu_uっ バイーン 彡 / ̄ ̄\ | ̄1 ̄| | ̄2 ̄|  ̄ ̄ ̄ ̄ ̄ ̄
649 名前:デフォルトの名無しさん mailto:sage [2009/04/07(火) 02:00:47 ] 久しぶりに来たがまだあったのか。息の長ぇスレだな。
650 名前:デフォルトの名無しさん mailto:sage [2009/04/07(火) 10:05:03 ] ある大企業の久しぶりの仕事が JNI使ったシステムの手直しだった。 全部Javaにすればいいのに。
651 名前:デフォルトの名無しさん mailto:sage [2009/04/07(火) 10:50:08 ] COBOL 使ってたりするとそうも行かんだろう。最後丸めで金額計算とか やってると精度保証のテストだけでエラい事になるぞ。
652 名前:デフォルトの名無しさん mailto:sage [2009/04/07(火) 11:03:56 ] なぜわかるw 今動いている奴の方が信頼性高いしな。
653 名前:デフォルトの名無しさん mailto:sage [2009/04/07(火) 13:35:54 ] 動いてるプログラムと、いまから作るプログラムでは、圧倒的に動いてるプログラムのほうが信頼性高いな。
654 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 00:53:40 ] 丸ごとシステム入れ替える予算も出ない状況だしな。 JNIで既存システムのライブラリ使って徐々に移行していくしかない。
655 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 21:20:40 ] とりあえず JNI で他言語呼ぶにしてもアクセス違反に巻き込まれて Java の プロセスまで落ちては困るので RMI くらいは噛ませるよう設計している。 あるいはコマンド起動にしてしまうか。 C/C++ も全然平気が売りな SE としてはとにかく JNI は回避されるので 寂しい限りです。
656 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 23:36:39 ] RPC経由でもCORBAエラー出まくるだけだと思う。
657 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 23:57:23 ] 縮退運用やフェールセーフ措置がとれるのでよっぽどマシです。
658 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 15:41:06 ] ちゃんと動いてればね。 CORBAエラー出まくって鯖再起動させられる事多いよ。
659 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 16:24:19 ] ローカルの Java プロセス間で通信させる程度に IIOP なんか使わないよ。 JNI 使ってる部分を別プロセスに分離できれば良いだけなんだから。 新たにアプリケーションサーバ立てるような大げさな構成考えてない?
660 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 17:51:57 ] うちの場合はハードウェア対応とパフォーマンスのためにJNIだから、あんまり関係ないなぁ。
661 名前:デフォルトの名無しさん [2009/05/15(金) 08:08:30 ] >>648 サテト ∧∧ (・ω・ ) _| ⊃/(__ / ヽ-(___/  ̄ ̄ ̄ ̄ ̄ ̄
662 名前:デフォルトの名無しさん [2009/09/21(月) 11:06:08 ] JNIは何をimportすればいいの?
663 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 12:23:38 ] おまえはimportが何なのかわかっていない importは完全修飾クラス名を書くのが面倒なときにパッケージ名を省略するためのものであって クラス名をすべて完全修飾で書くのならimport無しでもJavaのすべての機能を使える
664 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 12:45:15 ] インポートしても長いのに、まだ長くしようというのか。 嫌いじゃないが。 パス通して相対パスを使うよりも、常に絶対パス使えってことだろうけど。
665 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 13:16:13 ] どうせ書くのは宣言だけで、実際使う時は変数名になってるしね オレはjava.ioとか付いてた方が意味がわかりやすいので、全部書いてるよ 書いてるというか、オートコンプリート機能で一覧から選んでるだけだけど
666 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 14:10:59 ] うわぁ… Java利用者が減ったな
667 名前:デフォルトの名無しさん mailto:sage [2009/09/22(火) 18:45:21 ] JNI使うような場面が減ったんだろう まあいいことだ