研究系のみ のソフトウェアは研究系サーバ roo.cc.uec.ac.jpchip.cc.uec.ac.jpdale.cc.uec.ac.jp でのみ利用可能です.

MATLAB

Modulesで matlabロードされていることを確認してください.ロードされていなければロードしてください.

matlab コマンドで MATLAB が起動します.

user@roo[~]% matlab 

                     < M A T L A B (R) >
           Copyright 1984-2013 The MathWorks, Inc.
            R2013b (8.2.0.701) 64-bit (glnxa64)
                       August 13, 2013

>> 

使い方の詳細は,以下をご覧ください.

関連リンク 学外ページ


Maple

Modulesで mapleロードされていることを確認してください.ロードされていなければロードしてください.

maple コマンドで Maple が起動します.GUI を利用する場合は,xmapleコマンドを使ってください.

user@roo[~]% maple
    |\^/|     Maple 17 (X86 64 LINUX)
._|\|   |/|_. Copyright (c) Maplesoft, a division of Waterloo Maple Inc. 2013
 \  MAPLE  /  All rights reserved. Maple is a trademark of
 <____ ____>  Waterloo Maple Inc.
      |       Type ? for help.
> 

AVS/Express 研究系のみ

Modulesで avs-expressロードされていることを確認してください.ロードされていなければロードしてください.

vxp コマンドで AVS/Express が起動します.

user@roo[~]% vxp
X Window が必要です.SSH でログインしている場合は,X forward が有効になっていることを確認してください. 無効の場合は,ログイン時の ssh コマンドに -X オプションを指定して X Window 有効にしてください.

Gnuplot

Modulesで gnuplotロードされていることを確認してください.ロードされていなければロードしてください.

gnuplot コマンドで AVS/Express が起動します.

user@roo[~]% gnuplot

	G N U P L O T
	Version 4.6 patchlevel 4    last modified 2013-10-06 
	Build System: Linux x86_64

	Copyright (C) 1986-1993, 1998, 2004, 2007-2013
	Thomas Williams, Colin Kelley and many others

	gnuplot home:     http://www.gnuplot.info
	faq, bugs, etc:   type "help FAQ"
	immediate help:   type "help"  (plot window: hit 'h')

Terminal type set to 'x11'
gnuplot> 

Gaussian09/Gauss View 研究系のみ

Modulesで gaussianロードされていることを確認してください.ロードされていなければロードしてください.

gview コマンドで Gauss View が起動します.

user@roo[~]% gview

ターミナル内で Gaussian を起動する場合は,g09 コマンドを使ってください.

user@roo[~]% g09
 Entering Gaussian System, Link 0=g09

GCC

Modulesで gccロードされていることを確認してください.ロードされていなければロードしてください.

gcc コマンドで GCC が起動します.

user@roo[~]% gcc -v
・・・(略)・・・
gcc バージョン 4.8.2 (GCC) 

Modules によって,環境変数 LD_LIBRARY_PATH も自動でセットされます.

% echo $LD_LIBRARY_PATH
/opt2/gcc/4.8.2/lib64

関連リンク 学外ページ


Intel コンパイラ

Modulesで iccロードされていることを確認してください.ロードされていなければロードしてください.

icc コマンドで Intel コンパイラが起動します.

user@roo[~]% icc -v
icc version 14.0.0 (gcc version 4.4.7 compatibility)

Intel コンパイラは Intel Cluster Studio に含まれるコンパイラです.Intel Cluster Studio には,MKL などのライブラリが含まれており,Modules で icc をロードすることで,これらを使うための環境変数も設定されます.設定された環境変数の内容を確認するためには,以下のコマンドを実行してください.

% env | grep "intel"

関連リンク 学外ページ


PGI コンパイラ 研究系のみ

PGI コンパイラは PGI SDK の一部です.PGI SDK には様々な機能がありますが,ここでは,OpenACC による GPU を使った自動並列化を例にして利用方法を紹介します.

Modulesで pgigccロードされていることを確認してください.ロードされていなければロードしてください.

pgi は GCC 4.6 と依存関係があります.必ずpgiをロードする前にgcc/4.6.4 などをロードしておいてください.

下記のサンプルコードをvecadd.cという名前で保存してください.

#include <stdio.h>
#include <stdlib.h>

void vecadd( float *restrict c, float *a, float *b, int n ){
  #pragma acc kernels loop copyin(a[0:n],b[0:n]) copyout(c[0:n])
  {
    int i;
    for( i = 0; i < n; ++i )
      c[i] = a[i] + b[i];
  }
}

int main( int argc, char* argv[] ){
  int n = 100; /* length */
  float * a; /* c = a + b */
  float * b;
  float * c;

  int i;

  a = (float*)malloc( n*sizeof(float) );
  b = (float*)malloc( n*sizeof(float) );
  c = (float*)malloc( n*sizeof(float) );

  for( i = 0; i < n; ++i ){
    a[i] = (float)(i+1);
    b[i] = (float)(1000*i);
  }

  vecadd( c, a, b, n );

  for( i = 0; i < n; ++i ){
    printf("c[%d]:%f\n", i, c[i]);  
  }

  return 0;
}

下記のように,pgcc コマンドでコンパイルします.

pgcc -acc -Mcuda=cuda5.5,kepler -Minfo=accel -o vecadd vecadd.c
vecadd:
      5, Generating copyin(a[0:n])
         Generating copyin(b[0:n])
         Generating copyout(c[0:n])
         Generating NVIDIA code
      8, Loop is parallelizable
         Accelerator kernel generated
          8, #pragma acc loop gang, vector(128) /* blockIdx.x threadIdx.x */

-Minfo=accelオプションを指定することで,どのような自動並列化が行われたかがレポートされます.

生成されたバイナリを実行するためには,GPU を搭載したホストが必要です.情報基盤センターの研究系バックエンドサーバ chip & dale は,Nvidia の Tesla K20 を搭載しているので,これらで実行します.srunコマンドを用いて,先ほど生成されたバイナリをバッチジョブシステム経由で chip または dale 上で実行します(sbatchコマンドも利用可能です).-p back_trialオプション指定し,実行パーテションに back_tiral を指定することで,chip または dale で実行されます(処理量が大きい場合は,back_trialではなく,backを指定してください).

srun -p back_trial vecadd

関連リンク 学外ページ


CUDA 研究系のみ

Modulesで cudaロードされていることを確認してください.ロードされていなければロードしてください.

CUDA のコンパイラは nvcc で起動します.

user@roo[~]% nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2013 NVIDIA Corporation
Built on Wed_Jul_17_18:36:13_PDT_2013
Cuda compilation tools, release 5.5, V5.5.0

LD_LIBRARY_PATH等,ライブラリの設定等も Modules によって自動的に行われます.

関連リンク 学外ページ


JDK (Java Development Kit)

Modulesで jdkロードされていることを確認してください.ロードされていなければロードしてください.

JDK は Java の開発環境で,コンパイラは javac,インタプリタは java で起動します.

user@roo[~]% javac -version
javac 1.7.0_51
user@roo[~]% java -version
java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)

Intel MPI 研究系のみ

Modulesで mpi/icc-xxxxはバージョン番号)がロードされていることを確認してください.ロードされていなければロードしてください.

ここでは以下のサンプルプログラム mpisample.c を使います.

#include <stdio.h>
#include <mpi.h>

int main (int argc, char *argv[]){
  int rank, size;

  MPI_Init (&argc, &argv);
  MPI_Comm_rank (MPI_COMM_WORLD, &rank);
  MPI_Comm_size (MPI_COMM_WORLD, &size);
  printf( "Hello world from process %d of %d\n", rank, size );
  MPI_Finalize();

  return 0;
}

MPI プログラムのコンパイルは mpiicc コマンドで以下のように行います.オプションの詳細は mpiicc --help で確認してください.

user@roo[~]% mpiicc -o mpisample mpisample.c

コンパイルした MPI プログラムの実行はバッチジョブ・システム経由で行います.以下は srun コマンドを用いた例です.

user@roo[~]% srun -n 2 ./mpisample
Hello world from process 1 of 2
Hello world from process 0 of 2

バッチジョブとして実行する場合は,まず,以下のような内容でスクリプトを作成してください.ここではファイル名を batch.sh とします.

#!/bin/sh
#SBATCH -p back_trial
#SBATCH -n 4
#SBATCH -t 00:00:10

srun ./mpisample

次に,sbatchコマンドで提出してください.

% sbatch batch.sh
Submitted batch job 3446

上の例では,ジョブ番号は 3446 なので,実行結果は slurm-3446.outに出力されます.


MPICH 研究系のみ

Modulesで mpi/mpich-icc-xxxxはバージョン番号)がロードされていることを確認してください.ロードされていなければロードしてください.

ここでは以下のサンプルプログラム mpisample.c を使います.

#include <stdio.h>
#include <mpi.h>

int main (int argc, char *argv[]){
  int rank, size;

  MPI_Init (&argc, &argv);
  MPI_Comm_rank (MPI_COMM_WORLD, &rank);
  MPI_Comm_size (MPI_COMM_WORLD, &size);
  printf( "Hello world from process %d of %d\n", rank, size );
  MPI_Finalize();

  return 0;
}

MPI プログラムのコンパイルは mpicc コマンドで以下のように行います.オプションの詳細は mpicc --help で確認してください.

user@roo[~]% mpicc -o mpisample mpisample.c

コンパイルした MPI プログラムの実行はバッチジョブ・システム経由で行います.以下は srun コマンドを用いた例です.

user@roo[~]% srun -n 2 ./mpisample
Hello world from process 1 of 2
Hello world from process 0 of 2

バッチジョブとして実行する場合は,まず,以下のような内容でスクリプトを作成してください.ここではファイル名を batch.sh とします.

#!/bin/sh
#SBATCH -p back_trial
#SBATCH -n 4
#SBATCH -t 00:00:10

srun ./mpisample

次に,sbatchコマンドで提出してください.

% sbatch batch.sh
Submitted batch job 3446

上の例では,ジョブ番号は 3446 なので,実行結果は slurm-3446.outに出力されます.


mpiP 研究系のみ

mpiP は MPI プログラム用のプロファイラです.MPI プログラム中で,通信(MPI 関数の実行)に要した時間を分析し,プログラムをチューニングする時に便利です.

mpiP はIntel MPIもしくはMPICHと一緒に使います.ここではIntel MPI 使用時の使い方を例として示します.

まず,Modulesで mpi/impi-xxmpip/xxxxはバージョン番号)がロードされていることを確認してください.ロードされていなければロードしてください.

ここでは以下のサンプルプログラム bcastsample.c を使います.このプログラムは 1 回の Broadcast 通信(あるプロセスが持っている値を,他のすべてのプロセスに配る)を行います.

#include <stdio.h>
#include <mpi.h>

int main (int argc, char *argv[])
{
  int rank, size;
  int buf=1;
  
  MPI_Init (&argc, &argv); /* starts MPI */

  MPI_Comm_rank (MPI_COMM_WORLD, &rank); /* get current process id */
  MPI_Comm_size (MPI_COMM_WORLD, &size); /* get number of processes */

  if(rank == 0) buf = 9;
  
  printf( "Process %d : buf = %d\n", rank, buf );
  MPI_Bcast(&buf, 1, MPI_INT, 0, MPI_COMM_WORLD);
  if(rank == 0) printf( "Bcast done\n" );
  printf( "Process %d : buf = %d\n", rank, buf );

  MPI_Finalize();
  return 0;
}

mpiP は MPI 関数をフックし,その実行にかかった時間を測定します.コンパイル時に mpiP のライブラリを使用するように -lmpiPオプションを指定します.mpiP は他のいくつかのライブラリを利用していますので,-lm -lunwindもあわせて指定します.最終的なコマンドラインは以下になります.

user@roo[~]% mpiicc -o bcastsample -lmpiP -lm -lunwind bcastsample.c

コンパイルした mpiP 付き MPI プログラムの実行は通常通り バッチジョブ・システム経由で行います.以下は srun コマンドを用いた例です.

user@roo[~]% srun -n 2 bcastsample
mpiP: mpiP: mpiP V3.4.0 (Build Feb 16 2014/10:16:08)
mpiP: Direct questions and errors to mpip-help@lists.sourceforge.net
mpiP: 
Process 0 : buf = 9
Process 1 : buf = 1
Bcast done
Process 0 : buf = 9
Process 1 : buf = 9
mpiP: 
mpiP: Storing mpiP output in [./bcastsample.2.19887.1.mpiP].
mpiP: 

sbatchコマンドでバッチジョブスクリプトを提出する場合も通常通りです.

メッセージにあるように,./bcastsample.2.19887.1.mpiPに分析結果が出力されているので内容を確認してください.

・・・省略・・・
---------------------------------------------------------------------------
@--- MPI Time (seconds) ---------------------------------------------------
---------------------------------------------------------------------------
Task    AppTime    MPITime     MPI%
   0   0.000321   0.000262    81.62
   1   0.000373   0.000322    86.33
   *   0.000694   0.000584    84.15
・・・省略・・・
---------------------------------------------------------------------------
@--- Callsite Time statistics (all, milliseconds): 2 ----------------------
---------------------------------------------------------------------------
Name              Site Rank  Count      Max     Mean      Min   App%   MPI%
Bcast                1    0      1    0.262    0.262    0.262  81.62 100.00
Bcast                1    1      1    0.322    0.322    0.322  86.33 100.00
Bcast                1    *      2    0.322    0.292    0.262  84.15 100.00
・・・省略・・・

結果を見ると,この例では 1 回の Broadcast (Bcast) の実行がプログラム全体の実行時間の80%以上を占めていることがわかります.


IMSL C/C++ Fortran 研究系のみ

IMSL (International Mathematics and Statistics Library) 数値計算や統計解析などの関数を提供するライブラリです.情報基盤センターの研究支援システムでは,C/C++,Fortran 用の IMSL が利用できます.ここでは roo にインストールされているサンプルプログラムをコンパイルする方法を解説します.

C/C++ の場合

C/C++ 版 IMSL は Intel コンパイラと Intel MKL に依存しています.Modules で imsl/cnl-icc-xxxicc/xxxmkl/xxxxxはバージョン番号)がロードされていることを確認してください.ロードされていなければロードしてください.

以下のように,サンプルプログラムをホームディレクトリ以下の適当な場所にコピーしてください.

user@roo[~]% cp /opt2/vni/imsl/cnl801/lnxin121avx/examples/validate/cmath.c .

サンプルプログラムを以下のようにコンパイルしてください.IMSL は予め設定された環境変数を利用することで,必要なライブラリをリンクできます.

user@roo[~]% $CC $CFLAGS -o cmath cmath.c $LINK_CNL

正常に動作すると以下のような結果が得られます.

user@roo[~]% ./cmath
Library version:  IMSL C/Math/Library Version 8.0.1
Customer number:  999999

       Solution, x of Ax = b
         1           2           3
        -2          -2           3

The next call will generate an error

*** TERMINAL Error from imsl_f_lin_sol_gen.  The order of the matrix must be
***          positive while "n" = -10 is given.

Fortran の場合

Fortran 版 IMSL は Intel コンパイラに依存しています.Modules で imsl/fnl-icc-xxxicc/xxxxxはバージョン番号)がロードされていることを確認してください.ロードされていなければロードしてください.

以下のように,サンプルプログラムをホームディレクトリ以下の適当な場所にコピーしてください.

user@roo[~]% cp /opt2/vni/imsl/fnl701/lnxin121e64/examples/validate/imslmp.f90 .

サンプルプログラムを以下のようにコンパイルしてください.IMSL は予め設定された環境変数を利用することで,必要なライブラリをリンクできます.

user@roo[~]% $FC $F90FLAGS -o imslmpi imslmpi.f90 $LINK_FNL
user@roo[~]% ./imslmpi

詳細は,関連リンクをご覧ください.

関連リンク 学外ページ


Intel MKL 研究系のみ

Intel MKL (Math Kernel Library) は,線形代数,FFT,統計,データ・フィッテングなどの関数を提供するライブラリです. ここではチュートリアルのサンプルをコンパイルする方法を解説します.

チュートリアルに示されているプログラムdgemm_example.cを作成してください.

Modulesで mkl/xxxicc/xxxxxはバージョン番号)がロードされていることを確認してください.ロードされていなければロードしてください.

TBB を利用するプログラムのコンパイルには,下記のように,-mklオプション(-lmklではありません)の指定が必要です.

user@roo[~]% icc -mkl -o dgemm_example dgemm_example.c
user@roo[~] ./dgemm_example

詳細は,関連リンクをご覧ください.

関連リンク 学外ページ


Intel IPP 研究系のみ

Intel IPP (Integrated Performance Primitives) は,信号処理,画像処理,行列計算などで利用される基本的な演算を,Intel CPU 上で高速に実行するために最適化された関数群を提供するライブラリです.情報基盤センターのサーバも,Intel Xeon プロセッサを搭載しているため,IPP を使うことにより,より高いパフォーマンスを実現できる可能性があります.ここでは,GCC コンパイラで IPP を使ったプログラムをコンパイル・実行する例を紹介します.(Intel コンパイラでも利用可能です.)

まず,Modulesで ipp/xxxgcc/xxxxxはバージョン番号)がロードされていることを確認してください.ロードされていなければロードしてください.

ここでは以下のプログラム ippVecSum.c を例にします.このプログラムは配列に含まれる全要素の合計を計算するプログラムです.

#include <stdio.h>
#include <ipp.h>

int main(int argc, char* argv[])
{
  const int SIZE = 1024;
  Ipp64f *pSrc;
  Ipp64f pSum;

  pSrc = (Ipp64f *)ippMalloc(sizeof(Ipp64f) * SIZE);

  int i;
  for (i=0; i<SIZE; i++)
    pSrc[i] = (Ipp64f)i;

  ippsSum_64f(pSrc, SIZE, &pSum);

  printf("pSum = %f\n", pSum);

  ippFree(pSrc);

  return 0;
}

プログラムで使われている IPP の関数(ippMalloc(), ippSum_64f(), ippFree() )をリンクするためには,コンパイル時に -lippsオプションを指定します.コンパイル後に実行すると,以下の結果が得られます.

user@roo[~]% gcc -lipps -o ippVecSum ippVecSum.c
user@roo[~] ./ippVecSum 
pSum = 523776.000000

詳細は,関連リンクをご覧ください.

関連リンク 学外ページ


Intel TBB 研究系のみ

Intel TBB (Threading Building Blocks) は,C++ スレッド・プログラミング用のテンプレート・ライブラリです. ここではチュートリアルのサンプルをコンパイルする方法を解説します.

チュートリアルにしたがって,プログラムを作成し,subString.cppという名前で保存してください.

Modulesで tbb/xxxgcc/xxxxxはバージョン番号)がロードされていることを確認してください.ロードされていなければロードしてください.(Intel コンパイラを使うときは,gcc/xxx の代わりに,icc/xxxをロードしてください.)

TBB を利用するプログラムのコンパイルには,下記のように,-ltbbオプションの指定が必要です.(Intel コンパイラを使うときは,g++ の代わりに,icpcを使って下さい.)

user@roo[~]% g++ -ltbb -o subString subString.cpp
user@roo[~] ./subString

詳細は,関連リンクをご覧ください.

関連リンク 学外ページ