問題タブ [deterministic]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - C数学がSSE2を使用するかどうかを制御する方法は?
fp:strictモードのMSVCを使用して、Cライブラリの超越的な数学関数のアセンブリに足を踏み入れました。それらはすべて同じパターンに従っているようです。これがで何が起こるかですsin
。
まず、「disp_pentium4.inc」というファイルからのディスパッチルーチンがあります。___use_sse2_mathfcns
変数が設定されているかどうかをチェックします。の場合はを呼び出し__sin_pentium4
、そうでない場合はを呼び出します__sin_default
。
__sin_pentium4
("sin_pentium4.asm"内)は、引数をx87 fpuからxmm0レジスタに転送することから始め、SSE2命令を使用して計算を実行し、結果をfpuにロードします。
__sin_default
(「sin.asm」内)は、変数をx87スタックに保持し、単に。を呼び出しますfsin
。
したがって、どちらの場合も、オペランドはx87スタックにプッシュされて返され、呼び出し元に対して透過的になりますが、___use_sse2_mathfcns
定義されている場合、操作は実際にはx87ではなくSSE2で実行されます。
x87超越関数は、実装によって動作がわずかに異なることで有名ですが、SSE2コードの特定の部分は常に再現可能な結果をもたらすはずなので、この動作は私にとって非常に興味深いものです。
コンパイル時または実行時に、SSE2コードパスが使用されることを確実に判断する方法はありますか?私はアセンブリを書くのが上手ではないので、これにアセンブリの記述が含まれる場合は、コード例をいただければ幸いです。
c++ - スレッド化によるゲーム エンジンの決定論の実現
入力シーケンスを保存して再生し、ネットワークを簡単にするために、ゲーム エンジンで決定論を実現したいと考えています。
私のエンジンは現在、可変タイムステップを使用しています。フレームごとに、最後のフレームを更新/描画するのにかかった時間を計算し、それをエンティティの update メソッドに渡します。これにより、1000FPS のゲームが 30FPS の高速ゲームのように見えますが、不確定な動作が発生します。
解決策として、ゲームを 60FPS に修正することが考えられますが、入力がさらに遅くなり、より高いフレームレートのメリットが得られなくなります。
そこで、スレッド (常に update(1) を呼び出してから 16 ミリ秒スリープする) を使用して、ゲーム ループ内で可能な限り高速に描画しようとしました。ある程度は機能しますが、頻繁にクラッシュし、ゲームがプレイできなくなります。
エンジンに依存するすべてのゲームを書き直さなくても決定論を実現するために、ゲーム ループにスレッドを実装する方法はありますか?
deterministic - 別の CPU を使用すると、同じプログラムの出力が異なる可能性がありますか?
乱数や I/O を使用しない場合、同じプログラムは常に同じ結果を出力する必要がありますか、または別の CPU で別のものを出力する可能性はありますか (ただし、同じアーキテクチャ、再コンパイルの必要はありません) ? 数値近似で使用されるように、精度に大きく依存する float と double を使用した計算について特に考えています。
finite-automata - DFA 最小化アルゴリズムの理解
私はこのアルゴリズムをhttp://www.cs.umd.edu/class/fall2009/cmsc330/lectures/discussion2.pdf でDFA最小化アルゴリズムを理解しようとしています:
私が理解していないビットは「Distinct(δ(p,a), δ(q,a))」です。遷移関数を理解していると思います。ここで、δ(p,a) = 入力 a で p から到達した状態. ただし、次の DFA を使用します。
http://i.stack.imgur.com/arZ8O.png
この表の結果:
imgur.com/Vg38ZDN.png
異なる (δ(b,0), δ(c,0)) は空でないので (c,b) も x としてマークされるべきではありません (d) ?
oracle - 決定論的関数を作成する方法は?
数値を抽出する必要がある列に関数を適用した結果に基づいてインデックスを作成しようとしています。
しかし、このクエリを実行すると:
またはこれ
それとも加入...
インデックスは使用されず、毎回フル テーブル スキャンが実行されます。インデックスは常に数値またはnullを返すため、決定論的であると思いますが、式が複雑すぎて使用できないかどうかはわかりません。コードを関数に移動しようとしましたが、同じです。キーはこの決定論的なもの(間違っていますか?)および/または元の列にnull値を持つテーブルにあると思います。インデックスが使用されていることを確認するにはどうすればよいですか? これは機能です:
これも実行しました
しかし、それは問題ではないようです。
tsql - select * は t-sql 決定論的ですか?
具体的には、クエリが
常に同じ順序で列を返します。
非決定論的であるという兆候は見たことがありませんが、アプリケーションの仕様により、これが真実であるとは想定できません。誰かが何らかの方法でドキュメントを教えてもらえますか? 検索がうまくいきませんでした。
前もって感謝します。