我在python中编写了一个脚本,它使用sympy来计算几个向量/矩阵公式.但是,当我尝试将这些函数转换为我可以使用sympy.lambdify进行评估的函数时,我得到了一个
SyntaxError:扫描字符串文字时的EOL
这里有一些代码有相同的错误,所以你可以看到我的意思.
import sympy
x = sympy.MatrixSymbol('x',3,1)
f = sympy.lambdify(x, x.T*x)
Run Code Online (Sandbox Code Playgroud)
因此,语法错误与表达式"x'.dot(x)"和".T"到'的转换有关.
我如何解决这个问题,从上面的lambdify中正确定义f?
所以,我有一个代码,在格子上使用Kinetic Monte Carlo来模拟某些东西.我正在使用CUDA在我的GPU上运行此代码(尽管我相信同样的问题也适用于OpenCl).
这意味着我将格子分成小的子格子,每个线程都在其中一个上运行.由于我在做KMC,每个线程都有这样的代码:
While(condition == true){
*Grab a sample u from U[0,1]*
for(i = 0; i < 100;i++){
*Do some stuff here to generate A*
if(A > u){
*Do more stuff here, which could include updates to global memory*
break();
}
}
}
Run Code Online (Sandbox Code Playgroud)
A对于不同的线程是不同的,因此u和100只是一个随机数.在代码中,这可能是1000甚至10000.
那么,当一个线程通过时,我们不会有分支差异吗?这会影响性能有多严重?我知道答案取决于if子句中的代码,但是随着我添加越来越多的线程,这将如何扩展?
关于如何估计性能损失/收益的任何参考也将受到欢迎.
谢谢!