Hi! On Tue, 21 Oct 2014 21:24:13 +0400, Ilya Verbin <iver...@gmail.com> wrote: > This patch contains a plugin for libgomp and appropriate changes for > makefiles. > > The plugin uses liboffloadmic_host.so to interact with the device (or with an > emulator). Also the patch contains offload_target_main executable, which is > the > corresponding target side part of a libgomp plugin, and it uses > liboffloadmic_target.so. > > The plugin builds automatically with liboffloadmic.
With recent GCC trunk sources, builds of the Intel MIC Offload Plugin fail as follows: libtool: compile: [...]/build-gcc/./gcc/xg++ [...] -I[...]/install/offload-x86_64-intelmicemul-linux-gnu/x86_64-intelmicemul-linux-gnu/liboffloadmic/plugin -I[...]/install/offload-x86_64-intelmicemul-linux-gnu/lib/gcc/x86_64-intelmicemul-linux-gnu/6.0.0/include -c [...]/source-gcc/liboffloadmic/plugin/libgomp-plugin-intelmic.cpp -fPIC -DPIC -o .libs/libgomp_plugin_intelmic_la-libgomp-plugin-intelmic.o In file included from [...]/source-gcc/liboffloadmic/plugin/libgomp-plugin-intelmic.cpp:40:0: [...]/install/offload-x86_64-intelmicemul-linux-gnu/lib/gcc/x86_64-intelmicemul-linux-gnu/6.0.0/include/main_target_image.h:8628:1: error: narrowing conversion of '192' from 'int' to 'char' inside { } [-Wnarrowing] }; ^ [...]/install/offload-x86_64-intelmicemul-linux-gnu/lib/gcc/x86_64-intelmicemul-linux-gnu/6.0.0/include/main_target_image.h:8628:1: error: narrowing conversion of '192' from 'int' to 'char' inside { } [-Wnarrowing] [...]/install/offload-x86_64-intelmicemul-linux-gnu/lib/gcc/x86_64-intelmicemul-linux-gnu/6.0.0/include/main_target_image.h:8628:1: error: narrowing conversion of '164' from 'int' to 'char' inside { } [-Wnarrowing] [many more] Apart from the actual compilation error, it is surprising for me to see the GCC build reference/depend on the Intel MIC offloading compiler's installation directory (which I built and installed earlier), [...]/install/offload-x86_64-intelmicemul-linux-gnu/ -- is that the correct thing to do? Shouldn't the GCC build be self-contained? (I have not yet made an attempt to understand how the target and device liboffloadmic builds work together.) This main_target_image.h file is coming from here: > --- /dev/null > +++ b/liboffloadmic/plugin/Makefile.am > @@ -0,0 +1,123 @@ > +# Plugin for offload execution on Intel MIC devices. > +main_target_image.h: offload_target_main > + @echo -n "const int image_size = " > $@ > + @stat -c '%s' $< >> $@ > + @echo ";" >> $@ > + @echo "struct MainTargetImage {" >> $@ > + @echo " int64_t size;" >> $@ > + @echo " char name[sizeof \"offload_target_main\"];" >> $@ > + @echo " char data[image_size];" >> $@ > + @echo "};" >> $@ > + @echo "extern \"C\" const MainTargetImage main_target_image = {" >> $@ > + @echo " image_size, \"offload_target_main\"," >> $@ > + @cat $< | xxd -include >> $@ > + @echo "};" >> $@ > + > +offload_target_main: $(liboffload_dir)/ofldbegin.o offload_target_main.o > $(liboffload_dir)/ofldend.o > + $(CXX) $(AM_LDFLAGS) $^ -o $@ > + > +offload_target_main.o: offload_target_main.cpp > + $(CXX) $(AM_CXXFLAGS) $(AM_CPPFLAGS) -c $< -o $@ Here, I note that the xxd tool is being used, which in my distribution is part of the Vim editor's package, which -- as far as I know -- is not currently declared as a build dependency of GCC? Anyway, all that aside for the moment -- OK to commit the following? --- liboffloadmic/plugin/Makefile.am +++ liboffloadmic/plugin/Makefile.am @@ -69,7 +69,7 @@ main_target_image.h: offload_target_main @echo "struct MainTargetImage {" >> $@ @echo " int64_t size;" >> $@ @echo " char name[sizeof \"offload_target_main\"];" >> $@ - @echo " char data[image_size];" >> $@ + @echo " uint8_t data[image_size];" >> $@ @echo "};" >> $@ @echo "extern \"C\" const MainTargetImage main_target_image = {" >> $@ @echo " image_size, \"offload_target_main\"," >> $@ Grüße, Thomas
signature.asc
Description: PGP signature