high performance computing language,julia
TRANSCRIPT
Presented by
D.ANUSHA
G.SAILAJA
HIGH PERFORMANCE COMPUTING LANGUAGE,JULIA
Introduction Importance of julia Features Julia with other programming languages Sample program on julia Advantages Disadvantages Conclusion
Contents
Introduction
As high-performance computing (HPC) bends to the
needs of "big data" applications, speed remains essential
The programs are getting more and more complex and
time-consuming to develop. A few years ago, when an
HPC startup Edelman was involved in Interactive
Supercomputing .It was acquired by Microsoft and its
group set out to develop a programming language, julia.
Julia is a high-level, high-performance dynamic
programming language for technical computing, with
syntax that is familiar to users of other technical
computing environments.
It provides a sophisticated compiler, distributed parallel
execution, numerical accuracy.
Why Julia
The creators wanted a language that satisfies:
1.The speed of C.
2. With the dynamism of Ruby.
3. Mathematical notations like Matlab.
4. As usable for general programming as Python.
5.As easy for statistics as R.
Multiple dispatchGood performanceBuilt-in package managerCall c functions directlyParallel computing
Special FEATURES of Julia
All arguments are equally responsible to determine a method.In single dispatch the calls cat.run("fast") and cat.run(5) would dispatch to the same method and it is up to the method to do different things with the different types of the second parameter. In Julia run(cat, "fast") and run(cat, 5) dispatch to separate methods.
Multiple dispatch
Julia’s LLVM-based just-in-time (JIT) compiler
combined with the language’s design allow it to
approach and often match the performance of C
Julia’s ability to compile code that reads like
Python into machine code that performs like C
almost entirely derives from Julia’s ability to
specialize function definitions in this way.
High-Performance JIT Compiler
Execution time
Julia with other programming languages
Foreign function interfaces to a number of
languages like C and Fortran, C++ (unfortunately
planned only for Julia 0.5), Python, R, Matlab.
This makes it relatively easy to use code in any of
these languages
Built-in package manager
To allow easy use of this existing code, Julia
makes it simple and efficient to call C and
Fortran functions.
The machine instructions generated by Julia’s
JIT are the same as a native C call would be, so
the resulting overhead is the same as calling a
library function from C code.
Call c functions directly
# julia
function mmult(A,B)
(M,N) = size(A);
C = zeros(M,M);
for i=1:M
for j=1:M
for k=1:M
C[i,j] += A[i,k]*B[k,j];
end
end
end
C;
end
// C
#define M 500
void mmult(double A[M][M],double B[M][M],doubleC[M][M])
{
//double C[M][M];
int i,j,k;
for(i=0; i<M; i++)
for(j=0; j<M; j++){
C[i][j] = 0;
for(k=0; k<M; k++)
C[i][j] += A[i][k]*B[k][j];
}
}
Sample program on julia
Development of Julia
Julia already possesses a mature package ecosystem and
can be used as a feature-complete replacement for R or
Python.
Julia’s compiler is so good that it will make any piece of
code fast – even bad code.
It's touted as a high-level language, which means it's
easier to learn. It's normally faster to write code in a
high-level language.
Advantages
Julia arrays are 1-indexed, which can really trip you up sometimes when you're used to Python, C/++, Java, etc.
Julia list comprehensions (currently) lack the ability to use conditionals, unlike Python. One can do this with for loops and if/else, though, as normally done.
Julia dictionaries are hashed differently than Python dictionaries, which can make them slower in many cases.
Disadvantages
ConclusionJulia is a flexible dynamic language, appropriate for scientific and numerical computingJulia combines the features of many other programming languages like C, Matlab and Java etc.Existence of JIT Compiler in Julia increases the performance of computuing.
http://radar.oreilly.com/2013/10/julias-role-in-data-science.htmlhttp://www.nowozin.net/sebastian/blog/the-julia-language-for-scientific-computing.htmlhttp://www.evanmiller.org/why-im-betting-on-julia.htmlhttp://julialang.org/http://docs.julialang.org/en/release-0.4/manual/functions/
References:
ANY QUERIES???
THANK YOU….