小编Kev*_*eys的帖子

julia-0.6中函数定义中的`where`

我试图在阅读发行说明的基础上理解Julia v0.6中的新类型系统.

任何人都可以告诉我什么

inv(M::Matrix{T}) where T <: AbstractFloat
Run Code Online (Sandbox Code Playgroud)

给了我与使用经典不同的东西

inv{T<:AbstractFloat}(M::Matrix{T})
Run Code Online (Sandbox Code Playgroud)

julia

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

BLAS诉Julia SharedArray对象的并行更新

我有兴趣将Julia SharedArray用于科学计算项目.我目前的实现对BLAS的所有矩阵向量操作都很有吸引力,但我认为也许SharedArray可以在多核机器上提供一些加速.我的想法是简单地逐个索引更新输出向量,将索引更新耕种到工作进程.

前面的讨论在这里关于SharedArrayS和这里有关共享内存对象并没有对这个问题提供明确的指导.它看起来非常简单,但经过测试后,我有点困惑为什么这种方法效果很差(见下面的代码).对于初学者来说,似乎@parallel for分配了大量的内存.如果我在循环前加上@sync,如果以后需要整个输出向量,这似乎是一件很聪明的事情,那么并行循环要慢得多(尽管没有@sync,循环很快).

我是否错误地解释了SharedArray对象的正确使用?或者我可能无效地分配计算?

### test for speed gain w/ SharedArray vs. Array ###

# problem dimensions
n = 10000; p = 25000

# set BLAS threads; 64 seems reasonable in testing
blas_set_num_threads(64)

# make normal Arrays
x = randn(n,p)
y = ones(p)
z = zeros(n)

# make SharedArrays
X = convert(SharedArray{Float64,2}, x)  
Y = convert(SharedArray{Float64,1}, y)  
Z = convert(SharedArray{Float64,1}, z)  

# …
Run Code Online (Sandbox Code Playgroud)

parallel-processing blas julia

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

SGE:-hold_jid_ad和-hold_jid之间的区别是什么

qsub一个工作我想要一个工作等待执行,直到第一个工作成功.我一直在看这些选项-hold_jid_ad-hold_jid做到这一点,但看不出它们的区别.

sungridengine

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

从 S3 存储桶中的文件夹中删除文件

我有一个test-bucket带有data文件夹的 AWS S3 存储桶。数据文件夹将有多个文件。

我能够删除 S3 存储桶中的文件。但我想要的是删除文件data夹中的文件而不删除文件夹。

我尝试了以下方法:

aws s3 rm  s3://test-bucket/data/*
Run Code Online (Sandbox Code Playgroud)

还使用--recursive选项进行了检查,但这不起作用。

有没有办法使用 AWS CLI 删除文件夹中的文件?

amazon-s3 amazon-web-services

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

Julia @code_warntype显示隐藏的临时变量#temp#

我最近对我的代码进行了类型稳定性检查.当我打电话@code_warntype给它时,我得到以下输出:

Variables:
  #unused#::IHT.#kw##L0_reg
  #temp#@_2::Array{Any,1}
  ::IHT.#L0_reg
  x::Array{Float64,2}
  y::Array{Float64,1}
  k::Int64
  #temp#@_7::Bool
  #temp#@_8::Bool
  max_iter::Int64
  max_step::Int64
  quiet::Bool
  v::IHT.IHTVariables{Float64,Array{Float64,1}}
  tol::Float64
  #temp#@_14::Int64
  #temp#@_15::Int64
  #temp#@_16::Int64
  #temp#@_17::Any
  ###...###
  #temp#@_17::Any = (Core.arrayref(#temp#@_2::Array{Any,1},#temp#@_16::Int64)::Any
  ###...###
  v::IHT.IHTVariables{Float64,Array{Float64,1}} = (Core.typeassert)((Core.arrayref)(#temp#@_2::Array{Any,1},(Base.box)(Int64,(Base.add_int)(#temp#@_16::Int64,1)))::Any,IHT.IHTVariables{Float64,Array{Float64,1}})::IHT.IHTVariables{Float64,Array{Float64,1}}
Run Code Online (Sandbox Code Playgroud)

最小的工作示例,使用我的IHT.jl包:

Pkg.clone("https://github.com/klkeys/IHT.jl")
n = 100; p = 250; k = 2;
x = randn(n,p)
b = zeros(p); b[1:k] = randn(k); shuffle!(b)
y = x*b + randn(n)
@code_warntype L0_reg(x, y, k, quiet=true)
Run Code Online (Sandbox Code Playgroud)

看起来编译器正在使用它#temp#来读取函数的参数L0_reg.函数参数已完全指定.这个邪恶的小#temp#@_2变量从哪里出现?我能告诉编译器它的类型是什么吗?(希望不是Array{Any,1}......)

temporary julia type-stability

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

Julia MultivariateStats.jl 中的 PCA

我在 Julia 包MultivariateStats.jl 中使用PCA。我正在尝试将旧的 Matlab 脚本转换为 Julia。但是,我不能再运行 Matlab 脚本了。我正在处理一系列图像。首先,我想确保输入矩阵正确。我将每个图像重新塑造为向量并将图像放入矩阵。我认为这些数据的格式是正确的,与 Matlab 相同。然后我生成了一个 PCA 模型。Matlab 会返回. 我如何在 Julia 中获得这些? nm x nM = fit(PCA, data)[coeff,score,latent]

matlab pca julia

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

具有多个功能输出的Julia内存重用

您可以按如下方式重用阵列内存

> a=[1,2,3];b=a;a=[1,2,3];is(a,b)
false

> a=[1,2,3];b=a;a.=[1,2,3];is(a,b)
true
Run Code Online (Sandbox Code Playgroud)

在我分配整个阵列时,这是唯一必要的.分配子集时,无论是使用.=还是使用,都将始终使用现有数组=.

当使用具有多个输出的函数时,我遇到了这个问题.例:

> f = () -> ([1,2,3],[4,5,6]);
> a, = f()
([1,2,3],[4,5,6])

> a, .= f()
 ERROR: syntax: invalid identifier name ".="

> (a,) .= f()
ERROR: MethodError: no method matching broadcast!(::Base.#identity,::Tuple{Array{Int64,1}}, ::Tuple{Array{Int64,1},Array{Int64,1}})
Closest candidates are:
  broadcast!{nargs}(::Any, ::AbstractArray{T,N}, ::Any...) at broadcast.jl:169
  broadcast!(::Base.#identity, ::AbstractArray{T,N}, ::Number) at broadcast.jl:19
  broadcast!{T,S,N}(::Base.#identity, ::AbstractArray{T,N}, ::AbstractArray{S,N}) at broadcast.jl:23
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点,而不必a在每次通话时扔掉?

memory-management julia

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