您尚未登录。

#1 2024-12-06 16:54:31

站台上的车
会员
注册时间: 2024-01-08
帖子: 20

数模竞赛,python脚本太慢,如何使用gpu加速?

代码如下:

import math
import numpy as np
import pandas as pd

#df = pd.DataFrame(columns=['FAI', 'number'])
#df2 = pd.DataFrame(columns=['FAI','F1','F2'])

number=0


d =0.35 #m
r =34.95 / 2 #m
print(r)



g = 9.788 #m/s**2
m = 15 #kg
density = 0.859*1000 #kg/m**3                     #1000kg/m**3 = 1g/cm**3
v = 0.0075 #m 



l4 = r
l5 = r
y3 = r

ls_x2=[]
ls_y2=[]
ls_F1=[]

#x1  y1  FAI  l1  A  B  C
for FAI in np.arange(0,180,0.00001):
    #df = df._append({'FAI': FAI-1, 'number': number}, ignore_index=True)
    number = 0
    for x1 in np.arange(0,r):
        for y1 in np.arange(-r,r):
            if (x1**2 + y1**2)**(1/2) <= r:
                FAI_tmp =  math.radians(FAI)
                y2 = y1 + d
                x2 = x1

                l1 = pow(pow(x2,2) + pow((y2 - y3),2),1/2) 
                l3 = pow(pow(x2,2) + pow(y2,2),1/2)

                A1=(l4**2 + l1**2 - l3**2)/(2*l4*l1)
                if A1>1 or A1<-1:
                    continue
                A = math.acos(A1)                           #jiao arfa
                B = (math.pi - FAI_tmp) / 2                                                    #jiao beita
                C = B - A                                                                  #jiao sigema
                
                d1 = (l4**2 + l5**2 - 2*l4*l5*math.cos(FAI))**(1/2)                                                             
                d2 = (l1**2+d1**2-2*l1*d1*math.cos(C))**(1/2)
                                                                                        # l1 = (x1**2 + (y1 + d - r)**2)**(1/2) 


            #l2
                l2 = d1+d2
                

            #F1 F2
                G = m*g #N
                F_f = density*g*v #N

                Y = math.acos((l1**2 + d2**2 - d1**2)/(2*l1*d2)) #hu du zhi

                if math.sin(A)==0 or (math.sin(Y - A)/math.sin(A)*math.cos(A) + math.cos(Y - A)) ==0:
                    continue
                F2 = (G - F_f) / (math.sin(Y - A)/math.sin(A)*math.cos(A) + math.cos(Y - A)) 
                F1 = F2 * math.sin(Y - A) / math.sin(A)


                if F1>=0 and F2>=0:
                    ls_F1.append(F1)
                    ls_x2.append(x2)
                    ls_y2.append(y2)
                    print("FAI = "+str(FAI)+"("+str(x1)+","+str(y1)+")"+" FINSHED")

max=0 
flag=0       
flag2=0    
for i in ls_F1:
    if max<=i:
        max=i
        flag2=flag
    flag += 1

print("MAX_FOECE_FAI = "+"("+str(ls_x2[flag2])+","+str(ls_y2[flag2])+")")

最近编辑记录 站台上的车 (2024-12-06 17:01:02)


要发车了,谁要登上学习(arch)的火车?:)

离线

#2 2024-12-06 16:59:19

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,953
个人网站

Re: 数模竞赛,python脚本太慢,如何使用gpu加速?

你们搞竞赛的真的是一点编程都不学的吗?代码乱得要命,连个 main 函数也不写,不慢才怪了呢。

离线

#3 2024-12-06 17:12:52

站台上的车
会员
注册时间: 2024-01-08
帖子: 20

Re: 数模竞赛,python脚本太慢,如何使用gpu加速?

第一次参加:|主要是计算量比较少,直接用空行分开不同部分的计算过程对于我们组来说就够了,也方便直接看到所有过程

但为什么使用main函数会更快呢?是与全局变量有关吗?


要发车了,谁要登上学习(arch)的火车?:)

离线

#4 2024-12-06 18:10:50

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,953
个人网站

Re: 数模竞赛,python脚本太慢,如何使用gpu加速?

是。Python 和 Lua 一样,访问全局变量要查哈希表,会比访问局部变量慢很多。

你代码全摊平这么长,哪里方便看到所有过程了?买个带鱼屏竖着看?

离线

#5 2024-12-07 21:03:24

站台上的车
会员
注册时间: 2024-01-08
帖子: 20

Re: 数模竞赛,python脚本太慢,如何使用gpu加速?

依云 说:

是。Python 和 Lua 一样,访问全局变量要查哈希表,会比访问局部变量慢很多。

你代码全摊平这么长,哪里方便看到所有过程了?买个带鱼屏竖着看?

哈希表是类似这个东西吗?:
c3a33d98a4be888c7ca60fbdb20ca521  opt/sogoupinyin/files/bin/sogoupinyin-crashupload
好像软件包里也有啊?


要发车了,谁要登上学习(arch)的火车?:)

离线

#6 2024-12-07 23:26:55

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,953
个人网站

Re: 数模竞赛,python脚本太慢,如何使用gpu加速?

呃,看来真的是一点也不懂编程……就是 Python 的 dict 这样的数据类型。

离线

#7 2024-12-07 23:30:47

sukanka
会员
所在地: Amoy, China
注册时间: 2020-04-05
帖子: 173
个人网站

Re: 数模竞赛,python脚本太慢,如何使用gpu加速?

浮点数不要用 == 比较, 用 math.isclose .举个例子.

>>> import math
>>> math.sin(math.pi)==0
False
>>> math.isclose(math.sin(math.pi),0.0,abs_tol=1e-7)
True

离线

页脚