Select Git revision
taichipi.py
-
Neil Gershenfeld authoredNeil Gershenfeld authored
taichipi.py 2.02 KiB
#
# taichipi.py
# Neil Gershenfeld 2/22/23
# calculation of pi by Taichi
# pi = 3.14159265358979323846
#
import time
import taichi as ti
NPTS = 10000000
def calc_pi(NPTS):
pi = 0
for i in range(1,(NPTS+1)):
pi += 0.5/((i-0.75)*(i-0.25))
return pi
pi = calc_pi(1000) # run first to compile
start_time = time.time()
pi = calc_pi(NPTS)
end_time = time.time()
mflops = NPTS*5.0/(1.0e6*(end_time-start_time))
print("\nNPTS = %d, pi = %f"%(NPTS,pi))
print("time = %f, estimated Python MFlops = %f\n"%(end_time-start_time,mflops))
ti.init(arch=ti.cpu,default_ip=ti.i64,default_fp=ti.f64,cpu_max_num_threads=1)
NPTS = int(1000000000)
@ti.kernel
def calc_pi_CPU(NPTS:int)->float:
pi = float(0)
for i in range(1,(NPTS+1)):
pi += 0.5/((i-0.75)*(i-0.25))
return pi
pi = calc_pi_CPU(1000) # run first to compile
start_time = time.time()
pi = calc_pi_CPU(NPTS)
end_time = time.time()
mflops = NPTS*5.0/(1.0e6*(end_time-start_time))
print("NPTS = %d, pi = %f"%(NPTS,pi))
print("time = %f, estimated Taichi CPU serial MFlops = %f\n"%(end_time-start_time,mflops))
ti.init(arch=ti.cpu,default_ip=ti.i64,default_fp=ti.f64)
@ti.kernel
def calc_pi_CPU(NPTS:int)->float:
pi = float(0)
for i in range(1,(NPTS+1)):
pi += 0.5/((i-0.75)*(i-0.25))
return pi
pi = calc_pi_CPU(1000) # run first to compile
start_time = time.time()
pi = calc_pi_CPU(NPTS)
end_time = time.time()
mflops = NPTS*5.0/(1.0e6*(end_time-start_time))
print("NPTS = %d, pi = %f"%(NPTS,pi))
print("time = %f, estimated Taichi CPU parallel MFlops = %f\n"%(end_time-start_time,mflops))
ti.init(arch=ti.gpu,default_ip=ti.i64,default_fp=ti.f64)
@ti.kernel
def calc_pi_GPU(NPTS:int)->float:
pi = float(0)
for i in range(1,(NPTS+1)):
pi += 0.5/((i-0.75)*(i-0.25))
return pi
pi = calc_pi_GPU(1000) # run first to compile
start_time = time.time()
pi = calc_pi_GPU(NPTS)
end_time = time.time()
mflops = NPTS*5.0/(1.0e6*(end_time-start_time))
print("NPTS = %d, pi = %f"%(NPTS,pi))
print("time = %f, estimated Taichi GPU MFlops = %f\n"%(end_time-start_time,mflops))