samet demir committed
``````# README - Monte Carlo Methods

# Folders:
1. integral_basic
1. pi
1. prng
``````
atuncer @kelenken committed
`````` 1. prime
``````
samet demir committed
``````
## Integral Basic

### Files:
1. integral1d.c
1. integral1d_mpi.c
1. integral1d_OMP.c

#### integral1d.c

* This example computes integral of ( 1 / (1 + x * x) ) in x=[0,1] by using importance sampling Monte Carlo method

* This code is a serial algorithm, no need for any external library

* This is one of the code sample from the PRACE CodeVault. You can find more code samples available for download from the PRACE CodeVault here: https://gitlab.com/PRACE-4IP/CodeVault

* **Relase Date:** 28 January 2016

* **Version:** 1.0 (initial version)

* **Contributors:** Ahmet Tuncer DURAK (UHeM, ITU, TURKEY), Samet DEMIR (ITU, TURKEY)

* **Copyright:** None. The code is free to copy, modify and use, but comes with no warranty and therefore usage is at your own risk.

* **Language:** This code sample file is written in C. No external libraries are required.

* **Parallelisation Implementation:** This file is a serial code

* **Level of the code sample complexity:** Code sample complexity is simple and intended for new starters.

* **Instructions on how to compile the code:** Load a supported programming environment or compiler [GNU, PGI, Intel, Clang], Use the CodeVault CMake infrastructure, see main README.md

* **Instructions on how to run the code:** ./7_montecarlo_integral1d_serial trial#

* **Sample input:** There is one already in the code (1 / (1 + x * x)), can be changed from the code.

* **Sample output:** For a trial of 100 output is
computed value of the integral= 0.784455
true value of the integral=     0.785398
error=                          0.000943

#### integral1d_mpi.c

* This code sample computes integral of ( 1 / (1 + x * x) ) in x=[0,1] by 	using importance sampling Monte Carlo method

* A MPI framework is needed to run the code

* This is one of the code sample from the PRACE CodeVault. You can find more code samples available for download from the PRACE CodeVault here: https://gitlab.com/PRACE-4IP/CodeVault

* **Relase Date:** 28 January 2016

* **Version: 1.0** (initial version)

* **Contributors:** Ahmet Tuncer DURAK (UHeM, ITU, TURKEY), Samet DEMIR (ITU, TURKEY)

* **Copyright:** None. The code is free to copy, modify and use, but comes with no warranty and therefore usage is at your own risk.

* **Language:** This code sample file is written in C.

* **Parallelisation Implementation:** MPI

* **Level of the code sample complexity:** Code sample complexity is simple and intended for new starters.

* **Instructions on how to compile the code:** Load a supported programming environment or compiler [GNU, PGI, Intel, Clang], Use the CodeVault CMake infrastructure, see main README.md

* **Instructions on how to run the code:** mpirun -n 4 ./7_montecarlo_integral1d_serial #trial (for 4 process)

* **Sample input:** mpirun -n 4 ./7_montecarlo_integral1d_serial 1000

* **Sample output:** For a trial of 100 output is
computed value of the integral= 0.784455
true value of the integral=     0.785398
error=                          0.000943

#### integral1d_OMP.c

* This code sample computes integral of ( 1 / (1 + x * x) ) in x=[0,1] by 	using importance sampling Monte Carlo method

* **Relase Date:** 28 January 2016

* **Version:** 1.0 (initial version)

* **Contributors:** Ahmet Tuncer DURAK (UHeM, ITU, TURKEY), Samet DEMIR (ITU, TURKEY)

* **Copyright:** None. The code is free to copy, modify and use, but comes with no warranty and therefore usage is at your own risk.

* **Language:** This code sample file is written in C.

* **Parallelisation Implementation:** OpenMP

* **Level of the code sample complexity:** Code sample complexity is simple and intended for new starters.

* **Instructions on how to compile the code:** Load a supported programming environment or compiler [GNU, PGI, Intel, Clang], Use the CodeVault CMake infrastructure, see main README.md

* **Instructions on how to run the code:** ./7_montecarlo_integral1d_openmp thread# trial#

* **Sample input:** ./7_montecarlo_integral1d_openmp 4 10000

* **Sample output:** For a trial of 100 output is
computed value of the integral= 0.784455
true value of the integral=     0.785398
error=                          0.000943

## Pi

### Files
1. pi_mpi.c
1. pi_omp.c
1. pi_serial.c
1. pi_shared.c
1. pi_shared.h

#### pi_serial.c

* This code sample calculates the value of pi by using Monte Carlo Methods.

* This code is a serial algorithm, no need for any external library

* This is one of the code sample from the PRACE CodeVault. You can 	find more code samples available for download from the PRACE 	CodeVault here: https://gitlab.com/PRACE-4IP/CodeVault

* **Relase Date:** 28 January 2016

* **Version:** 1.0 (initial version)

* **Contributors:** Ahmet Tuncer DURAK (UHeM, ITU, TURKEY), Samet DEMIR (	ITU, TURKEY)

* **Copyright:** None. The code is free to copy, modify and use, but comes 	with no warranty and therefore usage is at your own risk.

* **Language:** This code sample file is written in C. No external 	libraries are required.

* **Parallelisation Implementation:** This file is a serial code

* **Level of the code sample complexity:** Code sample complexity is 	simple and intended for new starters.

* **Instructions on how to compile the code:** Load a supported programming environment or compiler [GNU, PGI, Intel, Clang], Use the CodeVault CMake infrastructure, see main README.md

* **Instructions on how to run the code:** ./7_montecarlo_pi_serial seed# N

seed (integer): seed for the pseudo random number generator
a negative value indicates current timestamp
N (integer)   : number of random samples to use

* **Sample input:** ./7_montecarlo_pi_serial 10 100000

* **Sample output:** 10	100000	1	3.142156	0.000563 (seed N thread calculated_pi error)

#### pi_omp.c

* This code sample calculates the value of pi by using Monte Carlo Methods.

* This is one of the code sample from the PRACE CodeVault. You can 	find more code samples available for download from the PRACE 	CodeVault here: https://gitlab.com/PRACE-4IP/CodeVault

* **Relase Date:** 28 January 2016

* **Version:** 1.0 (initial version)

* **Contributors:** Ahmet Tuncer DURAK (UHeM, ITU, TURKEY), Samet DEMIR (	ITU, TURKEY)

* **Copyright:** None. The code is free to copy, modify and use, but comes 	with no warranty and therefore usage is at your own risk.

* **Language:** This code sample file is written in C. No external 	libraries are required.

* **Parallelisation Implementation:** OpenMP

* **Level of the code sample complexity:** Code sample complexity is 	simple and intended for new starters.

* **Instructions on how to compile the code:** Load a supported programming environment or compiler [GNU, PGI, Intel, Clang], Use the CodeVault CMake infrastructure, see main README.md

* **Instructions on how to run the code:** ./7_montecarlo_pi_omp seed# N

seed (integer): seed for the pseudo random number generator
a negative value indicates current timestamp
N (integer)   : number of random samples to use

* **Sample input:** ./7_montecarlo_pi_serial 10 100000

* **Sample output:** 10	100000	1	3.142156	0.000563 (seed N thread calculated_pi error)

#### pi_mpi.c

* This code sample calculates the value of pi by using Monte Carlo Methods.

* This is one of the code sample from the PRACE CodeVault. You can 	find more code samples available for download from the PRACE 	CodeVault here: https://gitlab.com/PRACE-4IP/CodeVault

* **Relase Date:** 28 January 2016

* **Version:** 1.0 (initial version)

* **Contributors:** Ahmet Tuncer DURAK (UHeM, ITU, TURKEY), Samet DEMIR (	ITU, TURKEY)

* **Copyright:** None. The code is free to copy, modify and use, but comes 	with no warranty and therefore usage is at your own risk.

* **Language:** This code sample file is written in C. No external 	libraries are required.

* **Parallelisation Implementation:** MPI

* **Level of the code sample complexity:** Code sample complexity is 	simple and intended for new starters.

* **Instructions on how to compile the code:** Load a supported programming environment or compiler [GNU, PGI, Intel, Clang], Use the CodeVault CMake infrastructure, see main README.md

* **Instructions on how to run the code:** mpirun -n 4 ./7_montecarlo_pi_omp seed# N# (for 4 process)

seed (integer): seed for the pseudo random number generator
a negative value indicates current timestamp
N (integer)   : number of random samples to use

* **Sample input:** mpirun -n 4 ./7_montecarlo_pi_omp 10 10000

* **Sample output:** 10	100000	1	3.142156	0.000563 (seed N thread calculated_pi error)
``````