[過去ログ] Visual Studio 2008 Part 22 (314レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
160: 2018/05/23(水)19:42 ID:Au5e7VGg(1) AAS
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

CRP7I
161: 2018/05/24(木)10:53 ID:cPlRxlDn(1) AAS
CRP7I
162: 2018/05/25(金)19:20 ID:TsdeULHr(1) AAS
ではではw

Intel Pentium G5 CoffeeLake 総合スレ
open2chスレ:jisaku
163: 2018/07/04(水)22:48 ID:gFgZc5FG(1) AAS
TJH
164: 2018/07/06(金)12:24 ID:uTPDH9XV(1) AAS
TJH
165: 2018/08/23(木)09:04 ID:by5uxKdK(1) AAS
VC9 SP1 Hotfix For The vector<function<FT>> Crash
がダウンロードできないのですが、
どなたかアップロードしていただけないでしょうか?
外部リンク:blogs.msdn.microsoft.com
166
(2): 2018/09/13(木)23:46 ID:MPXnmy/B(1) AAS
起動の仕方で浮動小数点演算に誤差が発生するのだけど、理由が分かる人居ますか?

今のところ、

A. Debugビルドのバイナリをダブルクリックして起動
B. Releaseビルドのバイナリをダブルクリックで起動
C. DebugビルドまたはReleaseビルドでF5で起動

の3種類出来てる。それぞれ微妙な誤差だ。(doubleの下位ビット)
AとBの違いについては諦めていたのだが、(なお両方とも/fp:precise)
実はCもあると気づいてしまった。

なお、バイナリをダブルクリックして起動、それにIDEをアタッチしても結果は変わらない。
それぞれAまたはCが出る。
省1
167: 2018/09/14(金)12:43 ID:5xDSXwp0(1) AAS
0fillしてないんだろ
168: 2018/09/14(金)13:05 ID:XcO59d50(1/4) AAS
再現性は100%なので、初期化のミスではない。(と思っている)

演算途中の結果を double なら16進16桁でテキストにダンプしている。
数値だけではないが500MB程度のファイルが出力され、
diff を取ることによりレグレッションテストをしている。
今のところ、A/B/Cの3種類しか出ない。
初期化忘れならこうはならない。(はず)
169: 2018/09/14(金)13:09 ID:Qw2nkUqU(1) AAS
MSのエンジニアを信じるか、再現可能なソースも示さず問題だ問題だ言ってるとこの馬の骨とも知れない奴を
信じるかって言われたら迷うことなく前者を信じるw
170: 2018/09/14(金)14:43 ID:XcO59d50(2/4) AAS
俺はIDEのバグだとは思っていない。
何かIDEの設定があって、俺がそれを適切にやってないのだと思っている。

色々見た限り、俺は /fp:precise しか発見出来なかった。
ただしこれは一応適切に設定されている。
他にないかな?ということ。
171: 2018/09/14(金)15:49 ID:cyu8WCuc(1) AAS
IDEじゃなくてコマンドラインからコンパイラで直接コンパイルしても一緒?
172: 2018/09/14(金)16:14 ID:XcO59d50(3/4) AAS
どういう意味?
(どれとどれの違いにフォーカスしろと?)

俺はバイナリに問題があるとは思っていない。
何らかの理由で浮動小数点のモードが切り替えられたりしてないかを疑ってる。
だからIDEの設定とか、そっちを見てる。

Release/Debugのバイナリは当たり前だが違ってる。
/O2と/Od等だ。
ただそれでも /fp:precise の場合は
浮動小数点の演算順序を入れ替えない範囲で最適化される事になっている。
逆アセンブラは見たけどちょっとグチャグチャすぎてよく分からなかった。
省1
173
(1): 2018/09/14(金)16:25 ID:2giHKuhd(1) AAS
>>166
double型を使っていても、SSEのXMMレジスタなどを使う場合、昔のfld, fst, fmulなどを使う場合より基本的には精度が落ちる。

丸めの方向も四捨五入、正負どちらかの方向への丸めや切り捨てなどの他、確か、精度を気にしない、なんてオプションもあった気がする。ゲームで使うことを想定しているらしい。

SSE用に最適化を掛けると、速度は上がるが精度は落ちるかも知れない。
174
(1): 2018/09/14(金)17:45 ID:XcO59d50(4/4) AAS
>>173
今の範囲ではSSEは使っていない(はず)
「拡張命令セットを有効にする」は「設定無し」になっている。(多分デフォのまま)
見た目全部x87が出てたし。

やっぱRelease/Debugの違いから攻めろって感じか?
俺もF5起動で結果が異なるってのは全く予想してなかったし。(ただしこちらの問題だろうけど)
演算部分は場合によってはSSEのアセンブラに差し替えるので、
問題になる場合には、Release/Debugの違いはこれで吸収するつもりだった。
(これは1ヶ月後にやるかも)
175: 2018/09/14(金)17:48 ID:HVgt1gkj(1) AAS
浮動小数点の誤差を考慮に入れてないというイージーな仕様バグですね。
176: 2018/09/14(金)21:39 ID:fXySkelb(1) AAS
再現するコードをみないとなにもわかるわけがない
低学歴知恵遅れが書くコードなんかなにをやってるか分からないからな

ごちゃごちゃいってないで再現するコードをあげなさい
177
(1): 2018/09/15(土)06:26 ID:/OsufeBT(1) AAS
月並みな意見だけど、
「症状を再現できる最小のソースと初期データ、それとコンパイル環境」
まで切り詰めてみるのが早道じゃないかな。

ちょくちょく発生する事例なら、解決策を知ってる誰かが教えてくれてるかと。
週末、より多くの人が質問を見ることを期待して待つ手もあるけど。
178: 2018/09/15(土)08:56 ID:9ZmI9OgI(1) AAS
より基本に立ち返ろう
そもそも誤差はあるのか?

計算結果を何を使ってどう出力しているかだけでもソースを見せてくれ
179: 2018/09/15(土)13:36 ID:heijdb7v(1/7) AAS
>>174
x87でも誤差を丸める方法を fpu control word で設定できる事は出来る。
四捨五入と切り捨てなどを切り替えられる。
180: 2018/09/15(土)13:42 ID:heijdb7v(2/7) AAS
fpu control word で、丸め方法と、精度の二つを独立に設定できる。

この精度の設定で、メモリ上の表現がdouble型でも、計算時のfpuの内部精度が変わってくる。

普通は64bit doubleに対して、fpu内部では80bitの精度で計算する。仮数部のbit数は、確か、それぞれ、53BIT、64BITだったかな。
181
(1): 2018/09/15(土)14:05 ID:heijdb7v(3/7) AAS
Intel® 64 and IA-32 Architectures Software Developer’s Manual

[Vol 1]

11.6.8 Compatibility of SIMD and x87 FPU Floating-Point Data Types

SSE and SSE2 extensions operate on the same single-precision and double-precision floating-point data types that
the x87 FPU operates on. However, when operating on these data types, the SSE and SSE2 extensions operate on
them in their native format (single-precision or double-precision), in contrast to the x87 FPU which extends them
to double extended-precision floating-point format to perform computations and then rounds the result back to a
single-precision or double-precision format before writing results to memory. Because the x87 FPU operates on a
higher precision format and then rounds the result to a lower precision format, it may return a slightly different
result when performing the same operation on the same single-precision or double-precision floating-point values
省2
182
(1): 2018/09/15(土)14:14 ID:heijdb7v(4/7) AAS
>>181
書いてある意味は、

「SSEやSSE2だと、float(32BIT)やdouble(64BIT)のまま計算するが、x87 fpuだと、もっと高い精度であるところの
  『double extended-precision floating-point format(拡張倍精度浮動小数点フォーマット:80BIT)』
で計算を実行して、丸めてから、floatやdoubleに戻す。
そのため、SSE/SSE2 と x87 fpuでは結果が変わることがある。
しかし、その場合でも結果の違いは、仮数部の LSB (最も価値の小さいBIT)の1BITにだけ現れる。」

というような事。
183
(2): 2018/09/15(土)16:09 ID:aC3C7hdp(1/2) AAS
揚げ足取りだけどLSBを「最も価値が小さい」って直訳はいかがなものかなw
普通に最下位ビットじゃないの?

ところで
> the least-significant bits
これ何で複数形なのかね
184: 2018/09/15(土)16:14 ID:AVfR6YnT(1) AAS
2の0乗だから実際価値が低い

上はMVBで
185: 2018/09/15(土)17:07 ID:UR1d6CKz(1/5) AAS
>>182
ありがとう。
ただ一応それは知ってて、その上で、IDEの環境設定等を疑っている。

>>177
とはいえ地道に辿って、同様の再現コードを作ることに成功しそうだ。
もう少し調べて、多分今晩か明日午前中に上げる。
186
(1): 2018/09/15(土)17:12 ID:heijdb7v(5/7) AAS
>>183
「The difference occurs only in the least-significant bits of the significand.」

これは、SSE の場合の LSB と、x87 FPU の場合の FPU の2種類を頭の中に想定していると思われる。

SSE: a1 = 1.xxxxxxxxz * 10^b
x87 : a2 = 1.yyyyyyyyw * 10^c

つまり、LSB は、↑のように、z と w で、2つあるので、LSBs という英語になる。
187: 2018/09/15(土)17:15 ID:heijdb7v(6/7) AAS
誤:これは、SSE の場合の LSB と、x87 FPU の場合の FPU の2種類を
正:これは、SSE の場合の LSB と、x87 FPU の場合の 2種類を
188: 2018/09/15(土)17:18 ID:heijdb7v(7/7) AAS
>>183
>揚げ足取りだけどLSBを「最も価値が小さい」って直訳はいかがなものかなw
>普通に最下位ビットじゃないの?

整数の場合は、「最下位ビット」というと、本当にBITの位置が一番右にあるようなイメージもある。

一方、浮動小数点数の場合は、右にあるとかより、仮数部において、一番価値の小さいビット、というニュアンスを使えたかった。

IEEEでは、それは確かに一番右にあるビットであって、マシン語レベルの表現では、BIT0ではあるのだが。

ニュアンス的に。
189: 2018/09/15(土)17:29 ID:aC3C7hdp(2/2) AAS
>>186
それは俺も思ったけど、それならsignificandの方も複数じゃないとおかしいような...
1-
あと 125 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.017s