340 karma · joined November 13, 2012
my public key: https://keybase.io/vchuravy; my proof: https://keybase.io/vchuravy/sigs/LHtpWqh_3WvuauC9kZ5BfOSUGkL0qgHk1MydnpuhYRU
One tool that I started exploring is https://pernos.co/, the ability to do dataflow analysis is super cool. Let's you easily answer the question "How did this value get into this register".
There is always someone who will fly a helicopter into the remote outback...
> is very possible to be trapped by weather for days, weeks, even months. That is more remote than any island.
Except those islands that you can't reach due to weather for days, weeks or, even months...
Being able to run backwards from the point of failure and understand where a value is coming from is very powerful.
Having this available in Julia directly is great, and will make it much easier to get bug-reports from users.
The focus on CUDA comes from the fact that most HPC systems for scientific computing are using Nvidia GPUs. That is finally slowly changing.
I couldn't do my daily work without rr, since often I work with systems that are large and complex and I didn't write myself.
Now NVidia only needs to buy Xilinx...
Tim Besard gave a talk at a Tensorflow meetup recently that walked through the Julia stack (GPU&ML) that I would highly recommend: https://docs.google.com/presentation/d/1y93Kg8ZizvabKAGs-zmA...
[1] https://www.heise.de/security/meldung/Spectre-NG-Intel-versc...
I am working on making these tools easily accessible from Julia [2] and one of the things missing from llvm-mca is the ability to mark a region of assembly code to be analysed instead of analysing the entire provided assembly.
[1] https://llvm.org/docs/CommandGuide/llvm-mca.html [2] https://github.com/vchuravy/IACA.jl
const MyAlias = NamedTuple{(:a, :b),Tuple{Int64,Int64}}
MyAlias((2, 3)) # (a = 2, b = 3) I'll try to just talk about what makes Python hard to run quickly (especially as compared to less-dynamic languages like JS or Lua).
The thing I wish people understood about Python performance is that the difficulties come from Python's extremely rich object model, not from anything about its dynamic scopes or dynamic types. The problem is that every
operation in Python will typically have multiple points at which the user can override the behavior, and these features are used, often very extensively. Some examples are inspecting the locals of a frame after the frame
has exited, mutating functions in-place, or even something as banal as overriding isinstance. These are all things that we had to support, and are used enough that we have to support efficiently, and don't have analogs in
less-dynamic languages like JS or Lua.