コード例 #1
0
def piFunc(NumSteps):
    step = 1.0 / NumSteps
    sum = 0.0
    startTime = omp_get_wtime()
    for i in range(NumSteps):
        x = (i + 0.5) * step
        sum = sum + 4.0 / (1.0 + x * x)
    pi = step * sum
    runTime = omp_get_wtime() - startTime
    print(" pi = ", pi, " with ", NumSteps, " steps in ", runTime, " seconds")
    return pi
コード例 #2
0
def piFunc(NumSteps):
    step = 1.0 / NumSteps
    sum = 0.0
    startTime = omp_get_wtime()
    with openmp("parallel"):
        with openmp("single"):
            print(" pi with tasks using ", omp_get_num_threads(), " threads")
            sum = piComp(0, NumSteps, step)

    pi = step * sum
    runTime = omp_get_wtime() - startTime
    print(" pi = ", pi, " with ", NumSteps, " steps in ", runTime, " seconds")
    return pi
コード例 #3
0
def piFunc(NumSteps):
    step = 1.0 / NumSteps
    sum = 0.0
    startTime = omp_get_wtime()
    with openmp("parallel for private(x) reduction(+:sum)"):
        for i in range(NumSteps):
            x = (i + 0.5) * step
            sum += 4.0 / (1.0 + x * x)

    pi = step * sum
    runTime = omp_get_wtime() - startTime
    print(" pi = ", pi, " with ", NumSteps, " steps in ", runTime, " seconds")
    return pi
コード例 #4
0
from numba import njit
from numba.openmp import openmp_context as openmp
from numba.openmp import omp_get_wtime, omp_get_num_threads, omp_set_num_threads


@njit
def piFunc(NumSteps):
    step = 1.0 / NumSteps
    sum = 0.0
    startTime = omp_get_wtime()
    with openmp("parallel private(x)"):
        #        print(omp_get_num_threads())
        with openmp("for reduction(+:sum)"):
            for i in range(NumSteps):
                x = (i + 0.5) * step
                sum += 4.0 / (1.0 + x * x)

    pi = step * sum
    runTime = omp_get_wtime() - startTime
    print(" pi = ", pi, " with ", NumSteps, " steps in ", runTime, " seconds")
    return pi


startTimeWithJit = omp_get_wtime()
pi = piFunc(100000000)
print(" runtime with JIT = ", omp_get_wtime() - startTimeWithJit)