HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
chriselrod
ProbabilityModels.jl
Julia2019–2019
chriselrod / ProbabilityModels.jl

ProbabilityModels.jl

Probability models with `y ~ Normal(mu, sigma)` style syntax and reverse mode AD for gradients; WIP. Prioritizes runtime performance.

2Distinct people
2Mentions
0Explicit recommenders
20GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Probability models with `y ~ Normal(mu, sigma)` style syntax and reverse mode AD for gradients; WIP. Prioritizes runtime performance.

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:56:07 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by hour2 dated mentions

Observed mentions: 2019-07-21 13:26:41 UTC to 2019-07-22 10:27:51 UTC.

012019-07-21 13:00:00 UTC to 2019-07-21 14:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsJul 21, 13:002019-07-21 14:00:00 UTC to 2019-07-21 15:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2019-07-21 15:00:00 UTC to 2019-07-21 16:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2019-07-21 16:00:00 UTC to 2019-07-21 17:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2019-07-21 17:00:00 UTC to 2019-07-21 18:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2019-07-21 18:00:00 UTC to 2019-07-21 19:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2019-07-21 19:00:00 UTC to 2019-07-21 20:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2019-07-21 20:00:00 UTC to 2019-07-21 21:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2019-07-21 21:00:00 UTC to 2019-07-21 22:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2019-07-21 22:00:00 UTC to 2019-07-21 23:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2019-07-21 23:00:00 UTC to 2019-07-22 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 commentsJul 21, 23:002019-07-22 00:00:00 UTC to 2019-07-22 01:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2019-07-22 01:00:00 UTC to 2019-07-22 02:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2019-07-22 02:00:00 UTC to 2019-07-22 03:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2019-07-22 03:00:00 UTC to 2019-07-22 04:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2019-07-22 04:00:00 UTC to 2019-07-22 05:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2019-07-22 05:00:00 UTC to 2019-07-22 06:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2019-07-22 06:00:00 UTC to 2019-07-22 07:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2019-07-22 07:00:00 UTC to 2019-07-22 08:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2019-07-22 08:00:00 UTC to 2019-07-22 09:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2019-07-22 09:00:00 UTC to 2019-07-22 10:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2019-07-22 10:00:00 UTC to 2019-07-22 11:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsJul 22, 10:00

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
Jul 21, 13:002019-07-21 13:00:00 UTC2019-07-21 14:00:00 UTC101
Jul 21, 14:002019-07-21 14:00:00 UTC2019-07-21 15:00:00 UTC000
Jul 21, 15:002019-07-21 15:00:00 UTC2019-07-21 16:00:00 UTC000
Jul 21, 16:002019-07-21 16:00:00 UTC2019-07-21 17:00:00 UTC000
Jul 21, 17:002019-07-21 17:00:00 UTC2019-07-21 18:00:00 UTC000
Jul 21, 18:002019-07-21 18:00:00 UTC2019-07-21 19:00:00 UTC000
Jul 21, 19:002019-07-21 19:00:00 UTC2019-07-21 20:00:00 UTC000
Jul 21, 20:002019-07-21 20:00:00 UTC2019-07-21 21:00:00 UTC000
Jul 21, 21:002019-07-21 21:00:00 UTC2019-07-21 22:00:00 UTC000
Jul 21, 22:002019-07-21 22:00:00 UTC2019-07-21 23:00:00 UTC000
Jul 21, 23:002019-07-21 23:00:00 UTC2019-07-22 00:00:00 UTC000
Jul 22, 00:002019-07-22 00:00:00 UTC2019-07-22 01:00:00 UTC000
Jul 22, 01:002019-07-22 01:00:00 UTC2019-07-22 02:00:00 UTC000
Jul 22, 02:002019-07-22 02:00:00 UTC2019-07-22 03:00:00 UTC000
Jul 22, 03:002019-07-22 03:00:00 UTC2019-07-22 04:00:00 UTC000
Jul 22, 04:002019-07-22 04:00:00 UTC2019-07-22 05:00:00 UTC000
Jul 22, 05:002019-07-22 05:00:00 UTC2019-07-22 06:00:00 UTC000
Jul 22, 06:002019-07-22 06:00:00 UTC2019-07-22 07:00:00 UTC000
Jul 22, 07:002019-07-22 07:00:00 UTC2019-07-22 08:00:00 UTC000
Jul 22, 08:002019-07-22 08:00:00 UTC2019-07-22 09:00:00 UTC000
Jul 22, 09:002019-07-22 09:00:00 UTC2019-07-22 10:00:00 UTC000
Jul 22, 10:002019-07-22 10:00:00 UTC2019-07-22 11:00:00 UTC101

What Hacker News says

2 sources
> here is the github: https://github.com/chriselrod/ProbabilityModels.jl. In the example I give there, the logdensity and gradient evaluation was about 25x faster than Stan, and sampling was about 20x faster. that looks pretty cool, though I don't yet know enough Julia to understand all of it. The speedups make sense given that Stan's compiler/math lib doesn't do much in the way of smart data layout. I would still keep in mind that the metric worth using for benchmarking is the number of effective samples per second, and this also depends on the HMC variant you use. > Eigen's fixed size arrays to get about 3-8x worse performance than my Julia library seems unsurprising that Julia can specialize a lot better than verbose C++ templating, no? (still, good job, very worth checking out) > I was getting errors when specifying -DEIGEN_ENABLE_A
Read the rest
VX512 I used this flag with Eigen 3.3.1, I think, on GCC 6 or 7. This was for Xeon Phi, so I tried to use icc but despite supporting C++11 it doesn't handle Stan or Eigen's template metaprogramming. This is all the more reason to use Julia, but my graduate student days are long past..
In Intel Prepares to Graft Google’s Bfloat16 onto Processors
I've been using Julia. I've been working on a front end meant to help specify vectorized models and their gradients. It is alpha-quality software (far from production ready), but here is the github: https://github.com/chriselrod/ProbabilityModels.jl In the example I give there, the logdensity and gradient evaluation was about 25x faster than Stan, and sampling was about 20x faster. A simulation fitting many data sets for my dissertation took about 9 hours. 20x is the difference between running overnight, and taking a week. If I understand correctly, one problem Stan has is that it uses a var datatype for its arrays, which interleaves the values (Scalar) with pointers (vi_). https://github.com/stan-dev/math/blob/master/stan/math/rev/c... This interleaving is going to cause problems to an autovectorizer. To get a SIMD vector of the scalars,
Read the rest
you'd probably have to load two vectors, and then blend them. Even with arrays of doubles, I found Eigen's fixed size arrays to get about 3-8x worse performance than my Julia library (3-8x worse than my Julia library for Mx32 * 32xN, for combinations of M and N = (3,...,32) ): https://bayeswatch.org/2019/06/06/small-matrix-multiplicatio... I compiled the Eigen benchmarks with: g++ -O3 -fno-signed-zeros -fno-trapping-math -fassociative-math -march=native -mprefer-vector-width=512 -shared -fPIC -I/usr/include/eigen3 eigen_mul.cpp -o libeigenmul.so How did you tell Eigen to use avx512? At the time, I was getting errors when specifying -DEIGEN_ENABLE_AVX512. http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1705
In Intel Prepares to Graft Google’s Bfloat16 onto Processors

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.