[Go to BBS]
All articles in a thread
SubjectWindowsからのSAD
Article No649
Date: 2008/10/03(Fri) 09:03:26
ContributorKota Torikai
初めて投稿させていただきます。
よろしくお願いいたします。

Windows上でSADを動かそうと試み、
OS: Windows Vista SP1
Cygwin DLL version 1.5.25-15 + oldsad-snapshot-2008-10-01.tar.gz
の組み合わせでコンパイルを試しました。
(Unixはコマンドが打てる程度の浅い経験者です)

0. Oideさんの投稿されたsad.confを元に使用
wgetがCygwinにあることを確認

1. FC=gfortranを
FC=gfortran-4に変更

2.Moritaさんの投稿されたoldsad/mk/sad/obj.mkのコメントアウト
#OBJ_NetSemaphore=tfNetSemaphore_.o netSemaphore.o
#SAD_STATIC_DEF_FUNCS+=NetSemaphore

を行いました。
tcl/tkのコンパイル部分は通過しましたが、
tfNetworkIO_.cのコンパイルでエラーが発生しました:
------------------------------------------------------------
gcc -o tfNetworkIO_.o -c -g -O1 -U_WIN32 -Wall -std="gnu99" -DSAD_FORCE_X11
-I/cygdrive/c/cygwin/usr/oldsad/oldsad-snapshot-2008-10-01/src -I/usr/local/SAD/
arch/i386-CYGWIN_NT-6.01/include -I/usr/X11R6/include -I/usr/local/SAD/arch/i386
-CYGWIN_NT-6.01/include \
/cygdrive/c/cygwin/usr/oldsad/oldsad-snapshot-2008-10-01/src/tfN
etworkIO_.c
/cygdrive/c/cygwin/usr/oldsad/oldsad-snapshot-2008-10-01/src/tfNetworkIO_.c: In
function `tfSocketOpen':
/cygdrive/c/cygwin/usr/oldsad/oldsad-snapshot-2008-10-01/src/tfNetworkIO_.c:100:
error: `NI_MAXSERV' undeclared (first use in this function)
/cygdrive/c/cygwin/usr/oldsad/oldsad-snapshot-2008-10-01/src/tfNetworkIO_.c:100:
error: (Each undeclared identifier is reported only once
/cygdrive/c/cygwin/usr/oldsad/oldsad-snapshot-2008-10-01/src/tfNetworkIO_.c:100:
error: for each function it appears in.)
/cygdrive/c/cygwin/usr/oldsad/oldsad-snapshot-2008-10-01/src/tfNetworkIO_.c:101:
error: storage size of 'hints' isn't known
...以下エラーメッセージ
------------------------------------------------------------
oldsad/mk/sad/obj.mk内のtfNetworkIO部分をコメントアウトして再度試しましたが
異なるエラーが発生しました。
tfNetworkIOは何に使われるコードでしょうか?

SADは高機能なソフトであるがゆえに
複雑な印象で、最初のインストールで躓いてしまいます。
(makefile等で相当簡略化されていることはよく理解しています)
たとえばシミュレータとしてだけ使いたい(EPICSのような高度操作まで要求しない)
ユーザーがかなりの数いるのではないかとも考えています。

makefileとSADのコード階層まで理解する余裕がなく、
vmwareでの仮想マシン作成機能は有料のため
ソースの改変をせずに試せる方法はないかと探していたところ、
http://mkosaki.blog46.fc2.com/blog-entry-32.html
でQemuという仮想マシン作成ソフト+vmware player(無料)+CentOSで
Linuxが使える、という記事を見つけました。
仮想マシン+CentOSのインストールは無事完了し、
これからSADインストールを試します。
サンプルが計算できましたらまたご報告します。

SubjectRe: WindowsからのSAD
Article No650
Date: 2008/10/03(Fri) 18:04:56
ContributorAkio Morita
> oldsad/mk/sad/obj.mk内のtfNetworkIO部分をコメントアウトして再度試しましたが
> 異なるエラーが発生しました。
> tfNetworkIOは何に使われるコードでしょうか?
>
HostName[], GetHostAddrByName[], GetHostNameByAddr[], GetHostByAddr[],
TCPOpen[], UDPOpen[], TCPAccept[], SelectUnit[]関数を提供しています

src/tfNetworkIO_.cを Cygwinでコンパイルできないのは、Cygwinの newlibが
IEEE Std 1003.1-2004(POSIX.1)/RFC 3493にある
Address family independentな network APIをサポートしないためです。

これに関しては、独自に実装している人がいて成果物が
http://win6.jp/Cygwin/index-j.html
で公開されています。

SubjectRe^2: WindowsからのSAD
Article No653
Date: 2008/10/06(Mon) 10:43:21
ContributorKota Torikai
> これに関しては、独自に実装している人がいて成果物が
> http://win6.jp/Cygwin/index-j.html
> で公開されています。

サポートありがとうございます。
このAPIを追加すればCygwinでもSADが走ると考えてよいのでしょうか?

SubjectRe^3: WindowsからのSAD
Article No655
Date: 2008/10/06(Mon) 16:14:06
ContributorAkio Morita
> > これに関しては、独自に実装している人がいて成果物が
> > http://win6.jp/Cygwin/index-j.html
> > で公開されています。
>
> サポートありがとうございます。
> このAPIを追加すればCygwinでもSADが走ると考えてよいのでしょうか?
>
tfNetworkIO_.cが、RFC3493の network API不足でコンパイルできない問題は解決します。
動くかどうかは別の問題。

SubjectRe: WindowsからのSAD
Article No651
Date: 2008/10/03(Fri) 18:51:43
ContributorAkio Morita
> SADは高機能なソフトであるがゆえに
> 複雑な印象で、最初のインストールで躓いてしまいます。
> (makefile等で相当簡略化されていることはよく理解しています)
> たとえばシミュレータとしてだけ使いたい(EPICSのような高度操作まで要求しない)
> ユーザーがかなりの数いるのではないかとも考えています。
>
* 意図的に設定しない限り EPICSはリンクされません
* MacOSX/i386 MacOSX/ppc Linux/i386 FreeBSD/i386 FreeBSD/amd64辺りの
サポートされた環境であれば、コンパイラの追加インストールを行えば
(Fortranが標準で含まれない or GCCなどが古い)、コンパイラの選択に関する設定を
追加するだけで最低限の機能のものはコンパイル出来るとおもいます。

SubjectRe^2: WindowsからのSAD
Article No654
Date: 2008/10/06(Mon) 11:29:21
ContributorKota Torikai
お世話になります。サポートありがとうございます。

質問です。cvsでダウンロードした
VMware/CentOS上のSAD(2008.10.01)のsad.confに
USE_GCC=4.2.3|4.3.0|4.4.0
と記述があるのは、4.2.3以降に大きな改造が生じたためでしょうか?
また4.1.2以前でコンパイルは可能でしょうか?

SubjectRe^3: WindowsからのSAD
Article No656
Date: 2008/10/06(Mon) 16:23:59
ContributorAkio Morita
> お世話になります。サポートありがとうございます。
>
> 質問です。cvsでダウンロードした
> VMware/CentOS上のSAD(2008.10.01)のsad.confに
> USE_GCC=4.2.3|4.3.0|4.4.0
> と記述があるのは、4.2.3以降に大きな改造が生じたためでしょうか?
> また4.1.2以前でコンパイルは可能でしょうか?
>
4.2系列以前の GCCをサポートする設定は積極的に入れていない
また、CVS MAIN trunkのビルドテストは最近やっていないので何が起こるかは不明

現在の GCCは 4.3.x系列がメインストリームなので4.3.2以降が推奨かな?
#GCC 4.1系列は、すでに本家のメンテナンスから外れてる気がするのだが...

SubjectRe^4: WindowsからのSAD
Article No657
Date: 2008/10/06(Mon) 21:03:58
ContributorKota Torikai
いつもお世話になります。

> 現在の GCCは 4.3.x系列がメインストリームなので4.3.2以降が推奨かな?
> #GCC 4.1系列は、すでに本家のメンテナンスから外れてる気がするのだが...

導入する前にお伺いすればよかったなと思います。
この記事を読む前に4.3.0を導入してしまったのですが
なんとかgcc4.3.0 + vmware + CentOS5.2にSADを導入できました。
ベンチマークの結果を報告します。

bench.sad
*********** summary of Bench mark
Function Test .435933969914913
Optics Test 9.975484013557434
Tracking Test 10.237442970275879
Matching Test 22.233619689941406
bench2.sad
*********** summary of the bench mark
Function Test 3.017542034387589
Optics Test 5.25520133972168
Tracking Test 7.068924903869629
Matching Test 4.365335464477539
Overall Score (smaller is faster): .245694798373041

設定ONにしたsad.conf
#--------------------------------
#!sad.conf.minimum
COMPILER=GNU
USE_GCC=4.2.3|4.3.0|4.4.0
_USE_GFORTRAN= YES
FC=gfortran
CC=gcc
FOPT = -O2 -fno-second-underscore -fdollar-ok -fargument-alias -mpreferred-stack-boundary=4 mfancy-math-387 -frecursive -fbackslash -std=legacy -fall-intrinsics
SAD_ROOT=/usr/local/SAD
USE_X11=YES
USE_TCLTK=YES
#--------------------------------

SubjectRe^5: WindowsからのSAD
Article No658
Date: 2008/10/06(Mon) 21:50:01
ContributorAkio Morita
> 設定ONにしたsad.conf
> #--------------------------------
> #!sad.conf.minimum
> COMPILER=GNU
> USE_GCC=4.2.3|4.3.0|4.4.0
> _USE_GFORTRAN= YES
> FC=gfortran
> CC=gcc
> FOPT = -O2 -fno-second-underscore -fdollar-ok -fargument-alias -mpreferred-stack-boundary=4 mfancy-math-387 -frecursive -fbackslash -std=legacy -fall-intrinsics
> SAD_ROOT=/usr/local/SAD
> USE_X11=YES
> USE_TCLTK=YES
> #--------------------------------
USE_GCCは、使用する GCCのバージョン番号を入れる変数なので、
この場合はUSE_GCC=4.3.0と書くのが正解

config/GCC.specでは左からバージョン番号らしき文字列を解釈するので
4.2.3|4.3.0|4.4.0と書いて有ると4.2.3と解釈されていると思う

_USE_GFORTRAN=YESは参照するコードが無いので意味がない&make framework的には
_で始まる変数はframework内部で使っている変数なので、framework(mk/sad.*.mk)の内部
動作を理解していない限り設定しない方が無難です。
# 内部動作を強制的に上書きする hackに使うのは自由ですが...

-fno-second-underscore -fdollar-ok -fargument-alias -mpreferred-stack-boundary=4は
自動的にSYS_FOPT経由で設定されるので不要なはず。

-fbackslashに関しては、USE_GCCで正しいバージョンが宣言されていれば自動的に
SYS_FOPT経由で必要な(-fbackslash/-fno-backslash)が設定されます。

-std=legacyもSYS_FOPTの-std=gnuでオーバーライドされるので意味がないはず。

あと、Linuxの場合 Dynamic Module Loaderが標準で有効に成るはずなので、
USE_X11/TCLTKを指定しなくても X11/Tkinter拡張モジュールが構築されて
インストールされます(使用時に、自動的に拡張モジュールがロードされる)

-recursive/-fall-intrinsics無しでもコンパイルできるはずというか、最小構成の sad.confだと...
SAD_ROOT=/usr/local/SAD
COMPILER=GNU
USE_GCC=4.3.0
FC=gfortran
CC=gcc
CXX=g++
で十分だと思います。
あとは最適化オプションに
FOPT=-O2
COPT=-O2
を追加するぐらいかな...

速度優先だと、GCCで最適化オプションをいじるより、
Interl C/Fortran compilerを持ってきた方が早くなります。

SubjectRe^6: WindowsからのSAD
Article No659
Date: 2008/10/07(Tue) 13:10:27
ContributorKota Torikai
> USE_GCCは、使用する GCCのバージョン番号を入れる変数なので、
> この場合はUSE_GCC=4.3.0と書くのが正解
>
> config/GCC.specでは左からバージョン番号らしき文字列を解釈するので
> 4.2.3|4.3.0|4.4.0と書いて有ると4.2.3と解釈されていると思う
・・・
> あとは最適化オプションに
> FOPT=-O2
> COPT=-O2
> を追加するぐらいかな...
>
> 速度優先だと、GCCで最適化オプションをいじるより、
> Interl C/Fortran compilerを持ってきた方が早くなります。

毎度適切なフォローありがとうございます。大変勉強になります。
ご記載いただいたsad.confの構成で再度試してみます。

質問が3つあります:

SADでのリング設計などの情報はSADWikiに掲載されていた
OHO'99では作り方があまりよくわかりませんでした。
黒田先生のテキストは残念ながらWeb上にpdfがありませんが、本を購入すれば
SADの使いかたなどが記載されているでしょうか?

FFSとは何の略でしょうか?
SAD自体とはどのような関係にあるのでしょうか?

SADはMathematica-Styleに沿っている、と
トップページにあるのですが、
もしSADのマニュアルがない間は
SADの入力法としてMathematicaは参考になるのでしょうか?

SubjectRe^7: WindowsからのSAD
Article No660
Date: 2008/10/07(Tue) 16:41:39
ContributorAkio Morita
> 1
> SADでのリング設計などの情報はSADWikiに掲載されていた
> OHO'99では作り方があまりよくわかりませんでした。
> 黒田先生のテキストは残念ながらWeb上にpdfがありませんが、本を購入すれば
> SADの使いかたなどが記載されているでしょうか?
>
「できる○×」みたいなチュートリアルを期待していると期待外れに終わると思います。
# 内容的には、SADの使い方自体ではなく、SADを使ってリング設計をする話なので
# ある程度SADの使い方に関する基礎知識が前提になると思います。

HowTO的には、SAD Wikiにある以下の文書が役立つかも知れません
(一部情報が古くなっていますので要注意)
http://www-kekb.kek.jp/Documentation/SAD/index.php?Tutorial%2FSAD%A4%CE%C6%FE%CC%E7%A5%DE%A5%CB%A5%E5%A5%A2%A5%EB

> 2
> FFSとは何の略でしょうか?
> SAD自体とはどのような関係にあるのでしょうか?
>
Final Focus Systemの略語
リニアコライダーの最終収束系を設計するために
開発された対話的な操作環境

> 3
> SADはMathematica-Styleに沿っている、と
> トップページにあるのですが、
> もしSADのマニュアルがない間は
> SADの入力法としてMathematicaは参考になるのでしょうか?
>
正しくは、SADを構成するモジュールの一つである FFS環境上の
スクリプト言語であるSADScriptが、その文法と意味論のモデルとして
Mathematicaを参考にしています。

したがって、文法と基礎的な組み込み関数を知る上では Mathematicaに
関する書籍を参考に出来ますが、SADScriptインタプリタにはMathematicaの
ような数式処理機能(例えば記号処理ベースな不定積分など)は備わっていません。
# その手の数式処理が欲しいなら、フリーのものだとMaximaなどがあります

SADScript自体は関数型言語であり、使っている述語や表現が異なりますが
LISPの変種とも言えます。その意味では、SADScriptを使ったプログラミングを
行う基礎知識として、LISPを初めとする関数言語やその根源となるλ計算の
知識が有効です。

SADScriptとTkinterのマニュアルとしては、生出さんのSAD/Tkinter Manual
http://acc-physics.kek.jp/SAD/SADTkinter.pdf
が、唯一の公式マニュアルだと思います。
ただし、マニュアル自身にも幾つか誤植や仕様変更により記述内容が古くなっている
部分があるので注意が必要です。

SubjectRe^8: WindowsからのSAD
Article No661
Date: 2008/10/08(Wed) 17:33:53
ContributorKota Torikai
いつもフォローありがとうございます。

> HowTO的には、SAD Wikiにある以下の文書が役立つかも知れません
> (一部情報が古くなっていますので要注意)
> http://www-kekb.kek.jp/Documentation/SAD/index.php?Tutorial%2FSAD%A4%CE%C6%FE%CC%E7%A5%DE%A5%CB%A5%E5%A5%A2%A5%EB
さっそく印刷しました。コーディング試してみます。

> SADScript自体は関数型言語であり、使っている述語や表現が異なりますが
> LISPの変種とも言えます。その意味では、SADScriptを使ったプログラミングを
> 行う基礎知識として、LISPを初めとする関数言語やその根源となるλ計算の
> 知識が有効です。
LISPについて・・・感触が分かりませんが試してみます。

> SADScriptとTkinterのマニュアルとしては、生出さんのSAD/Tkinter Manual
> http://acc-physics.kek.jp/SAD/SADTkinter.pdf
> が、唯一の公式マニュアルだと思います。
> ただし、マニュアル自身にも幾つか誤植や仕様変更により記述内容が古くなっている
> 部分があるので注意が必要です。
了解しました。マニュアルをダウンロードして印刷しました。

FFSのマニュアルやtutorial、MAIN LEVELの解説を読みましたが、
加速粒子をhadronに設定する方法が分かりませんでした。
hadronの設定は可能なのでしょうか?

SubjectRe^9: WindowsからのSAD
Article No662
Date: 2008/10/08(Wed) 19:47:08
ContributorAkio Morita
> FFSのマニュアルやtutorial、MAIN LEVELの解説を読みましたが、
> 加速粒子をhadronに設定する方法が分かりませんでした。
> hadronの設定は可能なのでしょうか?
>
私が知る限り、扱う粒子には力学的自由度(x,Px,y,Py,z,dP/P0)を除けば、
毛が質量(MASS)と電荷(CHARGE)の2本しか無いはずですなので、
ハドロンとかレプトンといった粒子の内部構造に関する区別は有りません。

既知のバグとして、CHARGEに関してはエレメントによっては
CHARGE=1以外で正しく動かないことが知られています
# 少なくとも、修正されたという話は聞いていない...

SubjectRe^10: WindowsからのSAD
Article No663
Date: 2008/10/14(Tue) 12:40:53
ContributorKota Torikai
お世話になっております。フォローありがとうございます。

> 既知のバグとして、CHARGEに関してはエレメントによっては
> CHARGE=1以外で正しく動かないことが知られています
> # 少なくとも、修正されたという話は聞いていない...

現在想定しているのはCHARGEが1以外の粒子なので
もし正しく動かないエレメントがあれば教えていただけると有難いです。