小编Kon*_*nos的帖子

将涉及矢量转置的表达式转换为具有lambdify的数值函数

我在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?

python vector sympy

8
推荐指数
1
解决办法
231
查看次数

分支分歧,CUDA和动力学蒙特卡罗

所以,我有一个代码,在格子上使用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子句中的代码,但是随着我添加越来越多的线程,这将如何扩展?

关于如何估计性能损失/收益的任何参考也将受到欢迎.

谢谢!

performance cuda montecarlo

3
推荐指数
1
解决办法
2452
查看次数

标签 统计

cuda ×1

montecarlo ×1

performance ×1

python ×1

sympy ×1

vector ×1