有如下代码:
import taichi as ti
ti.init(arch=ti.gpu,default_ip=ti.i64)
import time
@ti.func
def is_prime(n):
结果=True
if n <= 1:
结果=False
elif n == 2:
结果=True
elif n % 2 == 0:
结果=False
else:
sqrt = int(ti.sqrt(n))
for i in range(3, sqrt + 1):
if n % i == 0:
结果=False
return 结果
count=ti.field(dtype=int, shape=())
count[None]=0
@ti.kernel
def prime_count():
for i in range(2, 10000000001):
if is_prime(i):
count[None] += 1
start_time = time.time()
prime_count()
end_time = time.time()
elapsed_time = end_time - start_time
print("Total time: ", elapsed_time, " seconds")
print("Total prime numbers found: ", count)
输出结果
[Taichi] Starting on arch=cuda
[d:\ProgramData\Miniconda3\envs\taichi\lib\site-packages\taichi\lang\ast\ast_transformer.py:61](file:///D:/ProgramData/Miniconda3/envs/taichi/lib/site-packages/taichi/lang/ast/ast_transformer.py:61): Warning: Casting range_for boundary values from i64 to i32, which may cause numerical issues warnings.warn(
Total time: 0.33608055114746094 seconds Total prime numbers found: 70462980
可以看到,实际运行时间很短,但是在运行前花了两分多钟编译,请问有没有什么设置或写法可以加速编译过程