Parallel Universe is Intel’s quarterly publication, known to cover stories on notable innovations in the field of software development, from high performance computing to threading hybrid applications….
Category Archives: Julia
Julia calling C: A more minimal example
Earlier I presented a minimal example of Julia calling C. It mimics how one would go about writing C code, wrapping it a library and then calling it from Julia. Today I came across and even more minimal way of doing that while reading an excellent blog on Julia’s syntactic loop fusion. Associated with the blog was notebook that explores the matter further.
Basically, you an write you C in a string and pass it directly to the compiler. It goes something like
C_code= """ double mean(double a, double b) { return (a+b) / 2; } """ const Clib=tempname() open(`gcc -fPIC -O3 -xc -shared -o $(Clib * "." * Libdl.dlext) -`, "w") do f print(f, C_code) end
The tempname function generate a unique temporary file path. On my Linux system Clib will be string like "/tmp/juliaivzRkT". That path is used to generate a library name "/tmp/juliaivzRkT.so" which will then used in the ccall:
julia> x=ccall((:mean,Clib),Float64,(Float64,Float64),2.0,5.0) 3.5
This approach would be be recommended if are writing anything sophisticated in C. However, it fun to experiment with for short bits of C code that you might like to call from Julia. Saves you the hassle of creating a Makefile, compiling, etc…
On the hunt for a new and interesting programming language
By: Michael Fiano
Re-posted from: https://mfiano.net/posts/2017-07-14-on-the-hunt-for-a-new-and-interesting-programming-language/index.html
On the hunt for a new and interesting programming language