トップ «前の日(02-19) 最新 次の日(02-21)» 追記

Orz日記 by Akio Morita

ToDo:

  • 15 SAD Fit[]回りの障害事例の解析
  • 10 smart pointer版PEGクラスの再実装(Left Recursionまわり)
2006|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|06|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|07|08|09|10|11|12|
2013|01|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|06|07|08|10|12|
2016|01|02|03|05|06|08|10|11|
2017|01|02|03|04|05|06|07|09|10|11|12|
2018|01|02|03|04|06|07|08|09|10|11|12|
2019|01|03|04|05|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|

2007-02-20

_ [FreeBSD]em driver解決編

調査の結果、原因は 82573Lの power management回りの不具合らしぃことが判明 (82573(V/L/E) TX Unit Hang messages参照)

後期型では、出荷時のEEPROMの configurationで無効化されているそうで、 EEPROMを修正するツールが出回っているようです

Knoppinxの ethtoolを使って Intel(R) PRO/10/100/1000/10GbE Drivers Wiki に置いてある fixeep-82573-dspd.shで修正して解決しました

freebsd-stableの 6.2-RELEASE em0 watchdog timeouts -- sometimes (w/partial workaround) スレッドの 記事 に付属するDOSベースのツールや MSIの Intel LAN firmwareもたぶん同じ修正をしているのだと思う

_ [雑記]82573L

netioの測定によれば...82573Lって新しい石なのに 82545EMより遅い Orz

/sys/dev/em/if_em.cを読むと 82573Lって buffer sizeが削られてる... (82547より前の石は 64kなのに 82573Lは半分の32kしかないぞ)


2008-02-20

_ [SAD][Fortran]Fortranの編集記述子

SAD掲示板では、writeb論争が繰り返されておりますが、 write文と編集記述子の仕様を求めて Web上を彷徨い歩くはめに...

まずは、一個発見♪ XL Fortran 95のマニュアル には、Q\$IBM拡張とある。 明らさまに拡張と書かれている以上、Fortran95の編集記述子には 改行抑止制御は実装されていないことに...

Fortran2003には、この拡張は入っているのかな? Fortran2003完全準拠のコンパイラもまだ無いのに、 Fortran2008(2003のマイナーアップデート)が出てくるという話だが...

あと、編集記述子の要素数より多い要素をWRITE文に記述した場合の動作定義が判らない... Orz

HP Fortranのマニュアル にそれらしき記述を発見、それによると編集記述子の 最後まで使いきったら、一度出力終了して、再度出力を始める際に 基本的には制御は、入れ子レベル 1 の右端のグループの反復数に戻さる らしい。 さらに、入れ子レベル 1 の右端のグループに反復数が存在しなければ、制御はそのグループ自体に戻れ入れ子レベル 1 のグループが存在しなければ、制御は書式仕様内の最初の編集記述子に戻されるそうなので、同じ形式("A1")で 長さnのinteger*1配列から 文字列を吐き出させる場合(\$,nA1)(\$,A1)は 同値ということか。

ふむ、少なくとも HP Fortranでのコードは簡単に書けることが判った。

ただ、これだけだとHP Fortranの実装がそうなっているのか Fortran規格でそう実装すべきを規定されているのか区別が付かない。

ふむ、 HP Fortranの編集記述子の 解説によれば、\$の改行抑制と同様の機能で 停留入出力と呼ばれ る機能が有り、これは Fortran90規格に含まれるようだ。 (やはり、\$は HP Fortranでの拡張と書かれている)

改行制御をまとめると、

  • Fortran90だと、停留入出力を使えば、改行を抑制した出力が可能。
  • Fortran77の標準規格内では、逆立ちしても無理

ということか

write文に ADVANCE='NO'を指定して停留出力を使うと 最後の改行が抑制されるが、編集記述子の数が不足して使いまわされる際に 出力の停止と再開の間で改行が出力される (g95-0.91/gfortran-4.2.4pre/ifort-8.1で確認)

たぶん、Fortran90的には (#a1)な編集記述子を合成して、 ADVANCE='NO'で出力すれば OK、 IBM拡張を当てにするなら (\$,a1)で十分

ただし、ADVANCE予約語は g77の Fortran90モードでは 実装されていない Orz

_ [SAD][Fortran]writebないでの form合成

write(form,*)lで整数lを文字列化した際に、 右詰め・左詰めの違いが出ることに関して SAD掲示板で下記の試験結果を

--- begin test.f ---
      integer num
      character*12 form
      num = 12
      write(form,*) num
      write(*,*)'form=[',form,']'
      end
--- end test.f ---

0. DEC Fortran on acsad0
% f77 test.f && ./a.out
 form=[          12]

1. GNU Fortran (GCC) 4.2.4 20080213 (prerelease)
% gfortran42 test.f && ./a.out
 form=[          12]

2. GNU Fortran (GCC) 3.4.6 [FreeBSD]
% g77-34 test.f && ./a.out
 form=[ 12         ]

3. Intel(R) Fortran Compiler for 32-bit applications, Version 8.1    Build 20060606Z
% ifort test.f && ./a.out
 form=[          12]

4. G95 0.91
% g95 test.f && ./a.out
 form=[ 12         ]

報告したが、整数変数記述子は右揃えなので write文に真面目に編集記述子(I12)を付ければ 全ての環境で右詰めで出力されることに、思い至った。 もし、そうでなければ...その Fortranコンパイラは壊れている。

_ [SAD][Fortran]writeb on g95

どうやら、g95はwrite文でのフォーマット変換の解釈が厳格で、 文字型の編集記述子aへ整数型を渡すのは不正らしい。

Fortran runtime error: Expected CHARACTER for item 1 in formatted transfer, got INTEGER. If you want to make character descriptors typeless, compile with -fsloppy-char

だそうです

本日のツッコミ(全1件) [ツッコミを入れる]

_ alexd259 [Very nice site!]


2014-02-20

_ [雑記]今週の大雪は回避された よかった〜

コンビの店頭在庫の状況も回復してきているようで、物流も正常化してきたかな


2024-02-20

_ [FreeBSD]graphics/drm-61-kmod on FreeBSD 14.0-STABLE

1400509にてdrm-61-kmodビルドに必要なlinuxkpiがMFCされた ports-CURRENT側はまだ対応されてないので以下のQuick HackでビルドとAlderLake-N(Intel N305)での動作を確認した

index 43f0d5be31aa..5eca31fcb15e 100644
--- a/graphics/drm-61-kmod/Makefile
+++ b/graphics/drm-61-kmod/Makefile
@@ -26,7 +26,7 @@ GH_TAGNAME=   ${DRM_KMOD_GH_TAGNAME}

 .include <bsd.port.options.mk>

-.if ${OPSYS} == FreeBSD && ${OSVERSION} < 1500008
+.if ${OPSYS} == FreeBSD && (${OSVERSION} < 1400509 || 1500000 <= ${OSVERSION} && ${OSVERSION} < 1500008)
 IGNORE=                not supported on older than 15.0, no kernel support
 .endif
 .if ${OPSYS} != FreeBSD

カテゴリー: Admin | Emacs | EPICS | Fortran | FreeBSD | GCC | hgsubversion | IPv6 | KEKB | LHC | Lisp | LLVM | MADX | Ryzen | SAD | samba | tDiary | unix | WWW | YaSAI | お仕事 | イベント | 出張 | 宴会 | 数学 | 艦これ | 買いもの | 追記 | 雑記