HN user

Bimos

113 karma
Posts1
Comments83
View on HN

I'm super confused. In your example, ++i is equivalent to (i+1) and the loop updates i itself. But with the syntax in the blogpost, i is only initialized, and it is the ++i that updates the value?

They came up with a Chinese name for you :)

柯亦安 Ke Yi'an. The given name "亦安" roughly means "also safe", it is a beautiful name.

If you do not have a social credit score, you will have to prepay a small deposit of 80¥.

It is acceptable if you guys are meaning that thing when mentioning "social credit score"..

I'm not sure about whether this is a bottlenecking step in applications

In barrier method of solving linear programs, numeric factorization normally takes about 1/3 of the time of main loop (like after all symbolic/presolve steps).

That is, is there a (sparse) matrix representation which is used in gpu's?

We (COPT) did manage to write a gpu version of Cholesky factorization, and it's faster than our (pretty fast) cpu implementation. Although one can argue that the CPUs for benchmarking is not the fastest, or it is not as expensive as the GPUs.

Currently our barrier implementation is 67% faster on H200 than on i7-11700K [1]. Not all of the improvement contributes to Cholesky factorization.

Another GPU Cholesky factorization implementation we are aware of is CUDSS by nvidia.

And does it make sense to carry through the dag/tree construction as a sort of "prep" step (on cpu or gpu)?

For both CPU and GPU version, a symbolic phase is necessary, as we usually expect many factorizations on matrices with the same sparse pattern. CUDSS has (at least some part of) their symbolic phase on GPU.

[1] https://plato.asu.edu/ftp/lpfeas.html

a block of Rust threads that are properly programmed to take advantage of the vector processing by avoiding divergence

But the library is using a warp as a single thread

ASCII Clouds 6 months ago

Yeah, with all these colors, any single character should be enough.

I thought no guessing mode means the map is generated in such way that guessing is not needed to solve the whole board? (To those who didn't know the mode, it also forces you a starting point)

As an experiment, I tried clicking on a random position after clicking the starting point. And it is possible to that the position is safe. So I don't think the map in no guessing mode is dynamic.

Also in the help section: "In this mode, a starting position is provided, and you never need to guess to complete the board."

FFMA SASS interleaving

We observe a performance improvement in the CUTLASS FP8 kernel between NVCC 12.2 and 12.3. By comparing the compiled SASS, we discover that one bit in a series of FADD instructions is flipped in an interleaving pattern. After referencing some open-source CUDA assembler implementations, we identified that this bit controls yield, which may enhance warp-level parallelism (just a guess, yielding the current warp and let other warps work).

To leverage this, we develop a similar script to modify the FFMA instructions in the compiled binary. Besides simply modifying the yield bit, we also flip the reuse bit (registers cannot be reused if the warp is yielded). This adjustment improves performance (10%+ in some cases) for fine-grained scaling FP8 GEMMs by creating more opportunities to overlap MMA instructions with promotion FFMA instructions.

I would say it is really mind-blowing.

In Shanghai, the Huangpu River divides old and new.

Pudong is new, but Puxi is not "the old one". It is mixed with old historical sites and modern buildings. It lives with its history, and it grows actively. It doesn't have to destroy all the old stuff, but it also doesn't have to slow down its pace for them. I believe it is the same for any city (e.g. in Europe) with history.