2011年01月05日

GCC 4.5でOpenMP


せっかく苦労して自前ビルドしたGCC 4.5なので、OpenMPを試してみました。

自前ビルドの手順は以下の記事を参考にしてください。
GCC 4.5のビルド
GCC 4.5.2リリース

サンプルプログラムは、以下のページのものを使用しました。
http://en.wikipedia.org/wiki/OpenMP

・C
ソースコード: helloworld.c
以下のようにコンパイルします。
gcc -fopenmp helloworld.c -static
または、
gcc -fopenmp helloworld.c -lgomp -lpthread

・C++
ソースコード: helloworld.cpp
以下のようにコンパイルします。
g++ -fopenmp helloworld.cpp -static
または、
g++ -fopenmp helloworld.cpp -lgomp -lpthread

a.exe ができていれば成功です。
実行すると、こんな感じになります。

Hello World from thread 1
Hello World from thread 0
There are 2 threads

CPUがAthlon X2なので、コア数を自動で取得して2並列になっています。

いろいろ使い道がありそうですが、詳しいことはよくわかりません。


GCCのバイナリを配布している、KomisarさんとかTDMさんのものでOpenMPが使えるかどうかは試していませんので、あしからず。

2011/01/08 追記
本日付の、Komisarさんの所の最新版はGCC 4.5.2で、OpenMPは使えませんでした。
http://komisar.gin.by/mingw/
TDMさんの所の最新版はGCC 4.5.1で、一応OpenMPが使えました。
http://tdm-gcc.tdragon.net/download
posted by あべちん at 21:55 | Comment(0) | TrackBack(0) | GCC自前ビルド

2010年12月17日

GCC 4.5.2リリース


GCC 4.5.2が、2010/12/16にリリースされました。

自前ビルドの手順はGCC 4.5.0と同じで、configureオプションに、
--enable-lto
を追加するだけですので、こちらの記事を参考にしてください。
GCC 4.5のビルド

私の場合、configureオプションはこのようにしています。

$ ../gcc-4.5.2/configure --prefix=/mingw --build=mingw32 --with-arch=i686 --with-tune=generic --enable-languages=c,c++,objc,obj-c++ --enable-libgomp --disable-werror --enable-threads --disable-nls --disable-win32-registry --disable-sjlj-exceptions --with-dwarf2 --enable-lto --with-system-zlib --with-host-libstdcxx=-lstdc++ --enable-libstdcxx-debug --enable-cxx-flags='-fno-function-sections -fno-data-sections' --disable-libstdcxx-pch --enable-version-specific-runtime-libs --disable-bootstrap

参考までに、ビルドスクリプトをこちらに置いておきます。
gcc-4.5.2-build-dw2-generic.sh

2011/03/10 追記
makeの時のフラグを、バイナリのサイズが小さくなるように修正しました。
gcc-4.5.2-build-dw2-generic-2.sh

当サイトにはバイナリは置いていませんので、自分でビルドするのが面倒という方は、こちらがおすすめです。
Komisar Mingw HowTo
http://komisar.gin.by/mingw/
posted by あべちん at 17:41 | Comment(0) | TrackBack(0) | GCC自前ビルド

2010年12月13日

GCC 4.6.0 (gcc-4.6-20101211) をビルドしてみたYO! その4


GCC 4.6.0 (gcc-4.6-20101211) をビルドしてみました。

gcc-4.6-20101204に比べて、lto-plugin.c、gdtoa.hなどが修正されました。

自前ビルドの手順はGCC 4.5.0とほとんど同じですので、こちらの記事を参考にしてください。
GCC 4.5のビルド

gcc-4.6-20101211のソースに、以下のパッチを適用してください。
libgomp用のpthreadsスタティックライブラリパッチ
libgomp-pthreads.diff

make-temp-fileパッチ
make-temp-file.diff

2011/01/05 追記
libgomp用のパッチを変更しました。
PTW32_STATIC_LIBフラグは、最新のpthreadsライブラリでは不要になったため、削除しました。
libgomp-configure.diff

$ cd gcc-4.6-20101211
$ patch -p1 < ../libgomp-configure.diff
$ patch -p1 < ../make-temp-file.diff

ソースが準備できたら、configure、make、make installします。


posted by あべちん at 13:43 | Comment(0) | TrackBack(0) | GCC自前ビルド