我打算对物理问题进行一些数值近似。
该程序的主要要点是对大型稀疏矩阵执行 svd 并计算大型矩阵的迹。
我在 python 中使用 numpy/scipy 和 multiprocessing 模块来执行此操作,但速度不够快。
我还在一些 gpus 上使用 tensorflow 实现了相同的代码。Tensorflow 的计算速度要快得多,但是将数据发送到 gpus 并将其带出需要很长时间。每个数据实例都作为浮点值单独发送。有什么方法可以一次将所有数据发送到 gpu 中?
使用 tensorflow 进行数值计算是好主意还是坏主意?
下面是我的代码片段......
def Expectation_Value(density,N):
expec=0
for i in np.arange(1,N+1):
a=tf.linalg.trace(tf.matmul(Sigma(i,N,Sz),density))
expec+=a
return expec/N
def main():
df=pd.read_csv('.....')
sess=tf.Session()
for l in range(len(df)):
Delta=df['Delta'].iloc[l]
Omega=df['Omega'].iloc[l]
Gamma=df['Gamma'].iloc[l]
J=df['J'].iloc[l]
Sz_tens=tf.zeros(len(df))
Expec=Expectation_Value(DMT,N)
Sz_tens[l]=Expec
Sz_arr=Sz_tens.eval(session=sess)
df['Sz']=Sz_arr
sess.close()
df.head()