トップ 新規 編集 差分 一覧 Farm ソース 検索 ヘルプ PDF RSS ログイン

HPC講座で Hello World!

HPC講座で Hello World

(ここに倣って)

C

localmachine> ssh hpbla
#include <stdio.h>

int main (int argc, char* argv[]) {
  printf("Hello World!\n");
  return 0;
}
hpbla> gcc hello.c
hpbla> ./a.out
Hello World!

C++

#include <iostream>

using namespace std;

int main(int argc, char *argv[]) {
  cout << "Hello World!" << endl;
  return 0;
}

Fortran

Fortran 95

hello.f95

program hello
  print *, 'Hello, World!'
end program hello
> vi hello.f95
> gfortran -std=f95 hello.f95
> ./a.out
Hello, World!

Java

localmachine> ssh hpbla
  • HelloWorld.java
public class HelloWorld {

    public static void main (String[] argv) {
        System.out.println("HelloWorld!");
    }
}
hpbla> javac HelloWorld.java
hpbla> java -cp . HelloWorld
HelloWorld!

MPI

localmachine> ssh hpbla
  • hello.c
/* hello @ MPI
 */
#include <stdio.h>
#include <string.h>
#include "mpi.h"

int main(int argc, char *argv[])
{
    int rank, pesize, src, dest, tag=0;
    char msg[100];
    MPI_Status sts;

    /* INITIALIZE */
    MPI_Init(&argc, &argv);
    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
    MPI_Comm_size(MPI_COMM_WORLD, &pesize);

    /* OUTPUT */
    if(rank){   /* CHILD process */
        sprintf(msg, "Greetings from process %d!", rank);
        dest=0;
        MPI_Send(msg, strlen(msg)+1, MPI_CHAR, dest,
                 tag, MPI_COMM_WORLD);
    }else{      /* PARENT process */
        printf("I'm rank0. size:%d\n", pesize);
        for(src=1; src<pesize; src++){
            MPI_Recv(msg, 100, MPI_CHAR, src,
                     tag, MPI_COMM_WORLD, &sts);
            printf("%s\n", msg);
        }
    }

    /* FINALIZE */
    MPI_Finalize();
    return 0;
}
hpbla> mpicc hello.c
hpbla> mpirun -n 3 ./a.out
I'm rank0. size:3
Greetings from process 1!
Greetings from process 2!
hpbla> mpirun -n 5 ./a.out
I'm rank0. size:5
Greetings from process 1!
Greetings from process 2!
Greetings from process 3!
Greetings from process 4!

GPGPU

グラフィックスプログラミングの簡単なサンプル。こちらを参照

CUDA

グリッド(Globus編)

Globusで/bin/dateを参照.

グリッド(Ninf-G編)

Ninf-Gでpi.を参照.

Cell

SPEを1個つかってHelloWorld。ここを参考にした。

helloppe.c

#include <stdio.h>
#include <libspe2.h>

int main()
{
	spe_context_ptr_t spe;
	spe_program_handle_t *prog;
	unsigned int entry=SPE_DEFAULT_ENTRY;
	spe_stop_info_t stop_info;

	prog=spe_image_open("hellospe");
	spe=spe_context_create(0, NULL);
	spe_program_load(spe, prog);
	spe_context_run(spe, &entry, 0, NULL, NULL, &stop_info);

	spe_context_destroy(spe);
	spe_image_close(prog);
	return 0;
}

hellospe.c

#include <stdio.h>

typedef unsigned long long UINT64;

int main(UINT64 spe, UINT64 argp, UINT64 envp)
{
	printf("Hello, World!\n");
	return 0;
}
ps3b> vi helloppe.c
ps3b> vi hellospe.c
ps3b> gcc -lspe2 -o helloppe helloppe.c
ps3b> spu-gcc -o hellospe hellospe.c
ps3b> ./helloppe
Hello, World!

Ruby

localmachine> ruby -e 'puts "Hello, World!"'

[トップ]

hello.c[削除]

最終更新時間:2009年04月22日 20時14分47秒