Timing Scan
【概要】
Timing Scanの引き継ぎ(2019.4.9~12)のときのlog
詰まったところ。
目次
Raw Data Analysis
CERNのサーバーがslc6からCentOS7に変わった(2019.4.2?)こともあり2018年のままのコードでは動かなかった。
コンパイル
source setup.shができなかった。
-bash: /afs/cern.ch/sw/lcg/external/gcc/4.9/x86_64-slc6/setup.sh: 許可がありません -bash: /afs/cern.ch/sw/lcg/app/releases/ROOT/6.04.14/x86_64-slc6-gcc49-opt/root/bin/thisroot.sh: 許可がありません
といわれた
setup.shとconfig/localconfig.lxplusの2つを変更。afsじゃなくてcvmfsに変えたかつrootのversionとコンパイラのversionをおとした。
setup.shの中身は
thisDir=$(dirname $(readlink -f ${BASH_SOURCE[0]})) echo $thisDir if [ -d /cvmfs/sft.cern.ch/lcg ] ; then source /cvmfs/sft.cern.ch/lcg/releases/LCG_72a/ROOT/5.34.25/x86_64-slc6-gcc48-opt/bin/thisroot.sh source /cvmfs/sft.cern.ch/lcg/external/gcc/4.8.4/x86_64-slc6/setup.sh fi export LD_LIBRARY_PATH=$thisDir/lib:$LD_LIBRARY_PATH export PATH=$thisDir/bin:$thisDir/script:$PATH export RAWDATADECODER_PATH=$thisDir
他にもDSO missing from command lineとかいうエラーが出た。config/localconfig.lxplusの中身を書き換えた。
ROOTFLAGS= -pthread -Wno-deprecated-declarations -m64 -I/cvmfs/sft.cern.ch/lcg/releases/LCG_72a/ROOT/5.34.25/x86_64-slc6-gcc48-opt/include ROOTLIBS= $(shell root-config --libs) CXXFLAGS= $(ROOTFLAGS) -std=c++11 -O3 -Iinc -Isrc LIBS += $(ROOTLIBS) -Llib -lRawDataAnalysis -lz OUT= RawDataDecoder_Pixel RawDataDecoder_IBL skim_pixel SO= libRawDataAnalysis .PHONY: all clean SRC_EXTS := cxx cpp SO_EXTS := so BIN_DIR := bin LIB_DIR := lib MACRO_DIR := macros SRCS := $(foreach E,$(SRC_EXTS),$(wildcard src/*.$(E))) BINS := $(foreach E,$(SRC_EXTS),$(patsubst src/%.$(E),$(BIN_DIR)/%,$(filter %.$(E),$(SRCS)))) MACROS := $(wildcard $(MACRO_DIR)/*.C) MACROS_SO := $(foreach E, C, $(patsubst $(MACRO_DIR)/%.$(E), $(MACRO_DIR)/%_C.so, $(filter %.$(E), $(MACROS)) ) )
-lzを加えた。これが具体的に何に効いたのかは不明。
skimming
src/skim_pixel.cxxを変更
read_payload()の中のbufferの定義を、malloc()を用いたものに変えた。メモリアクセスをスタック領域からじゃなくてヒープ領域からにしないと
segmentation fault(コアダンプ)とエラーが出て止まっていた。
buf_sizeの付近とBUF_MAXの付近の2箇所を変更。
unsigned char* buf = nullptr; unsigned char* uncomp_buf = nullptr; size_t buf_size_forMalloc = static_cast< size_t >( buf_size ); size_t uncomp_size_forMalloc = static_cast< size_t >( uncomp_size ); buf = static_cast< unsigned char* >( malloc( buf_size_forMalloc ) ); uncomp_buf = static_cast< unsigned char* >( malloc( uncomp_size_forMalloc ) ); // unsigned char buf[buf_size]; // unsigned char uncomp_buf[uncomp_size]; free(buf); free(uncompromising_buf);
malloc()は使用したあとif文の最後で必ずfree()する。
Timing Scan Analysis
コンパイル
Raw Data Analysisのときと同様にsetup.shとconfig/localsetup.lxplusを書き換えた。
TimingAnalysisのコードはROOT6に対応させてあったので、
/cvmfs/sft.cern.ch/lcg/releases/LCG_81c/ROOT/6.04.14/x86_64-slc6-gcc49-opt/include /cvmfs/sft.cern.ch/lcg/external/gcc/4.9.1/x86_64-slc6/setup.sh
/cvmfs/sft.cern.ch/lcg/releases/LCG_81c/ROOT/6.04.14/x86_64-slc6-gcc49-opt/bin/thisroot.sh
を使用した。
batch job
batch jobがLSF batch systemからHTCondorに変わったのでbatch jobを投げるスクリプトを書き換えた。
HTCondorの説明については CernBatchSystem 参照。
各LBごとにjobを投げるsubファイルを生成するためのスクリプト(makesub.sh)をつくった。
condor batchはsubファイルに何も指定しないと実行ディレクトリに生成物を持ってきてしまうので、実行ファイルの最後で生成物を消しておく必要があった。
実行ファイルはbsub_pixel_timing.shで、subファイルは00348197test.sub
bsub_pixel_decode.shはXXX.out.rootまでは出来たけどXXX.hist.rootがbatchで出来なかったときに使うためのスクリプト。
XXX.out.rootからXXX.hist.rootへの変換だけを行う。
変更が必要なのは、bsub_pixel_timing.sh(bsub_pixel_decode.sh)の中のeos directoryとoutput directory, bsub_pixel_timing.shの中で使われているdownload_skim.shの中のコードを取ってくるディレクトリの場所。
2020 Milestone run
DAOD_INDETRACKVARIDをつくるのに、errorが出て、作れない。
"NameError: name 'InDetPixelConditionsSummarySvc' is not defined") Using Athena/21.0.120 [cmake] with platform x86_64-centos7-gcc62-opt
関連リンク
・CERN Batch Service User Guide, Job submission http://batchdocs.web.cern.ch/batchdocs/local/submit.html