Couldn’t I just tell R to use xild the intel linker instead of ld?

On 08 Nov 2013, at 16:26, Simon Zehnder <[email protected]> wrote:

> The DYLD_LIBRARY_PATH gets set by the compilervars.sh from intel and it 
> resolves to:
> 
> echo $DYLD_LIBRARY_PATH
> /opt/intel/composer_xe_2013_sp1.1.103/compiler/lib:/opt/intel/composer_xe_2013_sp1.1.103/compiler/lib/intel64:/opt/intel:/opt/intel/composer_xe_2013_sp1.1.103/ipp/../compiler/lib:/opt/intel/composer_xe_2013_sp1.1.103/ipp/lib:/opt/intel/composer_xe_2013_sp1.1.103/mkl/lib:/opt/intel/composer_xe_2013_sp1.1.103/tbb/lib
> 
> The first path points directly into the directory with the libiomp5.dyiib. So 
> theoretically when following 
> https://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/DynamicLibraries/100-Articles/DynamicLibraryUsageGuidelines.html
>  it should be founded during linking. Though looking into libR.dylib with 
> otool -L I see, that the libraries from Intel are referred to only by name 
> not by path. I think this information gets lost as soon as the dynamic 
> library libR.dylib is build. 
> 
> So, I hope I understand “fix the id in the iomp library” correctly: I change 
> via install_name_tool change @executable_path/ … the relative path to an 
> absolute one? 
> 
> Best
> 
> Simon
> 
> 
> 
> On 08 Nov 2013, at 15:19, Simon Urbanek <[email protected]> wrote:
> 
>> On Nov 8, 2013, at 4:05 AM, Simon Zehnder <[email protected]> wrote:
>> 
>>> Where does R in make install get its libraries/library paths from to be 
>>> installed? I set DYLD_LIBRARY_PATH and libiomp5.dylib is on that path … Is 
>>> there another variable to be set (DYLD_FALLBACK_LIBRARY_PATH I want to use 
>>> only, if no other possibility remains). 
>>> 
>> 
>> Well, you really don't want to set DYLD_LIBRARY_PATH since it breaks 
>> dependencies, but that's another topic. However, the error tells you that 
>> you don't have it on the path, otherwise you wouldn't get "image not found". 
>> Either way, as I said, what you really want is to fix the id in the iomp 
>> library so you don't get into the path troubles in the first place. Another 
>> way to go about it is to put the Intel dependencies into $R_HOME/lib - I 
>> wouldn't do that for development but that's a good option if you want to 
>> distribute the build to other machines.
>> 
>> Cheers,
>> Simon
>> 
>> 
>>> Best
>>> 
>>> Simon
>>> On 07 Nov 2013, at 19:52, Simon Urbanek <[email protected]> wrote:
>>> 
>>>> 
>>>> On Nov 7, 2013, at 1:30 PM, Simon Zehnder <[email protected]> wrote:
>>>> 
>>>>> Your and Brian’s guesses were right: the -openmp linker flag was it. It 
>>>>> compiles now fine, though I get errors in make check-all and make 
>>>>> install: 
>>>>> 
>>>>> Running a make check-all gives me (with and without flag -ipo)
>>>>> 
>>>>> Running examples in 'mgcv-Ex.R’ failed
>>>>> ...
>>>>> Loading required package: splines
>>>>>> plot(b,pages=1)
>>>>>> b<-gamm(y~s(x0,bs="tr",m=2)+s(x1,bs="ps",m=c(1,3))+
>>>>> +          s(x2,bs="tr",m=3)+s(x3,bs="tr",m=2),data=dat)
>>>>>> plot(b$gam,pages=1)
>>>>> Warning in sqrt(rowSums((P$X %*% x$Vp[first:last, first:last, drop = 
>>>>> FALSE]) *  :
>>>>> NaNs produced
>>>>> Error in if (se && pd[[i]]$se) { : missing value where TRUE/FALSE needed
>>>>> Calls: plot -> plot.gam
>>>>> Execution halted
>>>>> 
>>>>> A sudo make install gives me:
>>>>> 
>>>>> /opt/intel/composer_xe_2013_sp1.1.103/bin/intel64/icc -std=gnu99 -I. 
>>>>> -I../../src/include -I../../../R-3.0.2/src/include -I/usr/X11/include/ 
>>>>> -D__ACCELERATE__ -DHAVE_CONFIG_H    -fPIC  -O3 -ipo -openmp -xHost  
>>>>> -DR_HOME='"/usr/local/R/R-intel/R.framework/Versions/3.0/Resources"' -o 
>>>>> Rscript \
>>>>>     ../../../R-3.0.2/src/unix/Rscript.c
>>>>> installing packages ...
>>>>> building HTML index ...
>>>>> dyld: Library not loaded: libiomp5.dylib
>>>> 
>>>> ^^ your Intel libs (or at least libiomp5) are missing paths in the id 
>>>> string - probably not installed properly? You can hack around that using 
>>>> DYLD_FALLBACK_LIBRARY_PATH but it's better to fix the issue in libiomp5 
>>>> directly.
>>>> 
>>>> 
>>>>> Referenced from: /Users/simonzehnder/Downloads/build/bin/exec/R
>>>>> Reason: image not found
>>>>> /bin/sh: line 1: 87375 Done                    echo 
>>>>> "utils:::make.packages.html(.Library, verbose=FALSE, 
>>>>> docdir=\"/usr/local/R/R-intel/R.framework/Versions/3.0/Resources/doc\")"
>>>>> 87376 Trace/BPT trap: 5       | R_DEFAULT_PACKAGES=NULL LC_ALL=C 
>>>>> ../../bin/R --vanilla --slave > /dev/null
>>>>> make[2]: *** [install] Error 133
>>>>> make[1]: *** [install] Error 1
>>>>> make: *** [install] Error 1
>>>>> 
>>>>> It seems that it is connected with the MKL. I have in my MKL variable 
>>>>> “-lmkl_gf_lp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread. It seems 
>>>>> that libiomp5 is not linked to correctly. 
>>>>> 
>>>>> I uploaded also my config.log to 
>>>>> https://gist.github.com/simonsays1980/7359508 
>>>>> 
>>>>> Best
>>>>> 
>>>>> Simon
>>>>> 
>>>>> 
>>>>> 
>>>>> On 07 Nov 2013, at 15:33, Simon Urbanek <[email protected]> 
>>>>> wrote:
>>>>> 
>>>>>> 
>>>>>> On Nov 7, 2013, at 7:56 AM, Simon Zehnder <[email protected]> wrote:
>>>>>> 
>>>>>>> I am trying to build R with an Intel Compiler (14.0.3). Has anyone 
>>>>>>> before done it and could give me a hint for the configuration? 
>>>>>>> 
>>>>>>> I am sourcing the compilervars.sh for Intel and then configure R with 
>>>>>>> 
>>>>>>> ./R-3.0.2/configure OBJC="clang" 
>>>>>>> --enable-R-framework=/usr/local/R/R-intel 
>>>>>>> --x-includes=/usr/X11/include/ --x-libraries=/usr/X11/lib/ 
>>>>>>> --enable-memory-profiling --with-blas="$MKL" --with-lapack
>>>>>>> 
>>>>>>> Further Variables are:
>>>>>>> 
>>>>>>> CFLAGS=“-O3 -ipo -openmp -xHost”
>>>>>>> CXXFLAGS=“-O3 -ipo -openmp -xHost”
>>>>>>> MKL=“-lmkl_gf_lp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread”!
>>>>>>> 
>>>>>>> I get always the same error:
>>>>>>> 
>>>>>>> /opt/intel/composer_xe_2013_sp1.1.103/bin/intel64/icc -std=gnu99 
>>>>>>> -I../../../R-3.0.2/src/extra/zlib -I../../../R-3.0.2/src/extra/bzip2 
>>>>>>> -I../../../R-3.0.2/src/extra/pcre -I../../../R-3.0.2/src/extra  
>>>>>>> -I../../../R-3.0.2/src/extra/xz/api -I. -I../../src/include 
>>>>>>> -I../../../R-3.0.2/src/include -I/usr/local/include -DHAVE_CONFIG_H    
>>>>>>> -fPIC  -O3 -ipo -openmp -xHost  -c ../../../R-3.0.2/src/main/Rmain.c -o 
>>>>>>> Rmain.o
>>>>>>> /opt/intel/composer_xe_2013_sp1.1.103/bin/intel64/icc -std=gnu99  
>>>>>>> -L/usr/local/lib -o R.bin Rmain.o  -L../../lib -lR
>>>>>>> Undefined symbols for architecture x86_64:
>>>>>>> "___kmpc_begin", referenced from:
>>>>>>> _main in ipo_icc4xtjyH.o
>>>>>>> "___kmpc_end", referenced from:
>>>>>>> _main in ipo_icc4xtjyH.o
>>>>>>> ld: symbol(s) not found for architecture x86_64
>>>>>>> 
>>>>>>> Any clue what this could be? 
>>>>>>> 
>>>>>> 
>>>>>> The above certainly won't work, because you're missing linker flags - 
>>>>>> I'm pretty sure that you must use -openmp in the linker for it to work, 
>>>>>> I'm not sure about -ipo -- but doesn't R detect all those automatically? 
>>>>>> I don't think you should put them in manually. The actual error comes 
>>>>>> from missing libguide link flags, but they may be implicit if you fix 
>>>>>> the other problem.
>>>>>> 
>>>>>> Cheers,
>>>>>> S
>>> 
>> 
> 
> _______________________________________________
> R-SIG-Mac mailing list
> [email protected]
> https://stat.ethz.ch/mailman/listinfo/r-sig-mac

_______________________________________________
R-SIG-Mac mailing list
[email protected]
https://stat.ethz.ch/mailman/listinfo/r-sig-mac

Reply via email to