小编Geo*_*ris的帖子

如何在Julia中最有效地使用QR分解?

避免阵列分配有利于提高性能.但是,我还没有理解什么是最有效的方法,可以执行矩阵的QR分解A.(注意:需要Q和R矩阵)

简单地使用 Q, R = qr(A) 可能不是最好的主意,因为它分配Q和R,两者都可以重新分配.

该函数qrfact允许以打包格式存储因子分解.但是,我之后仍会写: F = qrfact(A); Q = F[:Q]; R = F[:R] 再次为Q和分配新数组R.最后,文档还建议了该qrfact!函数,它通过覆盖输入A来节省空间,而不是创建副本.但是,如果一个人使用F = qrfact!(A) 覆盖写入A是没有用的,因为它不是,Q或者R哪一个(具体来说,我)需要.

所以我的两个问题是:

  1. 如果您只关心矩阵Q并且R重新分配它们没有问题,那么执行QR分解的最佳/最有效方法是什么?

  2. A当一个人打电话时,矩阵中实际写的是什么qrfact!(A)

performance linear-algebra julia qr-decomposition

7
推荐指数
1
解决办法
594
查看次数

Julia只占我CPU的20-30%.我该怎么办?

我正在运行一个在Julia中进行数字ODE集成的程序.我正在运行Windows 10(64位),英特尔酷睿i7-4710MQ @ 2.50Ghz(8个逻辑处理器).

我注意到当我的代码在julia上运行时,只有最多30%的CPU在使用中.进入parallelazation文档,我开始使用Julia: C:\Users\*****\AppData\Local\Julia-0.4.5\bin\julia.exe -p 8并期望看到改进.然而,我没有看到它们.

因此,我的问题如下:我是否有一种特殊的方式来编写代码以便更有效地使用CPU?这可能是我的操作系统(Windows 10)造成的限制吗?

我用以下命令在julia控制台中提交我的代码: include("C:\\Users\\****\\AppData\\Local\\Julia-0.4.5\\13. Fast Filesaving Format.jl").

在这段代码中,我使用了一些额外的包: using ODE; using PyPlot; using JLD.

我使用Windows"任务管理器"测量CPU使用率.

parallel-processing optimization julia

4
推荐指数
1
解决办法
762
查看次数

为未更改的字符串摆脱 Julia 的“警告:重新定义常量”?

在我的 julia 代码中,我使用了一些常量。其中一些常量是字符串(它们用作标识符)。我的问题是,每当我运行 julia 脚本即使我没有更改常量,我总是会收到以下关于常量字符串的警告: WARNING: redefining constant pot_type

为了说明我的问题,这是一个 MWE:

const pot_type = "constant"
const b = 12
println("Given parameters: Potential = $pot_type, b = $b .")
Run Code Online (Sandbox Code Playgroud)

如果我运行此脚本两次,我将收到上述警告。不仅如此,如果我只const something = "somestring"在 Julia 控制台中输入两次,也会发生同样的事情。我只是得到WARNING: redefining constant something

我知道这不会以任何方式影响我的代码,但是无论如何要删除此警告或修复它?在我的实际代码中,每次我提交内容时它都会创建 5 行,这个空间可用于显示以前提交的输出。

编辑(让自己更清楚):问题是即使我没有重新定义常量,也会显示此警告消息,这意味着我给了它相同的值。而且,这个问题(据我所知)只存在于String,不存在于Int64Float64类型。例如:如果我写const b = 1.2然后const b = 1.4我会按预期收到警告消息。现在,如果我写const b = 1.2然后const b = 1.2(相同的值),我将不会再如预期的那样收到警告。但是,这不适用于字符串常量。即使定义相同的值,您也会收到警告。

string warnings constants julia

2
推荐指数
1
解决办法
839
查看次数

Makie.jl 图中左侧和右侧的双 y 轴

我想在 Makie 中制作一个双 yaxis,这样一个 y 轴在左边并有自己的值,另一个在右边并有自己的值,而它们共享 x 轴。

例如,要在 PyPlot 中执行此操作,请遵循https://matplotlib.org/gallery/api/two_scales.html并获得

在此处输入图片说明

这是如何在 Makie.jl 中完成的?如果答案可以说明如何为轴着色,那么我加倍!

plot julia

2
推荐指数
1
解决办法
186
查看次数

在全局变量上行动比传递它们更快?[朱莉娅琅]

我刚学完朱莉娅(最重要的是表演技巧!).我意识到使用全局变量会使代码变慢.对此的反措施是将尽可能多的变量传递给函数的参数.因此我做了以下测试:

x = 10.5  #these are globals
y = 10.5

function bench1()  #acts on global
  z = 0.0
  for i in 1:100
    z += x^y
  end
  return z
end

function bench2(x, y)
  z = 0.0
  for i in 1:100
    z += x^y
  end
  return z
end

function bench3(x::Float64, y::Float64) #acts on arguments
  z::Float64 = 0.0
  for i in 1:100
    z += x^y
  end
  return z
end

@time [bench1() for j in 1:100]
@time [bench2(x,y) for j in 1:100]
@time [bench3(x,y) …
Run Code Online (Sandbox Code Playgroud)

performance global parameter-passing julia

1
推荐指数
2
解决办法
189
查看次数

在指定类型时调用参数类型的函数 (Julia 0.5)

(我指的是 Julia 0.5)假设我定义了一个函数:

f{T<:Real}(x::T=one(T), y::T=one(T)) = x+y 我想在指定类型时调用它,但不通过参数指定它。例如,我想做: f{Float64}() 在控制台中,这给出了错误: ERROR: TypeError: Type{...} expression: expected Type{T}, got #f 那么,是否可以在函数调用期间{}使用语法来调用任何函数(除了参数类型的构造函数之外) ?

编辑:我提出这个问题的原因是因为我想使用默认参数,但同时也指定类型,例如f{BigFloat}().

types function function-call julia

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