14 ms·
GNU Octave
- jordigh 10y agoThey changed the title. I hope even with the title change, people are aware that the website design is new, which is why I submitted the URL. We also just released a 4.2 version on Thursday, with many improvements, but no huge features like the GUI was for 4.0: https://www.gnu.org/software/octave/NEWS-4.2.html https://www.gnu.org/software/octave/NEWS-4.2.html
- vedranm 10y agoVery happy to see Octave move forward. Few years ago my colleagues at the university complained about Octave not being on par with MATLAB performance-wise, has this improved since?
- jordigh 10y agoThe biggest hit in performance that people see is the lack of a JIT compiler. If you are able to write your code without loops, Octave performs comparably to Matlab. No, we still do not have a JIT compiler. It is difficult to attract this kind of talent, because the kind of people who use Octave know mathematics and engineering more than they know compilers and languages.
- Alphasite_ 10y agoI wonder if Octave would benefit from something like Graal, for some common JIT infrastructure.
- gravypod 10y agoMaybe even hooking it up to an LLVM compiler would be good.
- jordigh 10y agoWe have a toy LLVM attempt that compiled a few trivial loops but hooked into the unstable C++ LLVM API. Nobody really knew how to maintain it, and we got tired chasing after the unstable API, so we let it bitrot to death. I don't expect any other JIT backend (libgccjit could be another possibility) would require any less knowledge of compilers and language design. Does Graal have some magic for us? Can it give us a JIT compiler even if most of us are not compiler writers or language designers?
- yorwba 10y agoFrom https://wiki.openjdk.java.net/display/Graal/Publications+and+Presentations https://wiki.openjdk.java.net/display/Graal/Publications+and... Forget “this language is fast”, “this language has the libraries I need”, and “this language has the tool support I need”. The Truffle framework for implementing managed languages in Java gives you native performance, multi-language integration with all other Truffle languages, and tool support - all of that by just implementing an abstract syntax tree (AST) interpreter in Java. Truffle applies AST specialization during interpretation, which enables partial evaluation to create highly optimized native code without the need to write a compiler specifically for a language. The Java VM contributes high-performance garbage collection, threads, and parallelism support. So you won't need the know-how to write a compiler, but instead write an interpreter optimized for execution with Graal.
- SomeCollegeBro 10y agoWould a language engine like v8 help in this case? Or is it the fact that you can't optimize the actual mathematical operations within loops?
- kbumsik 10y agoNo. The biggest hit is not the JIT. Octave has less support for SIMD operations whereas Matlab uses Intel's propriority Math Kernel Library. You will realize that Octave gets significantly slower in matrix and vectorized operations, where JIT doesn't help much
- jordigh 10y agoOctave is more or less BLAS-agnostic. You can build it with any BLAS, including MKL and people do this (but because MKL is too restrictive, you can't redistribute the result). While you may see speedups this way, if your code isn't vectorised, as most code out there is not, you still will see big slowdowns.
- auxym 10y agoI haven't studied the MKL license, but in the python world, Christoph Gohlke is kind enough to freely distribute some python packages (notably Numpy and Scipy) built with against MKL. http://www.lfd.uci.edu/~gohlke/pythonlibs/ http://www.lfd.uci.edu/~gohlke/pythonlibs/
- gnufx 10y agoAlong with the myths about performance, the licence for the Intel stuff isn't what many people think... Anyhow, there's no need for MKL, since at least the operations that matter are as fast in OpenBLAS on x86 up to AVX512 (and infinitely faster on other architectures). You can get that with the Debian packaging of Octave, for instance, and you can fiddle it system-wide on RHEL/Fedora. Thanks for working on Octave. I wish people would put money into it rather than (in the case of my university) paying enough for Matlab to fund one or two full-time staff who could do development and support of free stuff with Octave and other things like R. Multiply that by N universities in just in this country...
- hashhar 10y agoWhat kind of work and skills would it take? I would be free this summer and am looking to contribute to a good and worthy project (just for kicks and the bragging rights).
- sorenjan 10y agoMatlab now has notebooks[0], probably inspired by Jupyter and/or Mathematica. Is this something Octave is working on too? [0] https://mathworks.com/products/matlab/live-editor/ https://mathworks.com/products/matlab/live-editor/
- jordigh 10y agoI don't know of that. But with Pytave, which is fairly mature now, you could embed some Octave computations inside a Jupyter notebook. I haven't seen anyone do this yet with a lot of seriousness. There's also Kantor and TeXmacs which both have used Octave as a possible backend. I haven't checked recently to see if they've been well maintained.
- amk_ 10y agoA year or two ago the TeXmacs package worked pretty well. There is also an actual Octave kernel for Jupyter, similar to the Julia one: https://github.com/Calysto/octave_kernel https://github.com/Calysto/octave_kernel
- lawnchair_larry 10y agoThanks, it's frustrating that they turn informative titles into completely useless ones!
- bandrami 10y agoGreat stuff. I did grad school on Octave (and a bit of Maxima) rather than Matlab; I'm glad my alma mater (Boston U.) was supportive of free software and the professors allowed that. I saw the version bump on info-gnu the other day; I haven't updated yet (I'm kind of in the middle of a project using Octave) but once that's done I can't wait to try it out.
- aikah 10y agoNice, how does it compare to commercial tools or Python ? the pros and the cons ?
- stinos 10y agoanecdote: last time I tried Octave, like half a year ago, it didn't want to plot anything and had to be killed after issuing a plot command. Previous time I tried it, maybe a year ago, I didn't have that problem but it didn't run all my matlab stuff (nor did I expect it to). So Octave for us was basically: either a maintainance burden if we want to keep all Matlab stuff running on Octave as well, or else a seperate codebase, combined with possibly severe problems in the basics; which might be easy to solve but do require time looking for a solution. So we switched to Python then (requirements for this particular project were just pretty basic line graphs) and didn't look back.
- IshKebab 10y agoIt's a lot more suited to mathematical problems than Python. Python wasn't designed for matrix manipulation like Matlab was so the syntax isn't nearly as nice. Matlab also has a huge library of maths functions built in - even really obscure ones. Finally Matlab has a nice GUI and plotting support built in which Python doesn't have. Basically Matlab is almost strictly better than Python. The only advantage Python have that I can see are: a) it has better support for non-maths functions - good luck doing OpenGL in native Matlab (although it does easily interface with C++ and Java), and b) it is free; Matlab costs a lot, although they did actually release an affordable 'personal' edition. Octave is basically a Matlab clone. It's slower, has a less polished GUI (plotting is especially buggy) and is less comprehensive.
- dorfsmay 10y agoIsn't Julia a better alternative than Python if you're doing math these days?
- GFK_of_xmaspast 10y agoJulia's gotten a little bit of buzz the last few years, but python's got the whole rest of the ecosystem.
- elipsey 10y agoI'm really grateful that octave exists and that folks let me use it for free. But the part about "Drop-in compatible with many Matlab scripts" has been kind of dicey for me. Whenever I try to run code developed with matlab using Octave I am thwarted by bugs and stubbed functions. I end up either having to find a machine with a matlab license or just port it. The core functionalities for doing math and matrix-ey stuff seem great, but when I start pulling in a bunch of libraries to do less common things, the wider ecosystem doesn't seem as fully baked as, for example Python or R.
- pkd 10y agoFun fact about Octave. If you start Octave and run the `fact` command, it emits random jokes about Richard Stallman. Here is one: > There is no chin under Richard Stallman' beard. There's only another beard. Recursively.
- auxym 10y agoHa. The equivalent of "why" on matlab, I guess.
- jordigh 10y agoI figured if Matlab could have some fun, why not us. I was really happy when Dirk Eddelbuettel ported it to R: https://rdrr.io/cran/rmsfact/ https://rdrr.io/cran/rmsfact/
- dTal 10y agooctave:8> fact Richard Stallman don't cut his hair because there are no GNU/Scissors meh, let's try again... octave:9> fact Richard Stallman doesn't read web pages. They write to him. snerk. Okay, one more... octave:10> fact "RMS" stands for "RMS Makes Software" THIS IS GOLD, JERRY, GOLD
- chollida1 10y agoSerious Question..... Matlab usage is on a dramatic downswing from my vantage point in quantitative fiance. I don't really know anyone under 40 who uses it anymore as one of their main tools. And I've never once seen anyone use octave as a substitute, I'm guessing this is mostly due to money for licenses not really being an issue. Nowadays, the only tools I see people using are R, python(pandas, numpy) and very occasionally Julia. Where does this leave Octave? What's Octaves niche? Or put another way, why learn Octave/Matlab when there are other languages out there that provide similar capabilities and that are much more popular?
- petters 10y agoI suppose Octave's niche is people who have been using Matlab, change employer, and no longer have access. Python + numpy + matplotlib + jupyter notebooks are superior to Matlab, IMO. And I used to be really into Matlab.
- santiagobasulto 10y agoSorry for my ignorance. What's the usage you give to those tools? What's your domain? And finally, how to get started with them? I'm highly interested on Data Science but it's hard to start, there's so much stuff going on.
- e19293001 10y agoYou might want to try installing anaconda[0]. After you have installed, follow the instructions here[1]. There are also lots of videos in youtube if you have not yet done a little bit of googling. By the way, this all requires that you know how to code in python else you can get your hands wet here[2]. Now if you already know how to code in python and know how to use jupyter, you're ready to learn about neural networks. This book[3] did a really good job in explaining the subject. And, this is what jupyter notebook can do[4]. [0] - https://www.continuum.io/downloads https://www.continuum.io/downloads [1] - http://jupyter.readthedocs.io/en/latest/install.html http://jupyter.readthedocs.io/en/latest/install.html [2] - https://www.codecademy.com/learn/python https://www.codecademy.com/learn/python [3] - https://www.amazon.com/Make-Your-Own-Neural-Network-ebook/dp/B01EER4Z4G https://www.amazon.com/Make-Your-Own-Neural-Network-ebook/dp... [4] - https://try.jupyter.org/ https://try.jupyter.org/
- kbumsik 10y agoI used Octave and Matlab back and forth last year for my Computer Vision class. My experience on Octave was fine except it is increadibly slower than Matlab... The nice thing about Octave is that it is a portable program that you can store it in a USB memory then use it anywhere.
- arunc 10y agoIt's good to know that Octave still uses Mercurial amidst all the Git hype.
- madnight 10y agono its not
- Maken 10y ago>Visualize data with high-level plot commands in 2D and 3D. And wait an eternity for anything 3D to render. I usually use Octave for prototyping, and while it is reasonably fast doing calculations once you learn to vectorize computations, plotting moderately large amounts of data can easily block the entire program.
- cjdentra 10y agoCore Matlab/Octave is great but almost inevitably you end up needing/wanting toolbox support. For Matlab the cost gets up there quite fast. I've found for Octave, support at the toolbox level is not as extensive. If Matlab is not an option it leads to searching for support in other languages. OpenCV for image processing/understanding and the python libs as mentioned become important for example. But development cycle time is longer and prototyping algorithms is a bit more complicated. Its been a while since I've worked with Octave toolboxes but it would be great if they were on par with Matlab. Performance is less of an issue with prototyping than production systems and Matlab has a path to get to compiled C/C++ (Java and perhaps other?) Is there Octave support for generating reasonably performant C++ or Java?
- samuell 10y agoMATLAB was kind of my "first love" as an undergrad in biotech engineering, for simulating biochemical network in a course. I have since drifted away towards python, and lately Go, but MATLAB/Octave always has a directness that I think few languages since have managed to achieve, and I realize now that it helped lure me out of web-lab, into into coding and bioinformatics-land.
- return0 10y agoDo people really use octave, the crippled matlab with gnuplot graphs? matplotlib is way more functional
- bandrami 10y agoMany of us don't use plotting at all. Even in Matlab it's only once in a blue moon I need to plot something.
- sabujp 10y agomy ee courses in dsp were heavy with matlab/octave
- clw8 10y agoMatlab and Simulink are core tools in automotive engineering.
- jjawssd 10y agoIn the world of Numpy and Scipy, this is obsolete tech.
- beagle3 10y agoThere is another GPL Matlab compatible system called FreeMat, which doesn't get as much as love as Octave (which itself does not get as much love as it should) - http://freemat.sourceforge.net/ http://freemat.sourceforge.net/
- gnufx 10y agoThere's also Scilab, though it isn't directly compatible like Octave.
- mindcrime 10y agoLike many posters here, my first exposure to Octave was from taking the Andrew Ng class on Machine Learning. For myself, I have to say that I was pretty impressed with Octave. It does a lot of what you can do with R, but I find the syntax more accessible. I get the feeling that there aren't quite as many packages/libraries available for Octave as there are for R, though. Still, I find myself using Octave from time to time, when I need to do some quick calculations or whatever. I even bought a Matlab book, intending to invest a little more effort into learning this ecosystem. Glad to see Octave development is ongoing. It'll be fun to check out 4.2.0 and see what it has to offer.
- BucketSort 10y agoNow if only I can figure out how to get it working on Mac. The official DMG simply doesn't work and the homebrew method doesn't install the GUI.
- Anechoic 10y agoMacPorts does install the GUI (just finished compiling it).
- wenderen 10y agoOn the off-chance that the site maintainer is reading this, the "contributing to Octave's development" link is 404-ing. Link: https://www.gnu.org/software/octave/doc/interpreter/Contributing-Guidelines.html#Contributing-Guidelines https://www.gnu.org/software/octave/doc/interpreter/Contribu...
- eidsobr 10y agoOnly one person has mentioned what I think is a critical distinction. MATLAB + Simulink + Coder Products = hundreds of man-hours saved in the engineering design-development-prototype-deploy process. Obviously this is not as relevant to academics and CS, but the thousands of $$$ spent on the tools is made up many times over in saved highly-trained man-hours.