I've recently started to learn Nim (and nimpy also for Python interoperability) 
and the experience up to now is very good, including fast compilation. I've 
also learning Arraymancer, which also seems very nice for linear algebra. My 
interest is basically numerical calculations, so I've been reading various 
articles that compare various aspects of different languages for that purpose. 
For example, one of the articles that I found recently is:

Benchmarking Kernel Matrix Calculations in D, Julia, and Chapel 
[https://github.com/dataPulverizer/KernelMatrixBenchmark](https://github.com/dataPulverizer/KernelMatrixBenchmark)

Here the author compares D, Julia, and Chapel for some calculations and 
summarizes his/her current impressions (based on coding experiences and 
performance). Though I expect Nim would be in a good position for such 
benchmarking, I am wondering the difficulty of parallel coding in Nim. For 
example, in the above benchmark programs,

D uses a syntax like "foreach( ... ; ....parallel(...) )", 
[https://github.com/dataPulverizer/KernelMatrixBenchmark/blob/master/d/kernel.d#L219](https://github.com/dataPulverizer/KernelMatrixBenchmark/blob/master/d/kernel.d#L219)

Julia uses "threads", 
[https://github.com/dataPulverizer/KernelMatrixBenchmark/blob/master/julia/KernelMatrix.jl#L129](https://github.com/dataPulverizer/KernelMatrixBenchmark/blob/master/julia/KernelMatrix.jl#L129)

and Chapel uses "forall" statements 
[https://github.com/dataPulverizer/KernelMatrixBenchmark/blob/master/chapel/kernel.chpl#L139](https://github.com/dataPulverizer/KernelMatrixBenchmark/blob/master/chapel/kernel.chpl#L139)

And looking at recent threads (e.g., 
[https://forum.nim-lang.org/t/6434](https://forum.nim-lang.org/t/6434) and 
[https://forum.nim-lang.org/t/6426)](https://forum.nim-lang.org/t/6426\)), I am 
wondering to what degree it is difficult (or easy) to learn parallel coding in 
Nim, particularly as compared to OpenMP/MPI (which I have basic knowledge and 
experience). Do you think it might be rather hard to learn parallelism in Nim 
at the moment, e.g., by requiring more experiences and understanding of 
technical aspects (like "channels")?

I am sorry for a very vague question but I appreciate it if you share any 
ideas/experiences. Thanks very much :)

Reply via email to