octave-maintainers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: julia language


From: Levente Torok
Subject: Re: julia language
Date: Mon, 14 May 2012 22:25:52 +0200

Hi Max,

[snip]
>>>> I am also thinking if octave could introduce reference type of
>>>> variables (matlab doesn't have this).
>>>> This would be a great thing, indeed.
>>>
>>> I don't think that introducing a reference type in Octave is a good
>>> idea. Doing this would require a major rework of the interpreter, and
>>> it is not clear what the syntax should look like. If call by value is
>>> really causing performance issues, I advocate using live range
>>> analysis to further reduce copies instead of a reference type.
>>
>> Well. I can imagine it in a way that wouldn't imply rewriting the 
>> interpreter.
>> This first thing that comes to my mind is to have a cast-like type
>> modifier similar to  uint32, for example.
>> ie.:
>>  a = ref(a)
>
> That would end up breaking most existing scripts. For example,
>
> function foo (a)
>  b = a
>  a(1) = b(1) + 1
>  if a(1) == b(1)
>    error ("My script is broken!")
>  endif
> endfunction
>
> If a were passes to foo as a reference, we would see an unexpected
> failure.

Iff there is parallel execution present, right?

> We could instead introduce a new keyword for function
> arguments like in C++. Something like
>
> function foo (ref a)
>  # now a is a reference
> endfunction
>
> But this makes the Octave language significantly more complex, as
> users now must check function signatures to see if their input
> variables are modified. Instead, if we make the interpreter recognize
> patterns like:
> a = foo (a);
> We can get the same performance benefit of pass by reference in the
> current system without having to change the language at all.

Plus, if a function operates on the variable in a read only way, and
we exclude async access (multi thread/core) to the data we can use
reference w/o any worry, I think.


> If you want a scientific computing language that uses pass by
> reference instead of pass by value, might I suggest using Julia? I
> quite like the language (but haven't seriously used it).

I doubt if it is realiable enough yet.

>>> Also, I think matlab new style classes are pass by reference. Octave
>>> does not current support them.
>> I see.
>> Thanks for letting me know you thoughts.
>>
>> And what do you think of this<
>>
>> And what do you think of julia arithmetic as such:
>> nheads = @parallel (+) for i=1:100000000
>>  randbit()
>> end
>> which would call all computing nodes and sum results together.
>
> I really like how Julia supports parallel computation. Matlab has
> something similar, parfor, but we currently don't parallelize it in
> Octave. There are several underlying technical issues in the
> interpreter which make this sort of parallel execution difficult.
>
> There exists Octave Forge packages that provide some parallelization
> support [3] [4]. However, it would be nice to parallelize the
> interpreter.

I don't think octave really needs to sport on parfor since interpreted
languages are well known for effectively running (for) cycles.
Currently, I am quite happy with the parcellfun but I can imagine
something that is easier to use in daily life.

Thanks Max,

Lev

>
> [1] - https://github.com/JuliaLang/julia/blob/master/test/perf/perf.m
> [2] - https://github.com/JuliaLang/julia/blob/master/test/perf/perf.jl
> [3] - http://octave.sourceforge.net/general/index.html
> [4] - http://octave.sourceforge.net/openmpi_ext/index.html
>
> Max Brister


reply via email to

[Prev in Thread] Current Thread [Next in Thread]