- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
<Edit>
I decided to put it into reverse and back up to a known starting point.
> cp intel composer_xe_2013_sp1.1.106/Samples/en_US/Fortran/mic_samples/LEO_Fortran_into/* . > make mic ... Build complete > ./leoF_intro.out
And what I get is:
System configuration pre-check Checking for Intel(R) Xeon Phi (TM) (Target CPU) devices... Number of Target devices installed: 1 ]7848: renam failed: No such file or directory on /tmp/coi_procs/1/.tmp_40_44/libimf.so -> /tmp/coi_procs/1/7848/libimf.so offload error: cannot start process on the deviice 0 (error code 1)
============================ end of edit ==========================
I believe that I have have some code that runs on the mic natively, as I was using the micload a couple of weeks ago. I assume this because it took a while to get the SOs moved around and the environment variables set to point to where the .so files were at before it started working.
<later...> I have a small program that uses OpenMP and parallel Do SIMD on the host, a single routine was tested to give the proper results and some benchmarking as done on the host with various threads=# given. It is a bit of a different beast as my vector code is in a library, which I compile with a makefile and have the xiar and xild used to create the libmic.a file. The calling (host) program is compiled seperately and I am not using xiar nor xild for that... Nor do I see an easy way to get there with the framework I am using which wraps the calling Fortran in a C wrapper.
I am to the point, after many hours of xiar and other issues, where it is now appearing to want run on the mic. Namely at the call to the mic offload I am seeing:
7305: rename failed: No such file or directory on /tmp/coi_procs/1/.tmp_04_22/libiomp5.so -> /tmp/coi_procs/1/7305/libiomp5.so offload error: cannot start process on the device 0 (error code 1)
As there was no /tmp/coi_procs, nor /tmp/coi_procs/1 , I created both and chmod 777 to both. Either the subdirectories in /tmp/coi_procs get destroyed or they never get created... (I am not sure which). When I ssh'ed into mic:0 I saw that there is a coi demon running.
--- Took a crack at removing the framework...
Apologies in advance as the machine is not connected to the net so I have to fat-finger it in.
ifort is: composer_xe-2013
MODULE VECTORF
USE OMP_LIB
USE MIC_LIB
USE ISO_C_BINDING
IMPLICIT NONE
INTEGER(KIND=4) :: MICTHREADS = 10
INTEGER(KIND=4) :: HOSTTHREADS = 40
TYPE(OFFLOAD_STATUS) :: MIC_STATUS
PUBLIC :: RH$INIT, RH$CVMUL ! And a lot more
PRIVATE
INTERFACE RH$CVMUL
MODULE PROCEDURE RH$VSMUL_C8, RH$CVMUL_R4 ! more
END INTERFACE
...
CONTAINS
!PURE
SUBROUTINE RH$INIT(NTHREADS, Use_Mic)
INTEGER(KIND=4) , INTENT(IN ) :: NTHREADS
LOGICAL(KIND=4) , INTENT(IN ) :: Use_Mic
MIC_Threads = 120
Host_Threads = OMP_GET_NUM_PROCS()
! More use_Mic and other stuff goes in here !
WRITE(*,*)'VF:1123 MIC_Threads =',MIC_Threads ,' Host_Threads =',Host_Threads
RETURN
END SUBROUTINE RH$INIT
!DIR$ ATTRIBUTES OFFLOAD:mic :: RH$VSMUL_C8R8C8
!PURE
SUBROUTINE RH$VSMUL_C8R8C8(X, Scale, Z, N)
INTEGER(KIND=4) , INTENT(IN ) :: N
COMPLEX(KIND=4), DIMENSION(N), INTENT(IN ) :: X
COMPLEX(KIND=4), DIMENSION(N), INTENT( OUT) :: Z
REAL(KIND=8) , INTENT(IN ) :: Scale
INTEGER(KIND=4) :: I
INTEGER(KIND=4) :: Parallel
!DIR$ ASSUME_ALIGNED X:64
!DIR$ ASSUME_ALIGNED Z:64
Parallel = OMP_IN_PARALLEL
IF(Parallel) THEN
!DIR$ PREFETCH X:1:16
!$OMP DO SIMD NUM_THREADS=(MICTHREADS) ALIGNED(X, Z) SHARED(X,Z,Scale)
DO I = 1 , N
Z(I)= X(I) * Scale
ENDDO
!$OMP END DO SIMD
ELSE
!DIR$ PREFETCH X:1:16
!$OMP PARALLEL DO SIMD NUM_THREADS=(MICTHREADS) SHARED(X,Z,Scale)
DO I = 1 , N
Z(I)= X(I) * Scale
ENDDO
!$OMP END PARALLEL DO SIMD
ENDIF
RETURN
END SUBROUTINE RH$VSMUL_C8R8C8
END MODULE VECTORF
The make file is:
DO_DBG = -nod-lines
F90_WARN = ifort -O0 -132 -fixed ${DO_DBG } -check all - warn all -recursive
F90_NOWARN = ifort -O3 -132 -fixed ${DO_DBG } -recursive
RHFLAGS = -shared -Wl
RHINKS = -I$(<mydir here>)/inc
RHINKS2 = -I$(<mydir here>)/lib/mic
RHINKS3 = -I$(<mydir here>)/inc
RHINKS4 = -I$(<anothedir here>)/inc
RHINKS5 = -I$(<ifort area>)/mkl/include
LIB = ../../lib/libmic.a
rh objects vectorf.0 #others
#--- Default rules ----
all: $(lLIB)
#--- Implicite rule ----
#%.0: %.f90
# $(F90) -c $< -o $@
#--- Depenedancies ----
vectorf.o: vectorf.f90
$(F90_NOWARN) $(RHINKS) $(RHINKS3) $(RHINKS4) -offload -offload-option,mic.compiler,"-z defs" -offload-attribute-target=mic -align -cpp -openmp -opemmp-report2 -axAVX -diag-file=vectorf.compile_txt -opt-report 2 -opt-report-file=vectorf.opt-rpt -Winline -vec-report=3 -no-vec-guard-write -c $, $@
clean: rm -f *.0 *.micmiod *.miod *.core.* *.compile_txt *.fpp *.opt_rpt ../libmic.a
$(LIB): $(rhobjects)
#was ar sr $(LIB) $(rhobjects)
xild -lib -qoffload-build rcs $(LIB) $(rhobjects)
xiar -goffload-build rcs $(LIB) $(rhobjects)
And it builds.
Host code:
PROGRAM TEST_LIB USE VECTORF IMPLICIT NONE !DIR$ ATTRIBUTES ALIGN: 64:: cinbuf !DIR$ ATTRIBUTES ALIGN: 64:: ctemp COMPLEX(KIND=4), DIMENSION(:), ALLOCATABLE :: cinbuf COMPLEX(KIND=4), DIMENSION(:), ALLOCATABLE :: ctemp REAL(KIND=8) :: Scale = 0.5 INTEGER(KIND=4) :: Iter = 1e6 INTEGER(KIND=4) :: I INTEGER(KIND=4) :: nFFT = 1048576 INTEGER(KIND=4) :: NTHREADS = 8 LOGICAL(KIND=4) :: Use_MIC = .TRUE. ALLOCATE(CTEMP(NFFT)) ALLOCATE(Cinbuf(NFFT)) DO I = 1, NFFT cinbuf(I) = CMPLX(I,(I-1)) ENDDO DO I = 1, Iter !DIR$ OFFLOAD VBEGIN TEARGET(mic:0) MANDATOR IN(cinbuf:LENGTH(nFFT) IN(Scale) OUT(cTemp:LENGTH(nFFT)) CALL RH$VSMUL(cInbuf, Scale, cTemp, nFFT) !DIR$ END OFFLOAD ENDDO IF(ALLOCATED(CTEMP) DEALLOCATE(CTEMP) IF(ALLOCATED(Cinbuf) DEALLOCATE(Cinbuf) END PROGRAM TEST_LIB
command to build the host/main:
ifort -O3 -cpp -fixed -132 -axAVX -openmp -L<mydir> -lmic test_lib.for -o test_lib.0
I either get the coi_proc issue with /tmp/coi_procs/1/libiomp5.so not copying, or I get mp_vectorf_rh$init_ not found
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
A combination of the Samples code and drdobbs Xeon Phi: A Jumpstart Introduction , and a coworker resulted in success.
Required is that the environment variable SINK_LD_LIBRARY_PATH needs to contain the following (maybe there is a .csh that sets some of this?)
#tsch setenv SINK_LD_LIBRARY_PATH <intel>/compiler/lib/mic: <intel>/mkl/lib/mic:<my library path>
When that is NOT correct then the /tmp/coi_procs/1/.?? does NOT get the library to transfer up to the MIC, and the result is the error message "7305: error rename failed".
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
A combination of the Samples code and drdobbs Xeon Phi: A Jumpstart Introduction , and a coworker resulted in success.
Required is that the environment variable SINK_LD_LIBRARY_PATH needs to contain the following (maybe there is a .csh that sets some of this?)
#tsch setenv SINK_LD_LIBRARY_PATH <intel>/compiler/lib/mic: <intel>/mkl/lib/mic:<my library path>
When that is NOT correct then the /tmp/coi_procs/1/.?? does NOT get the library to transfer up to the MIC, and the result is the error message "7305: error rename failed".
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page