by
Anonymous Coward
on 2007年05月19日 22時53分
(#1159757)
インストールしてgfortranのOpenMPを使ってみた
4.2.0 では必要ないかもしれないけど、GMP Libraryを念のためインストール。
$ tar jxf gmp-4.2.1.tar.bz2
$ cd gmp-4.2.1
$ mkdir ppc
$ cd ppc/
$ ../configure --prefix=/usr
$ make
$ su
# make install
# exit
$ make check 4.2.0 では必要ないかもしれないけど、MPFR Libraryも念のためインストール。
$ tar jxf mpfr-2.2.1.tar.bz2
$ cd mpfr-2.2.1
$ mkdir ppc
$ cd ppc/
$ ../configure --prefix=/usr
$ make
$ su
# make install
# exit で、gcc-4.2.0をコンパイル/インストール。
$ tar jxf gcc-4.2.0.tar.bz2
$ cd gcc-4.2.0
$ mkdir ppc
$ cd ppc/
$ ../configure --prefix=/usr --enable-languages=c,c++,fortran
$ make bootstrap
$ su
# make install
# exit で、OpenMPのテスト。参考:https://web.kudpc.kyoto-u.ac.jp/Archives/PDF/NewsLetter/2003-6_openmp.pdf $ cat omp1.f program omp1
!$use omp_lib
implicit none
integer i
write(6,*) "Before"
!$omp parallel
do i=1,200000000; end do ! pstree => make---omp1---omp1---6*[omp1]
write(6,*) "Hello OMP"
!$omp end parallel
write(6,*) "After" end program omp1 $ cat Makefile #-*-Makefile-*- for OpenMP # Time-stamp: <07/05/18 13:40:39 yukie> ##
インストールしてgfortranのOpenMPを使ってみた (スコア:3, 参考になる)
4.2.0 では必要ないかもしれないけど、GMP Libraryを念のためインストール。
$ tar jxf gmp-4.2.1.tar.bz2
$ cd gmp-4.2.1
$ mkdir ppc
$ cd ppc/
$ ../configure --prefix=/usr
$ make
$ su
# make install
# exit
$ make check
4.2.0 では必要ないかもしれないけど、MPFR Libraryも念のためインストール。
$ tar jxf mpfr-2.2.1.tar.bz2
$ cd mpfr-2.2.1
$ mkdir ppc
$ cd ppc/
$ ../configure --prefix=/usr
$ make
$ su
# make install
# exit
で、gcc-4.2.0をコンパイル/インストール。
$ tar jxf gcc-4.2.0.tar.bz2
$ cd gcc-4.2.0
$ mkdir ppc
$ cd ppc/
$ ../configure --prefix=/usr --enable-languages=c,c++,fortran
$ make bootstrap
$ su
# make install
# exit
で、OpenMPのテスト。参考:https://web.kudpc.kyoto-u.ac.jp/Archives/PDF/NewsLetter/2003-6_openmp.pdf
$ cat omp1.f
program omp1
!$use omp_lib
implicit none
integer i
write(6,*) "Before"
!$omp parallel
do i=1,200000000; end do ! pstree => make---omp1---omp1---6*[omp1]
write(6,*) "Hello OMP"
!$omp end parallel
write(6,*) "After"
end program omp1
$ cat Makefile
#-*-Makefile-*- for OpenMP
# Time-stamp: <07/05/18 13:40:39 yukie>
##
## gfortran (gcc-4.2.0 or higher)
FC=gfortran
FFLAGS=-g -Wall -ffree-form -pipe -fopenmp
## ifort (Intel Fortran, version 9.1 or higher)
#FC=ifort
#FFLAGS=-g -openmp -free -warn all
all: omp1
OMP_NUM_THREADS=6 ./$<
omp1: omp1.o
$(FC) $(FFLAGS) -o $@ $^
clean:
rm -f core *.o *.mod omp1
$ make
gfortran -g -Wall -ffree-form -pipe -fopenmp -c -o omp1.o omp1.f
gfortran -g -Wall -ffree-form -pipe -fopenmp -o omp1 omp1.o
OMP_NUM_THREADS=6 ./omp1
Before
Hello OMP
Hello OMP
Hello OMP
Hello OMP
Hello OMP
Hello OMP
After
$
実行途中にpstreeをすると楽しい。なんか間違ってたらごめん。