Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add a blog post on precompilation #1111

Merged
merged 7 commits into from
Jan 5, 2021
Merged

Add a blog post on precompilation #1111

merged 7 commits into from
Jan 5, 2021

Conversation

timholy
Copy link
Member

@timholy timholy commented Dec 26, 2020

I'm preparing new material on how to reduce latency and improve precompilation in packages, but I realized I would benefit from some introductory material before discussing the tools (e.g., before returning to #1093). Hopefully this post will introduce all the concepts I need.

@github-actions
Copy link

Once the build has completed, you can preview your PR at this URL: https://julialang.netlify.app/previews/PR1111/ in ~15 minutes

@tlienart
Copy link
Contributor

Small Franklin note which you could ignore: if you use a triple backtick with a ! then the code in there gets executed and the output is shown on the page, the interest in doing this is that if ever the output changes slightly, it will be updated automatically. So for instance:

```!
c64 = [1.0]
```

-->

Screenshot 2020-12-27 at 12 08 21

@timholy
Copy link
Member Author

timholy commented Dec 27, 2020

Thanks for the tip! I'm not sure I'll use it due to changes in formatting and the fact that it seems to need an isolated statement, but I will keep that in mind.

I just pushed an update that may hint at something I'm trying but failing to do: I'd be interested in exploring having "boxes" for different types of content: asides, exercises/quizzes, and perhaps other topics. As you'll see, I pushed a .css file as well as my markdown, but this is me just imitating things I've found on the internet without actually understanding what I'm doing. Is this easy or hard? If the former, any pointers?

@tlienart
Copy link
Contributor

tlienart commented Dec 27, 2020

You can do this with @@ in Franklin this will surround content in a div block of a given class (or classes): e.g.

@@note
content here
@@

Will inject the content in a <div class="note">...</div>". For several classes use @@Class1,class2,class3 content @@`. I think that should be all you need but don't hesitate to ping me from here :)

PS: and plug your custom CSS at the end of https://github.com/JuliaLang/www.julialang.org/blob/master/_css/franklin.css or, if it bothers you to put it there, you can also inject it at the top of your post with:

~~~
<style>
your css here
</style>
~~~

whichever one you think is easier (the advantage of putting your CSS in the _css/* folder is that everyone can re-use the stuff you define in there)

@chriselrod
Copy link
Contributor

While a lot of work has gone into Julia 1.6 to reduce latency, users and developers naturally will want more.

More work, but less latency. ;)

I think it looks good and found it informative/helpful. I have some playing around to do!

@timholy
Copy link
Member Author

timholy commented Jan 1, 2021

If you're looking into fixing inference, the upcoming (on master) inference_triggers framework in SnoopCompile is the bomb 😆.

@tpapp
Copy link

tpapp commented Jan 1, 2021

This is very informative, thanks for writing it up! As I am still digesting this, I don't have much to add yet, except that it is unclear how to get a method instance object from the @snoopi_deep and similar output that will come in later installments.

@timholy
Copy link
Member Author

timholy commented Jan 2, 2021

Boxes are working great, thanks @tlienart!

Barring suggested changes, I'm currently targeting this for a Jan 5 release (just to give people a few days to get back in the swing).

@timholy timholy merged commit 2f72fa6 into master Jan 5, 2021
@timholy timholy deleted the teh/pctutorial branch January 5, 2021 06:43
Copy link
Member

@NHDaly NHDaly left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🌟 This was great! 🌟

This was such a useful introduction to many of the topic at play, and I think will do a good job of helping people to understand what's going on under the hood. Thanks for a really nice read! :) :)

Thank you for writing this all up so clearly and explaining it so well!

**Box 3** Generally, the set of backedges is a graph, not a tree: in real code, it's possible for `f` to call itself (e.g., `fibonacci(n) = fibonacci(n-1) + fibonacci(n-2)`), or for `f` to call `g` which calls `f`.
When following backedges, MethodAnalysis omits `MethodInstances` that appeared previously, thus performing a "search" of the graph. The results of this search pattern can be visualized as a tree.

Type inference behaves similarly: it caches its results, and thus infers each `MethodInstance` only once. (One wrinkle is [constant propagation](https://en.wikipedia.org/wiki/Constant_folding), which can cause the same `MethodInstance` to be re-inferred for different constant values.) As a consequence, inference also performs a depth-first search of the call graph.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

which can cause the same MethodInstance to be re-inferred for different constant values.

Or even reinferred for the same constant value, across different inferrable sets! 😮

julia> using SnoopCompile

julia> h(x) = x == 0 ? 0 : h(x-1)+1
h (generic function with 1 method)

julia> f(x) = h(sizeof(x))
f (generic function with 1 method)

julia> t = @snoopi_deep f(0.0)
Core.Compiler.Timings.Timing(InferenceFrameInfo for Core.Compiler.Timings.ROOT()) with 1 children

julia> flatten_times(t)
8-element Vector{Tuple{Float64, Float64, Core.Compiler.Timings.InferenceFrameInfo}}:
 (5.1809e-5, 5.1809e-5, InferenceFrameInfo for -(8::Int64, 1::Int64))
 (5.8423e-5, 5.8423e-5, InferenceFrameInfo for ==(8::Int64, 0::Int64))
 (6.0468e-5, 6.0468e-5, InferenceFrameInfo for +(0::Int64, 1::Int64))
 (9.3104e-5, 9.3104e-5, InferenceFrameInfo for sizeof(::Float64))
 (0.000327155, 0.000387623, InferenceFrameInfo for h(::Int64))
 (0.000330497, 0.000440729, InferenceFrameInfo for h(8::Int64))
 (0.00037169, 0.001293146, InferenceFrameInfo for f(::Float64))
 (0.013208022, 0.014501168, InferenceFrameInfo for Core.Compiler.Timings.ROOT())

julia> t = @snoopi_deep f(0)
Core.Compiler.Timings.Timing(InferenceFrameInfo for Core.Compiler.Timings.ROOT()) with 1 children

julia> flatten_times(t)
5-element Vector{Tuple{Float64, Float64, Core.Compiler.Timings.InferenceFrameInfo}}:
 (3.51e-5, 3.51e-5, InferenceFrameInfo for -(8::Int64, 1::Int64))
 (6.2299e-5, 6.2299e-5, InferenceFrameInfo for ==(8::Int64, 0::Int64))
 (0.000144853, 0.000422476, InferenceFrameInfo for f(::Int64))
 (0.000180224, 0.000277623, InferenceFrameInfo for h(8::Int64))
 (0.00266502, 0.003087496, InferenceFrameInfo for Core.Compiler.Timings.ROOT())

^ Note that h(8) had to be inferred again, even though it was identical.

But within the same top-level call to inference, it will cache inference with constants, and so only infer h(8) once:

julia> using SnoopCompile

julia> g(x) = f(x) + f(Int(x))
g (generic function with 1 method)

julia> f(x) = x + h(sizeof(x))
f (generic function with 1 method)

julia> h(x) = x == 0 ? 0 : h(x-1)+1
h (generic function with 1 method)

julia> t = @snoopi_deep g(0.0)
Core.Compiler.Timings.Timing(InferenceFrameInfo for Core.Compiler.Timings.ROOT()) with 1 children

julia> flatten_times(t)
10-element Vector{Tuple{Float64, Float64, Core.Compiler.Timings.InferenceFrameInfo}}:
 (5.4203e-5, 5.4203e-5, InferenceFrameInfo for -(8::Int64, 1::Int64))
 (6.23e-5, 6.23e-5, InferenceFrameInfo for +(0::Int64, 1::Int64))
 (6.2768e-5, 6.2768e-5, InferenceFrameInfo for ==(8::Int64, 0::Int64))
 (8.6434e-5, 8.6434e-5, InferenceFrameInfo for sizeof(::Float64))
 (0.000180616, 0.000180616, InferenceFrameInfo for f(::Int64))
 (0.000284891, 0.000401862, InferenceFrameInfo for h(8::Int64))
 (0.000298722, 0.000361022, InferenceFrameInfo for h(::Int64))
 (0.000344378, 0.001193696, InferenceFrameInfo for f(::Float64))
 (0.000429948, 0.00180426, InferenceFrameInfo for g(::Float64))
 (0.017256332, 0.019060592, InferenceFrameInfo for Core.Compiler.Timings.ROOT())

I've asked Jameson, Jeff and Keno about this, and they explained it's a deliberate decision because they expect functions are rarely compiled with the same constant over multiple top-level inferences, and the overhead from caching it might be too expensive relative to gain.

BUT i think we may suffer from this in our database, because we are doing query compilation on the fly at runtime, and we want user-visible latency to be as low as possible, and i think we may be compiling some methodinstances repeatedly for every new query.

We suggested that it might make sense to at least keep a heuristic that tracks how many times a methodinstance has been inferred for the exact same constant, and after maybe the third time we start caching it? (This would make us behave a bit more like a profiling JIT!)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Anyway, up to you if this is too in the weeds, but you could consider updating this sentence to be something like:

Suggested change
Type inference behaves similarly: it caches its results, and thus infers each `MethodInstance` only once. (One wrinkle is [constant propagation](https://en.wikipedia.org/wiki/Constant_folding), which can cause the same `MethodInstance` to be re-inferred for different constant values.) As a consequence, inference also performs a depth-first search of the call graph.
Type inference behaves similarly: it caches its results, and thus infers each `MethodInstance` only once. (One wrinkle is [constant propagation](https://en.wikipedia.org/wiki/Constant_folding), which can cause the same `MethodInstance` to be re-inferred for different constant values, and sometimes even re-inferred for the same value.) As a consequence, inference also performs a depth-first search of the call graph.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If I were making other changes, I'd do this, but on its own but I think the question of persistence of inference's cache is a bit more detail than readers need.

Stay tuned!

@@answer
**Answer to quiz** Directly precompiling `push!(::Vector{SCDType}, ::SCDType)` fails, because while your package "owns" `SCDType`, *it does not own the method of `push!`*.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Woah, this is WILD! Fascinating. Thanks, TIL! :)

@timholy
Copy link
Member Author

timholy commented Jan 11, 2021

Awesome! Let's write the next one together? I'd like to have one/two on the GUIs, the flamegraph and my (still morphing but mostly stable) "profile-guided despecialization" (PGDS) GUI.

The PGDS stuff gets into complex territory that I'm still figuring out, but probably best just to get out what we know and let the community help figure it out...

zygmuntszpak added a commit to zygmuntszpak/www.julialang.org that referenced this pull request Feb 11, 2021
* Update juliacon-2020-open-source-bof-follow-up.md

Fix typo

* Update gsoc-2020-wrapup.md

Add Blog Post link

* Update diversity.md

* Redo hackathon page to support multiple events.

* Update diffeq.md for next JSoC (JuliaLang#994)

* Update "powered by" line to be shorter

Also to what Franklin itself uses.

* Fix JuliaLang#996

* Fix URL in MIT announcement banner

* Use Franklin 0.10

* fix issue mentioned in JuliaLang#998 (JuliaLang#1000)

* Create hacktoberfest.html

Add re-direct for Hacktoberfest

* Set stable release to 1.5.2 (JuliaLang#1003)

* Add blogpost about the rr memory debugging saga (JuliaLang#1002)

* Add blogpost about the rr memory debugging saga

* Address Elliot's feedback

* Fredrik's review

* Stefan's review

* fixing meta tags + hfun (JuliaLang#1005)

* fixing meta tags + hfun

* whitespaces

* comment improvement

* Add more twitter integration (JuliaLang#1006)

- If the blog author's twitter ID is specified, add a small twitter
bird after the author's name
- Add the @JuliaLanguage twitter handle for the twitter site metadata

* using local vars as defaults if defined (JuliaLang#1007)

* Tweak rr post blog title (JuliaLang#1008)

I was told the old title was boring - try to do better.

* Allow large image preview in Google (JuliaLang#1011)

* In dubio pro populo (JuliaLang#1010)

https://twitter.com/KenoFischer/status/1309287103675719680

* Update organizations.md

Add Algebraic Julia Applied Category Theory

* Fix diffeq training example for newer Julia

Julia v1.3+ builds longer stacks, which makes it easier for Tracker.jl to cause a spurious stackoverflow, so I just chopped the example down a bit.

* sitemap generation (JuliaLang#1016)

* Update index.md

Changed 'has' to 'have' to match 'members'.

* A couple extra rr post typos (JuliaLang#1020)

* Add new D&I Page

* Update index.md

Add sign up link!

* added header links for community page

retained styling by reusing css classes

* update link: MIT policy on conflict resolution

* remove double negative in community/stewards.md

Co-authored-by: Mason Protter <mason.protter@icloud.com>

* add paper published at Computação Brasil journal

* Create stickers.md

Add stickers page.

* Update index.html

Switch alert to Hacktoberfest

* Update index.html

* Update classes.md

Include Marzieh Khakifirooz course centered on JuMP Linear Optimization.

* Fix link for Hacktoberfest Hackathon/Meetup 2020

Hello! The old link was giving me a 404 error even when I was logged in to MLH. I think I fixed it by putting in the correct link from [Logan Kilpatrick's Discourse post for the hackathon/meetup](https://discourse.julialang.org/t/julia-language-hacktoberfest-meetup-hackathon-t-shirts/47645).

Old Link: https://organize.mlh.io/events/4574-hacktoberfest-online-global-julia-meetup
New Link: https://organize.mlh.io/participants/events/4574-hacktoberfest-online-global-julia-meetup

The new link in this PR works for me now.

Let me know if this is the correct fix! No worries if not, in that case feel free to disregard.

* Update organizations.md

Closes JuliaLang#995

* Update organizations.md

* Fix for deploy script (JuliaLang#1033)

* fixing deploy to avoid using ssh

* other attempt

* Update classes of Abel Siqueira at UFPR

* Add JuliaSmoothOptimizers organization (JuliaLang#1034)

* Add JuliaSmoothOptimizers organization

* Sort organization list

* Update organizations.md

JuliaAttic is not really relevant in this list...

Co-authored-by: Viral B. Shah <ViralBShah@users.noreply.github.com>

* Create shop.md

WIP Shop page

* Update index.html

* Update index.html

* Bad link for Algebraic Julia

Correct link is https://github.com/AlgebraicJulia

* add Julia High Performance, 2nd Edition

* add teaching activities at the University of Basel

* Add "Train Your Brain" book

* add Julia language companion

* Add Recent UAI 2020 Paper

The paper and its package:
https://github.com/BGU-CS-VIL/VersatileHDPMixtureModels.j

* The "Packages" header should link to the "Julia Packages" page (JuliaLang#1046)

* Add a link to the General registry (JuliaLang#1045)

* Add a link to the General registry

* Update index.md

Co-authored-by: Viral B. Shah <ViralBShah@users.noreply.github.com>

* Update Emacs logo to current one

Emacs logo taken from the offical GNU website:
https://www.gnu.org/software/emacs/

* updating courses in University of South Florida.

* Add RL algorithms section in GSoC project list

* JetBrains => Pluto (JuliaLang#1052)

* Update deploy.yml

* Adds IROS 2020 paper

* some ecosystem updates

* Update index.html

* Update index.html

* Update index.html

* Update index.html

* Create slack.md

* Fix PR comments

* Update foot_general.html

* Switch all Slack Invite links to the new URL.

* Fix typo index.md (JuliaLang#1062)

Fix 2 typos calander -> calendar

* Broken link (JuliaLang#1064)

* Broken link

Best way to fix?

* Link only name

* Fix placeholder expansions in downloads/platform, fixes JuliaLang#1065. (JuliaLang#1066)

* adding explicit language for shell blocks (JuliaLang#1067)

* Update index.md

* Update index.md

* Add courses at Universidad del Norte, Colombia (JuliaLang#1068)

* Adding example project ModulePlay.jl (JuliaLang#1069)

Project example and getting started with Julia tools.

* Update slack.md

cc @DilumAluthge Added note on generating new Slack Invite link.

* Update organizations.md (JuliaLang#1074)

* JSoC projects for DeepChem.jl

* the legal data page is no longer needed (JuliaLang#1072)

* Update current stable release to 1.5.3 (JuliaLang#1076)

* Add entry for Modia.

* Add JuliaControl.

* Add queryverse.

* Add JuliaTelecom.

* Update organizations.md

Add JuliaActors

* advertise jill.py in Downloads as a command-line installation tool (JuliaLang#926)

* advertise jill.py in Downloads as a command-line installation tool

jill.py is a command-line tool (written in Python) that downloads and
extracts official binaries, and makes symlinks for all platforms.

This could serve as a recommended alternatives to package managers such
as `apt`, `brew` and `choco`

* move jill.py after linux and freebsd section

* Add a few more organizations. (JuliaLang#1083)

* Make all dashes the same character.

* Add a few more organizations.

Also create new categories to keep Scientific more manageable:
 - Astronomy/Space
 - Physics/Quantum mechanics

* Fix broken link to MLJ projects, caps error

* add Flux to orgs

* Update organizations.md

Update more orgs per JuliaLang#1085

* Update research.md

* Update research.md

* Update Pluto description (JuliaLang#1089)

* Add DFTK JSOC project (JuliaLang#1090)

* Fix the build

* Update shop.md

* Update Slack Link

* Update index.html

* Update meta.html

* Update index.html

* Add files via upload

* Update research.md

I messed up the new reference the other day, sorry for the noise.

* Create greet.yml

* Update greet.yml

* Update greet.yml

Update greeting from the default.

* Update greet.yml

* remove some links from diversity pages that lead nowhere

* Clarify that windows LTS link is (installer)

* use a Project + Manifest to record the dependencies used (JuliaLang#1098)

* adding author blurb JuliaLang#1009

* Explain the vertical axis of the benchmark timing graph (JuliaLang#1102)

As discussed in https://discourse.julialang.org/t/julia-micro-benchmarks-graph/50005

* downloads: Add link to versions.json (JuliaLang#1101)

* downloads: Add link to versions.json

This file contains info on all published Julia versions (see JuliaLang/julia#33817 for more context).
It's currently not easy to find but may be useful for people who build Julia tooling.

Generation script: https://github.com/SaschaMann/Julia-versions.json/blob/main/build_json_map.jl (written by `@staticfloat`)
Repo that builds and deploys it: https://github.com/SaschaMann/Julia-versions.json

* Add link to schema

* downloads: Update link to JSON schema (JuliaLang#1103)

See JuliaLang#1101

* Fix misplaced formatting in the rendered website (JuliaLang#1104)

The `_` in `Java 1.8.0_17` triggers formatting in the rendered website.

* Update classes.md (JuliaLang#1105)

Adding classes at Universidad Adolfo Ibáñez, Chile.

* Add nightly portable builds for Windows (JuliaLang#1106)

* Add nightly portable builds for Windows

* Update nightlies.md

* Update nightlies.md

* Update index.html

Update the homepage alert.

* Update index.html

* Update guidelines.md

* Update platform.md

Some missing dashes and an equal sign make the CentOS (version 7 or higher) install commands incorrect. I fixed the formatting, and the commands work. The main place to look is at "-add-repo " should have been "--add-repo="

incorrect:
sudo yum-config-manager –add-repo https://copr.fedorainfracloud.org/coprs/nalimilan/julia/repo/epel-7/nalimilan-julia-epel-7.repo

corrected:
sudo yum-config-manager --add-repo=https://copr.fedorainfracloud.org/coprs/nalimilan/julia/repo/epel-7/nalimilan-julia-epel-7.repo

* Update platform.md

Changed "--add-repo" to "--add " under the CentOS 7 section.

* Fix the welcome message

* Update platform.md

Add back in "-repo"

* Update Slack invite URL

* Update pr_comment.yml

Add note that PR previews take ~15 to deploy.

* BioStructures.jl paper citation

* Update mooc.md

added 2 new courses in Julia

* Update books.md

added a book

* Update tutorials.md

added a tutorial with instructions on how to access :)

* Add a blog post on precompilation (JuliaLang#1111)

* Add download links for v1.6.0-beta1 (JuliaLang#1116)

Including the return of Linux PowerPC

* Fix typo (JuliaLang#1117)

* Add link to the JuliaPackages project

Also add a space in the name of the "Julia Observer" project,
matching how the project presents itself.

* Update deploy.yml

Switch to main

* Update greet.yml

Update to main

* Industry Julia Users Contributhon follow-up blog post (JuliaLang#1119)

Co-authored-by: mattBrzezinski <matt.brzezinski@invenia.ca>
Co-authored-by: Nathan Daly <44379820+rai-nhdaly@users.noreply.github.com>

* Ammendment to 2021 Industry Users Contributhon

* Update index.md

* Update index.md

Fix initial library script

* Add files via upload

* Update index.md

* Delete orglogos.png

* Add image and fix path.

* Update slack.md

* Blogpost about Julia Arrow support

* Update books.md (JuliaLang#1127)

* Update alert to show JuliaCon registration

* Update books.md (JuliaLang#1130)

* Address review and add a bit more content

* Latency blog, installment JuliaLang#2: snoopi_deep and flamegraphs (JuliaLang#1120)

* Latency blog, installment JuliaLang#2: snoopi_deep and flamegraphs

Co-authored-by: Nathan Daly <NHDaly@gmail.com>

* Fix date on "profiling inference" blog post (JuliaLang#1131)

* A few wording improvements (JuliaLang#1132)

* Update arrow.md

* Update platform.md

Was helping someone debug installing on a Mac. They were a bit confused about the symlink step. Overall, I think we should just be as radically simple and to-the-point as possible here.

Also for uninstallation, can we just say to nuke `~/.julia`? For most users, it probably doesn't make sense to tell them to delete specific subdirectories within.

* Update platform.md

* Update platform.md

* Update platform.md

* [ImgBot] Optimize images

*Total -- 9,540.21kb -> 7,029.86kb (26.31%)

/_assets/infra/pluto_jl.svg -- 2.57kb -> 0.76kb (70.21%)
/_assets/images/juliaastro.svg -- 4.61kb -> 1.58kb (65.6%)
/_assets/blog/2020-invalidations/invalidation_backedge_analysis.png -- 23.86kb -> 9.10kb (61.86%)
/assets/blog/2021-latency/pprof-top-no-root.png -- 131.57kb -> 56.44kb (57.1%)
/_assets/blog/2018-04-01-tetris-and-you/green_tetris.gif -- 1,328.00kb -> 616.73kb (53.56%)
/_assets/blog/2020-05-02-rr/arch.svg -- 37.53kb -> 20.32kb (45.86%)
/assets/blog/2021-latency/pprof-flamegraph-full-1.png -- 58.07kb -> 31.92kb (45.04%)
/assets/blog/2021-latency/pprof-flamepgraph-no-root-highlight.png -- 90.67kb -> 53.74kb (40.73%)
/learning/assets/JA-3.png -- 912.74kb -> 545.63kb (40.22%)
/learning/assets/JA-2.png -- 372.21kb -> 251.43kb (32.45%)
/community/assets/orglogos.png -- 1,715.55kb -> 1,188.69kb (30.71%)
/_assets/blog/2020-08-10-JuliaCon/JuliaCon2020Sponsors.png -- 286.65kb -> 198.85kb (30.63%)
/_assets/images/juliaopt.svg -- 103.96kb -> 73.65kb (29.15%)
/learning/assets/JA-1.png -- 422.10kb -> 308.79kb (26.84%)
/_assets/images/el.png -- 2.66kb -> 2.05kb (22.87%)
/_assets/images/logo_yao.png -- 602.38kb -> 468.98kb (22.15%)
/_assets/blog/2020-invalidations/SIMD_ascend.png -- 45.68kb -> 35.59kb (22.09%)
/_assets/blog/2020-05-02-rr/data/overhead.svg -- 107.60kb -> 84.97kb (21.03%)
/_assets/blog/2020-invalidations/SIMD_invalidations.png -- 155.37kb -> 124.01kb (20.18%)
/_assets/images/juliacloud.svg -- 3.74kb -> 3.07kb (17.94%)
/learning/assets/books.png -- 385.99kb -> 320.84kb (16.88%)
/_assets/infra/emacs.png -- 13.15kb -> 11.06kb (15.87%)
/learning/assets/schools.png -- 615.75kb -> 523.30kb (15.01%)
/assets/blog/2021-latency/flamegraph-flatten-demo.png -- 12.03kb -> 11.14kb (7.37%)
/assets/blog/2021-latency/flamegraph-complex.png -- 12.10kb -> 11.27kb (6.88%)
/_assets/blog/2020-09-23-rr-memory/faulty-mem.jpg -- 187.18kb -> 175.98kb (5.99%)
/_assets/infra/logo.svg -- 6.81kb -> 6.69kb (1.84%)
/_assets/images/cartpole.gif -- 189.58kb -> 187.34kb (1.18%)
/_assets/infra/cartpole.gif -- 189.58kb -> 187.34kb (1.18%)
/_assets/infra/lorenz.gif -- 190.46kb -> 190.00kb (0.24%)
/_assets/images/lorenz.gif -- 190.46kb -> 190.00kb (0.24%)
/_assets/infra/edit_icon.svg -- 0.41kb -> 0.41kb (0.24%)
/_assets/images/onlinestats.gif -- 497.73kb -> 497.22kb (0.1%)
/_assets/infra/onlinestats.gif -- 497.73kb -> 497.22kb (0.1%)
/_assets/infra/backsplash-3.svg -- 35.49kb -> 35.48kb (0.02%)
/_assets/benchmarks/benchmarks.svg -- 34.04kb -> 34.04kb (0%)
/_assets/blog/2017-08-23-native-julia-implementations-of-iterative-solvers-for-numerical-linear-algebra/resnorm.svg -- 74.23kb -> 74.23kb (0%)

Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>

* Update Manifest.toml (JuliaLang#1136)

* Remove 'soc' directory

* added a potential project, put my name on more specific items

* clarify CCSA

* Add difficulty and project type for DFTK

* Update ideas under the RL Algorithms section

Update the ideas under the RL Algorithms section to meet new requirements.

* Update science.md

* Update projects.md

* Delete science.md

* Update flux.md

* Update tooling.md

* Added two time series projects for GSOC

* Update organizations.md

* added Pythia GSOC to website

* Update slack.md

* Set upcoming release to 1.6.0-rc1 (JuliaLang#1167)

* Add some projects, remove some. (JuliaLang#1164)

* Remove UCX topic from HPC GSoC

@vchuravy has already implemented functional UCX support

* Update Parquet.jl GSoC entry (JuliaLang#1168)

Re-word Parquet.jl GSoC entry focussing on Tables.jl/Arrow.jl integration for large/out-of-core data, performance and support for missing encodings.

* Add me as mentor for "Distributed Training" GSoC (JuliaLang#1170)

* add two publications and update packages links

* Update the Images GSOC projects

Closes JuliaLang#1148

Co-authored-by: Eric Hanson <5846501+ericphanson@users.noreply.github.com>
Co-authored-by: Logan Kilpatrick <23kilpatrick23@gmail.com>
Co-authored-by: Christopher Rackauckas <accounts@chrisrackauckas.com>
Co-authored-by: Viral B. Shah <ViralBShah@users.noreply.github.com>
Co-authored-by: Sascha Mann <git@mail.saschamann.eu>
Co-authored-by: tlienart <tlienart@me.com>
Co-authored-by: Alex Arslan <ararslan@comcast.net>
Co-authored-by: Keno Fischer <keno@juliacomputing.com>
Co-authored-by: vapid babble <vapidbabble@gmail.com>
Co-authored-by: wchoston <wchoston@users.noreply.github.com>
Co-authored-by: pseudocodenerd <shekharmadhav03@gmail.com>
Co-authored-by: James <jpfairbanks@gmail.com>
Co-authored-by: Mason Protter <mason.protter@icloud.com>
Co-authored-by: André Lage <prof.alage@gmail.com>
Co-authored-by: Valentin Martinez Gama <70444148+valenmgama@users.noreply.github.com>
Co-authored-by: Kim Laberinto <kim.laberinto@gmail.com>
Co-authored-by: Abel <abel.s.siqueira@gmail.com>
Co-authored-by: Avik Sengupta <avik@sengupta.net>
Co-authored-by: Frank Schaefer <frank.schaefer@unibas.ch>
Co-authored-by: Bogumił Kamiński <bkamins@sgh.waw.pl>
Co-authored-by: dinarior <dinari.or@gmail.com>
Co-authored-by: Dilum Aluthge <dilum@aluthge.com>
Co-authored-by: Thomas Ingram <taingram@mtu.edu>
Co-authored-by: Changhyun Kwon <chkwon@users.noreply.github.com>
Co-authored-by: Jun Tian <find_my_way@foxmail.com>
Co-authored-by: Jerry Ling <proton@jling.dev>
Co-authored-by: Henrique Ferrolho <henriqueferrolho@gmail.com>
Co-authored-by: Marie-Helene Burle <marie.burle@westgrid.ca>
Co-authored-by: Páll Haraldsson <Pall.Haraldsson@gmail.com>
Co-authored-by: Fredrik Ekre <ekrefredrik@gmail.com>
Co-authored-by: Diego A. Casas <35376194+dact221@users.noreply.github.com>
Co-authored-by: robbyriverside <3100924+robbyriverside@users.noreply.github.com>
Co-authored-by: Marcelo Forets <mforets@gmail.com>
Co-authored-by: Rachel Kurchin <rkurchin@cmu.edu>
Co-authored-by: Stefan Karpinski <stefan@karpinski.org>
Co-authored-by: MA Laforge <ma.laforge.49@gmail.com>
Co-authored-by: Paul Bayer <Paul.Bayer@gleichsam.de>
Co-authored-by: Johnny Chen <johnnychen94@hotmail.com>
Co-authored-by: Jacek <jpnski@protonmail.ch>
Co-authored-by: Dhairya Gandhi <dhairya@juliacopmuting.com>
Co-authored-by: Fons van der Plas <fonsvdplas@gmail.com>
Co-authored-by: Michael F. Herbst <info@michael-herbst.com>
Co-authored-by: KristofferC <kcarlsson89@gmail.com>
Co-authored-by: Thibaut Lienart <ltib@me.com>
Co-authored-by: Robin Deits <robin.deits@gmail.com>
Co-authored-by: Sukera <11753998+Seelengrab@users.noreply.github.com>
Co-authored-by: Rodolfo Carvajal <rodolfo.carvajal@gmail.com>
Co-authored-by: Mustafa M <mus-m@outlook.com>
Co-authored-by: Jason Nicholson <1058191+jasonnicholson@users.noreply.github.com>
Co-authored-by: Joe Greener <jgreener@hotmail.co.uk>
Co-authored-by: rajraomichigan <rajnrao@umich.edu>
Co-authored-by: Tim Holy <tim.holy@gmail.com>
Co-authored-by: Benoit Pasquier <4486578+briochemc@users.noreply.github.com>
Co-authored-by: Waldir Pimenta <waldyrious@gmail.com>
Co-authored-by: Jarrett Revels <jarrettrevels@gmail.com>
Co-authored-by: mattBrzezinski <matt.brzezinski@invenia.ca>
Co-authored-by: Nathan Daly <44379820+rai-nhdaly@users.noreply.github.com>
Co-authored-by: Jacob Quinn <quinn.jacobd@gmail.com>
Co-authored-by: azev77 <azev77@users.noreply.github.com>
Co-authored-by: Nathan Daly <NHDaly@gmail.com>
Co-authored-by: Travis DePrato <773453+travigd@users.noreply.github.com>
Co-authored-by: ImgBotApp <ImgBotHelp@gmail.com>
Co-authored-by: Ian Butterworth <i.r.butterworth@gmail.com>
Co-authored-by: Steven G. Johnson <stevenj@alum.mit.edu>
Co-authored-by: Sebastian Pfitzner <pfitzseb@gmail.com>
Co-authored-by: Andrii Babii <babii.andrii@gmail.com>
Co-authored-by: Julian Samaroo <jpsamaroo@jpsamaroo.me>
Co-authored-by: Tanmay Mohapatra <tanmaykm@gmail.com>
Co-authored-by: Marek Kaluba <kalmar@amu.edu.pl>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants