我正在尝试使用numbapro来运行一个基本的对象交互模拟。但我得到了这个错误,我不知道是什么问题。我对GPU加速很陌生:(
这是我的代码:from turtle import *
import numpy as np
from numbapro import vectorize
setup( width = 1920, height = 1080, startx = None, starty = None)
colormode(255)
G = 1 #6.67428*10**(-11)
AU = 1 #149597871 * 1000 # 1 AU in meters
dt = 0.1
dt = np.float64(dt)
SCALE = 1 #150 / Au
bodiesVx = np.random.randint(1,11,10)
bodiesVy = np.random.randint(1,11,10)
bodiesM = np.random.randint(1,11,10)
bodiesPx = np.random.randint(760,1060,10)
bodiesPy = np.random.randint(440,640,10)
bodiesM = bodiesM.astype('float64')
bodiesPx = bodiesPx.astype('float64')
bodiesPy = bodiesPy.astype('float64')
bodiesVx = bodiesVx.astype('float64')
bodiesVy = bodiesVy.astype('float64')
@vectorize(['float64(float64)'],target="gpu")
def UpdateX(i):
print (i)
global bodiesM, bodiesPx, bodiesVx, dt, G
PX = bodiesPx[bodiesPx-i == 0][0]
MArr = bodiesM[bodiesPx-bodiesPx[i] != 0]
PxArr = bodiesPx[bodiesPx != PX]
AccArrX = MArr*G/(PxArr-PX)**2
Vx = dt * np.sum(AccArrX) + bodiesVx[bodiesPx == PX][0]
return Vx * dt
@vectorize(['float64(float64)'],target="gpu")
def UpdateY(i):
global bodiesM, bodiesPy, bodiesVy, dt, G
PY = bodiesPy[bodiesPy-i == 0][0]
MArr = bodiesM[bodiesPy-bodiesPy[i] != 0]
PyArr = bodiesPy[bodiesPy != PY]
AccArrY = MArr*G/(PyArr-PY)**2
Vy = dt * np.sum(AccArrY) + bodiesVy[bodiesPy == PY][0]
return Vy * dt
def move(i):
Turtle.goto(bodiesPx[i], bodiesPy[i])
def main():
global bodiesPx, bodiesPy
while True:
bodiesPx += UpdateX
bodiesPy += UpdateY
for i in range(len(bodiesPx)):
move(i)
main()
错误就在这里:
^{pr2}$
任何想法都将不胜感激!
谢谢!在