dpzmick's comments

dpzmick | 4 years ago | on: Berkeley Lab Debuts Perlmutter, World’s Fastest AI Supercomputer

I believe there's a hint towards the end of the article:

> Note: Perlmutter’s “AI performance” is based on Nvidia’s half-precision numerical format (FP16 Tensor Core) with Nvidia’s sparsity feature enabled.

FP16 is a 16 bit floating point format. FLOPS for top 500 are measured with LINPACK HPL, which says it is over 64 bit floating point values (I think):

> HPL is a software package that solves a (random) dense linear system in double precision (64 bits) arithmetic on distributed-memory computers. It can thus be regarded as a portable as well as freely available implementation of the High Performance Computing Linpack Benchmark.

(from https://www.netlib.org/benchmark/hpl/)

This isn't totally disingenuous though. These FP16 operations are very useful for some kinds of calculations.

dpzmick | 5 years ago | on: Show HN: Conducto: Next-Gen CI/CD in Python, Not YAML

I'm another user of the predecessor to Conducto. We're using it to orchestrate very large regression test (usually ~40-50k independent processes run as part of the regression testing).

I also use conducto's predecessor to manage "data science" workflows (simlar to https://www.conducto.com/docs/advanced/data-science) on a large computer. It is miles ahead of the alternatives we've tried (and built).

The biggest win we've gotten with conducto comes from the composability. We can ship part of our application as a function which returns conducto nodes. Someone else can call this function an stick it into their own tree (code, not configuration!)

Our integration test suite builds a conducto tree ships containing test code from 4ish different libraries (developed by 2 different teams), each of which includes it's own tree-building functions. Likewise, we ship many of our applications for the large computer as functions which return conducto nodes. Users just call our functions and embed our portion of the workload into their own trees.

Give it a shot!

dpzmick | 6 years ago | on: Yoda conditions

I've been going with this style for things like reading files (with retries) or any sort of loop that feels awkward.

  while (1) {
    int ret = ...;
    if (ret == ...) break;
    if (ret == some_other_condition) break;
    // additional termination conditions....
    // do exactly one thing
  }

dpzmick | 6 years ago | on: Big O Notation – Using not-boring math to measure code’s efficiency

in C, it items[0] could segfault, the fault could be caught by a signal handler which does some unbounded amount of work, then populates the appropriate memory location and returns...

More realistically, the page of memory that items[0] is sitting on could be swapped to disk, requiring the OS to do some big operation.

trying to write a piece of code with the big-O you are looking for generally has a huge number of caveats. I'm undecided on whether this is a feature (abstraction) or a flaw (easily misleading)

dpzmick | 7 years ago | on: Why Love Generative Art?

Another option for interesting generative art would be generative music.

There's tons of opensource audio/music generation software (ChucK, supercollider/overtone, csound, vcvrack), and there's a fun (expensive) world of modular synthesizers lurking around the corner (euclidean rhythm generation is a common technique, many people use logic gates with random of sequenced high/low signals to create interesting patterns, random voltage generation is used for pitches, etc).

If you go super far down the rabbit hole, I've seen examples of people doing generative visual art with a modular synthesizer, modulating video loop parameters, or running oscilloscopes. Anything is possible!

dpzmick | 8 years ago | on: Outsmarting the compiler: Short story about optimization

Very little is done with these values in the fast path. The application in question is basically a smart proxy that performs a very minimal amount of formatting. Most of the code in the fast path is pretty linear so I was curious if there were any good way to keep this particular case conditional free.

But, you are right that it probably doesn't matter. The minimal benchmarking I did convinced us that there wouldn't be much of a cost. The code that actually ended up being committed to our project has the branch.

page 1