I wouldn't advocate shutting down fission plants with the expectation that they'd be replaced by fusion in the immediate future, obviously, but some of the non-ITER work might end up viable sooner than a lot of people expect.
313 karma · joined June 20, 2018
here's a twitter thing???? https://twitter.com/RossNordby
I wouldn't advocate shutting down fission plants with the expectation that they'd be replaced by fusion in the immediate future, obviously, but some of the non-ITER work might end up viable sooner than a lot of people expect.
https://www.youtube.com/watch?v=KkpqA8yG9T4
For example, take the DSM5 criteria for ASD, one type of neurodivergence. Here's just a single factor:
Deficits in nonverbal communicative behaviors used for social interaction, ranging, for example, from poorly integrated verbal and nonverbal communication; to abnormalities in eye contact and body language or deficits in understanding and use of gestures; to a total lack of facial expressions and nonverbal communication. (From https://www.cdc.gov/ncbddd/autism/hcp-dsm.html)
A formal diagnosis of ASD would involve a number of these factors. As you might imagine, if you stack enough things like that on a person, it'll tend to be noticed, even when they're trying to hide it.
In the context of being mean, upon being told that they were being a jerk, a person with ASD might think "ah shit, not again" or maybe "wait what, no I wasn't, it doesn't make sense that they'd be offended by that" or something along those lines. The nuances of the behavior and the motivations behind it will tend to be a little different than in a 'neurotypical' perceived as being a jerk.
It's definitely true that there is wide individual variance (modafinil does nothing but disrupt my sleep and make me more sleepy over time, alas), but it is less clear to me that the differences follow cleanly along boundaries like ADHD/not ADHD.
I don't have ADHD, but I am prescribed Ritalin to help with a sleep disorder. There's no high, euphoria, or hyperactivity, just a boost to wakefulness and general mental function. Descriptions of the effect from people with ADHD sound familiar, just starting from a different baseline.
Some early benefits:
1. Being free of linear transforms for projection allows it to use other projections for free, like stereographic fisheye. (You can also design the projection to map onto a VR headset's view without needing a warp shader, giving a better sampling distribution.)
2. Global acceleration structures with fast traversals and flexible intersection routines can make full resolution noise free soft shadows cheap.
3. All input and scene state is uploaded asynchronously; the GPU samples it right before rendering. Full input latency times can be as low as the monitor refresh time: https://twitter.com/RossNordby/status/1335351074069368832
I'm still trying out some permutations for the traversals (mostly different kinds of sharing traversal work) but all the prototypes are looking pretty promising.
In the long run, the plan is to push beyond hardware rasterizer limitations with high geometric density and avoid the zoo of problems associated with screenspace. Things like analytic approximations for antialiasing, transparency without endless pain, and eventually fully decoupling shading from screenspace and moving into other dynamically prefilterable spaces to open up some forms of supercheap global illumination. The end goal is high framerates, extremely high geometric density, extremely low latency, and very high image clarity (no screenspace temporal antialiasing!).
Going to be an on and off project for a least a couple of years more, but so far so good.
(Edit: reading my first post, it's definitely the case that I did not make the connection here explicit- the rejection isn't merely 'oh no I can't handle the TRUTH', but more like, 'ugh, these guys'. A big part of it is social in nature, stacked on top of the underlying problem of asking too much.)
A huge part of EA is driven by analysis of effectiveness. If I want to be effective, I have to figure out how to be effective. If someone provides a valuable insight on how to be more effective, it's not a rejection of my ethical outlook, but rather useful information.
I do think that the implied burden is still alienating in a sense and that's what motivated my post (the philosophy can just feel really bad in some ways when you get into the nitty gritty, and many people don't respond well to that), but you were clearly talking about a different kind of alienation.
A lot of EA messaging tries to work around this by trying to avoid guilt trips or demanding that you do everything you possibly can, since asking too much is a good way to end up with nothing. See Giving What We Can and similar.
But a lot of the justifications for this kind of approach can very easily imply a much higher bar than anyone can meet. Taking global health as an example- millions of preventable deaths a year, and if you work yourself to the bone for years, you can only hope to partially mitigate it.
Even if the messaging says, "hey, just do what you can sustainably and don't worry about being perfect, because that's way better than nothing," the logic behind it is based on nothing more than observations of actions and their consequences. There's not a specific threshold where your job is actually done, and 'failure' to meet the impossible bar generally means mass death.
For someone outside EA, it is very easy to go from that observation to "these people are telling me I am basically a mass murderer for not helping, and even if I help, I'll still in practice be a mass murderer because I'll help suboptimally, gee thanks."
Even if very few identifying with the EA community would endorse that phrasing or the implied moral judgment, I can see how people could end up feeling that way. Not sure what to do about it.
For example, in the case of #1, I usually separate 'frustration' from 'anger', but I could see someone else bundling them together. They share a lot of physiological effects, but I generally think of anger as a more focused and directed feeling. I could be frustrated while failing to debug something, but not meaningfully angry, because the bug is not an agent with malicious intent (or other common target of anger).
And for #2, I've known people who get mad and have an extremely hard time controlling it. Someone or something slights them, it ruins their mood, and then sustains. And they're aware of it the whole time, wishing they weren't mad, because they hate feeling that way. But they're still mad.
In comparison, I seem to be lucky. I have gotten genuinely mad before, but exceedingly rarely- maybe a few times in my entire life, and only then mostly in response to years of sustained bad behavior, and only when I was much younger. I wasn't trying to be a paragon of stoicism, I just don't get angry very often by default.
Stack a little bit of effort on top of a baseline like that, and it's pretty easy to go beyond merely not acting on anger to smoothing away even the subjective experience of it. Maybe a short and mild response, here and there, but it almost always immediately fades.
I strongly doubt I'm the most placid person in the world, so there are probably people out there who are even less angry by default. I bet others have put more effort into controlling their anger, too. It seems likely that "eradication" of anger is within the realm of possible for some.
In principle, you can push GPU pipelines to very low latencies. Continually uploading input and other state asynchronously and rendering from the most recent snapshot (with some interpolation or extrapolation as needed for smoothing out temporal jitter) can get you down to total application-induced latencies below 10ms. Even less with architectures that decouple shading and projection.
Doing this requires leaving the traditional 'CPU figures out what needs to be drawn and submits a bunch of draw calls' model, though. The GPU needs to have everything it needs to determine what to draw on its own. If using the usual graphics pipeline, that would mean all frustum/occlusion culling and draw command generation happens on the GPU, and the CPU simply submits indirect calls that tell the GPU "go draw whatever is in this other buffer that you put together".
This is something I'm working on at the moment, and the one downside is that other games that don't try to clamp down on latency now cause a subtle but continuous mild frustration.
There are still valuable things that can be learned from that kind of research, but the popular coverage really missed the mark by directly extrapolating from research in mice to human circadian rhythms.
I also suspect that starting at 11 AM-1 PM and going until 4-5 PM, despite being less overall time, would produce vastly better academic outcomes in high school just due to the average teenage circadian rhythm and the resulting zombification of current students. The noneducational duties of high school could be handled by letting students show up earlier as needed with breakfast/lunch provided- the structured classes would just start later.
Maybe give the early arrivers a place to take a nap while we're at it.
That's pretty frustrating to read. I was sleep deprived enough to sleep 15 hours a day on the weekends during high school, but actually going to bed before midnight still just resulted in staring at a dark ceiling for an hour.
Sleep hygiene is important, but at a certain point the circadian rhythm will put its foot down.
There's no doubt that GPUs have the flops/bandwidth advantage, and even all the overheads of adapting a physics engine to a GPU won't completely eliminate those advantages. If a company needed an absolute-maximum-performance backend simulation on computers they built to spec, it could definitely make sense.
But when you move into the realm of game client simulation, it's harder to justify the use of GPUs. Very, very few gamers have multiple GPUs, and the one GPU they do have is often already quite busy.
Ignoring all the nightmarish issues around driver bugs and vendor compatibility, it comes down a question of comparative advantage. GPUs are extremely good at graphics. They can also do a pretty darn good job at physics. Or sound path tracing. Or machine learning inference. Or any number of other high throughput workloads. There's a limited budget, and there's no reason to leave a beefy CPU idle. What task allocation gives you the most bang for the buck? Would your average gamer be okay with worse graphics, just because the GPU is needed to perform physics simulation in order to play the game? The answer will sometimes be yes, but it's something to be careful about.
Plus, especially with the latest surge in CPU performance and competition courtesy of AMD, CPUs can do a pretty darn good job of running physics simulations per dollar.
Of course, pathological cases can generate a ton of batches. Usually such implementations will use a final 'catchall' batch of some kind after N normal batches. That final batch can be handled sequentially or with a fully parallel jacobi-ish solver (which typically has worse convergence than PGS/SI, but it's usually not a problem in context).
Long term accumulating issues that become unrecoverable past a tipping point could be a source of extinction (e.g. extreme worst case climate change). Here, yes, exponential growth could hasten extinction in a world where people weren't trying to stop the catastrophe, but...
1. Empirically, we're not on an exponential curve or anything close to it. Many developed countries would be in population decline without immigration.
2. Generally, the best solution to problems of efficiency or long term threats is improved technology, not reducing population. In the concrete case of climate change, cutting emissions per capita by >50% is both achievable and clearly superior to the Thanos approach.
3. More people can produce a more interesting universe to live in. Imagine a solar system colonized with 10 trillion humans: provided we build the requisite efficient infrastructure to unfetter human creativity, we would have the capacity to produce over a thousand times as many isekai animes.
It's difficult to take a consistent position that holds both "I don't want to die early" and "I don't care if I die". It requires an arbitrary judgment on what constitutes 'enough' life.
Imagine a pill that gives you 10 years of good health and freedom from aging. No tricks, no evil genies, no monkey paws. It's completely free and universally available. It's not a one time offer. You can change your mind later as many times as you want. How many people would actually refuse that pill and choose to die at a 'natural' time?
Based on how much we spend on medicine, I'd guess very few, and that seems like a clear preference for being alive.
At the risk of repeating myself: imagine a world where everyone was ageless by default, and they started to experience issues like inequality or overpopulation. What would that world's top scientists come up with? Would it be "kill everyone above a certain age"? I doubt it, because that would be very silly, and anyone seriously suggesting it in that world would be considered obviously insane. There are a lot of better options that don't require mass early death; these problems aren't inevitable.
>there's always the heat death of the universe. There's no escape from reality closing, you'd probably have a difficult time sustaining biological life-forms long before the universe is dark and cold. I doubt it would be pleasant.
This has always struck me as a very, very odd argument. Assuming protons decay, we're talking ~10^37 years until physics starts getting in the way. That's 10^27 times longer than the age of the universe. An entity observing those timescales would have time to see entire solar systems grow, mature, and die a billion billion times over, without exhausting even a billionth of that duration. Sure, such an entity would run out of stars to observe, and biology would get tricky, but computation wouldn't cease, and fundamentally that's all that's needed for a rich existence. It's an eternity nested in an eternity nested in an eternity. And if protons don't decay...
It's not infinite, but as a human, the distinction is completely irrelevant. Whatever a human would become on those timescales can decide what it wants to do later- for now, I'd just like more than a measly 100 years. It's not like we're wishing on a monkey paw.
"Quantified self" style tracking usually isn't going to unlock amazing improvements in perfectly healthy people, where heuristics like 'if you're tired, try sleeping more' work well. But you might be able to squeeze out some benefit- 5% here, 5% there- that you might not have captured without automated assistance.
And if your baseline is way worse than where you could be, then the potential benefits of tool-assisted tracking could be larger, and many 'common sense' strategies just don't help (enough).
Sometimes information can be handy, even if all you're getting is an automated way of collecting information you already had access to.
1) Neural approximation of surface light scattering (learned BSDF approximations, in other words). Historically, real time BSDFs used in games have been statistical models that make quite a few simplifying assumptions. GGX and other modern BRDFs do an admirable job and get about 90% of the way there, but creating new surface models is very time consuming. You need a mostly-unique model for retroreflective cloth, another for faraway swaying grass, another for plastics, another for skin, and so on. It's doable (and much has been done), but the process is far from easy.
So, an attempt at a workaround: trace trillions of statistically modeled paths and use the resulting distributions to train a small network that can be baked into an efficient ALU-only shader representation. Results are promising so far: https://twitter.com/RossNordby/status/1241224996518838272
Added bonus: as a part of this process, you get a PDF/importance sampling network for ~free.
2) ML applied to physically simulated character animation. Lots of neat work in this field already- the recent motion matching -> RL balancing paper seems like a very promising path for reducing the size of RL's responsibility: https://montreal.ubisoft.com/en/drecon-data-driven-responsiv...
My own work is still in 'side project' territory and I haven't exactly caught up to SOTA (https://www.youtube.com/watch?v=Haz9o3lbJJQ), but there are a bunch of things I'm looking forward to trying. Different heuristics (muscular control delay, effort minimization, etc.), some variants of off policy learning, different exploration approaches, some low level architecture tweaks, and so on.
3) Gradually resurrecting and modernizing a bitrotted renderer from a few years ago (https://www.youtube.com/watch?v=mIax_ProQ8c) and expanding its functionality. Beyond just fixing the massive problems it has accumulated, I'd like to flesh out a full surface space rendering pipeline. All shading would be computed on the surfaces of objects (and, where appropriate, in volumes) rather than in screenspace, so temporal reprojection is made far easier and there's no geometric blurring. Final rasterization is extremely cheap (~1 texture sample read) and can be decoupled from shading, so with 144hz+ geometric rendering in combination with late latched camera input, you can get application contribution to display latency below 10ms pretty easily.
The surface space caches and decoupling also give you a path towards tons of other interesting approaches- surface space shadow maps, low resolution directional occlusion and global illumination caches, conetraceable prefiltered surface representations, and all sorts of cool stuff.
4) Continuing to improve the physics engine (https://github.com/bepu/bepuphysics2). It exited beta last year, but there is always more to do. Next target is the tree structure used by meshes and the broad phase. While it is more than an order of magnitude faster than v1's, it should be possible to extract more parallelism, eliminate the need for a separate cache optimizer step, and cut down the aggressiveness of the static tree refinement. Simulations with hundreds of thousands of sleeping or static objects could see some significant gains, among other things.
Was also considering training a network to compress in-memory solver data since, on manycore AVX2 capable systems, the solver is always memory bandwidth bound, but down that path may lie madness... maybe not everything needs to have DL thrown at it. Maybe.
On that front, one of the things I had to end up doing to ensure physical consistency was bite the bullet on a level of indirection. This can be flat out necessary on a gameplay level- allowing full 1:1 control often leads to pretty nasty pathologies and difficulty with correct physical responses. A truly physical character's motion can never truly match the input motion, since your controller is dramatically more nimble than even a light 2.5 pound longsword and the physical sword may be interfered with. This introduces some challenges on the side of user responsiveness and intuition, to be sure, but the physical motion also smooths out input and seems to make small scale controller imprecision a distant concern to the player. If the player can adapt to the physical indirection, they tend to allow a lot more leeway. This becomes even more valuable when trying to hide latency. If you have physically reasonable accelerations, networking overhead becomes a whole lot less objectionable.
There are definitely tradeoffs- the feeling of being a puppeteer takes some time to get used to.
You're both right! I'd point out four big categories of difficulty:
1) Physics. You need a swept collision test capable of handling very high linear and angular velocity of very thin shapes (a sword is not thick, and the tip can move pretty dang fast), and collision response capable of dealing with the results. This is doable- conservative advancement operating on distance functions will work- but working out all the details in a way that makes the final result fast is not easy. A speedy implementation alongside a speculative contact solver can work, though: https://www.youtube.com/watch?v=sfgC_eNx9M8#t=1m20s
2) User interface. A mouse and keyboard struggle to express all the degrees of freedom available to a physical handheld weapon. Swinging using the mouse works okay, but you need to do so in a way that doesn't interfere with camera control, and you need to be able to interrupt and redirect movements at any point, then add jabs, different guards, ... Expressing all of that in a single intuitive interface that doesn't require awkward mode switching is not easy. My prototype had an okay-ish approach, and I think it could still be improved further, but there's no way a mouse-keyboard user would be able to compete with someone of equal skill using VR hand controllers. There's a good reason why melee combat games are so much more common in VR.
3) Graphics. Single planar projections simply aren't enough for first person (especially outside of VR)- it feels like wearing blinders. Even third person doesn't help enough, and seeing your character gets in the way of seeing your weapon and opponent sometimes. Using a nonplanar projection like stereographic fisheye, it starts feeling okay around 160 degrees, though 200+ is nice once you adapt to the mild distortion it introduces. This requires a pretty different approach to rendering (like multiple subviews, direct projection raytracing, vertex warped rasterization, etc.). A couple of examples: https://www.youtube.com/watch?v=jQOJ3yCK8pI https://www.youtube.com/watch?v=mIax_ProQ8c#t=1m4s
4) Animation. While achieving a level of animation quality common in early 2000's titles is pretty easy- just have a set of poses for various weapon states to interpolate between, blend in some leg motion, shrug, done- achieving a very high animation quality bar is extremely difficult. Most modern AAA games use massive libraries of mocap data, and in some cases the animations directly drive motion to make everything grounded and solid. For Honor is a good example: https://www.youtube.com/watch?v=4pdcA3mhe0E. But in a game allowing total physical control with expectation of proper physical response to every interaction, the mocap coverage requirements explode. You can still do pretty well if you have enough data and put in a huge amount of effort, but at a certain point you start wishing the magical machine learning genie would swoop in and save you.
I think all of these things are solvable enough to permit the existence of a game, but they're hard enough that it's not surprising that they are still so rare.
Specifically, in both a physics engine solver and some machine learning backwards passes I was working on, there are areas where a little false sharing is likely. It's relatively uncommon and a negligible concern on the smaller Intel chips I tested on, but Zen cores will sometimes have to synchronize with another CCX's caches and it seems to come with a penalty vastly larger than naively expected latency or IF bandwidth.
A fully loaded 2950x ended up getting beat by a 1700x in the solver despite having virtually the same architecture, twice the memory bandwidth, and an observed clocks advantage. Cutting the used thread count down to the same as the 1700x helped a little, but it looked like Windows was scheduling the threads on as many CCXs as possible and it ended up still being slower.
On the upside, the 2950x blasts through friendlier workloads like collision detection and inference with perfectly reasonable scaling.
I'm hoping that the dramatic redesign in Zen 2's memory architecture (unified IO die and whatnot) will help things a little. If not, I'll probably have to rework some stuff.
I'll still need to keep some Intels around for VTune and optimizing deeply for AMD is going to be a chore... But given how the market is moving, I don't think I can avoid making AMD the primary development focus.
But they are not unsolvable problems, nor do they imply that aging is better than agelessness. They just imply we have to work harder, because again, the alternative is the death of everyone.
In an alternate Earth where humans never aged to begin with and society started stagnating (or worse) because of it, I doubt that the world's top minds would come up with 'kill literally everyone at X years of age' as their first option (or second, or third...). That would be comic book supervillainy.
These kinds of concerns aren't invalid, I just hope they are considered with a wide enough perspective. In terms of direct and indirect suffering, it's hard to do worse than aging.
For my purposes, CUDA isn't really an option due to needing to run simulations on both servers and unknown clients (ideally with a single codebase), but for other services that never leave the datacenter I'd definitely consider it.