the difference between current AMD and Nvidia GPUs isn't even that large if viewed from price/performance ratio...
Comparing cards at similar price has AMD having slightly less performance while having significantly more GDDR memory.
i still use an RTX3080 though, thankfully got one before the current craze started
The difference between AMD and Nvidia is _huge_ when you look at software support and drivers and etc. Part of this is network effects and part of it is just AMD itself. But the hard reality is I'd never buy AMD for compute, even if in specs it were better.
Just as a random anecdote, I grabbed an AMD 5700xt around when those came out (for gaming). Since I had it sitting around between gaming sessions, I figured I'd try to use it for some compute, for Go AI training. For _1.5 years_ there existed a showstopping bug with this, it just could not function for all of that time. They _still_ do not support this card in their ROCm library platform last I checked. The focus and support from AMD is just not there.
Also Intel. Being Nvidia-only is not very good from an accessibility point-of-view. It means that only ML researchers and about 60% of gamers can run this.
No they don't. Also optix isn't a renderer, it just traces rays and runs shaders on the ray hits on nvidia cards. Memory limitations and immature renderers hinder gpu rendering. The makers of gpu renderers want you to think it's what most companies use, but it is not.
Also Hollywood is a city and most computer animation is not done there. The big movie studios aren't even in Hollywood except for paramount.
Octane is exactly the type of thing I'm talking about. This is not what film is rendered with. It is mostly combinations of PRman, Arnold or proprietary renderers, all software.
I don't know where you are getting "nvidia hate", studios that use linux usually use nvidia, mostly because of the drivers.
None of this changes that optix is not a renderer.
OpenCL is sadly stagnant. Vulkan is a good choice but not itself portable. There are frameworks such as wgpu that run compute shaders (among other things) portably across a range of GPU hardware.
In what way is Vulkan not portable? It runs on all operating systems (Windows 7+, Linux, Android, and Apple via MoltenVK) and all GPUs (AMD GCN, nVidia Kepler, Intel), and shaders (compute and rendering) are to my knowledge standardized in the portable SPIR-V bytecode.
WGPU is more portable, since it can use not only Vulkan but also other APIs like OpenGL and Direct3D 11, but Vulkan is already very highly portable for almost everyone with a computer modern enough to run anything related to GPU compute.
It's kinda portable, but I've had not-great experiences with MoltenVK - piet-gpu doesn't work on it, for reasons I haven't dug into. It may be practical for some people to write Vulkan-only code.
You basically complain about Vulkan not being portable enough because Apple made their ownTM Vulken-like API instead of actually supporting Vulkan. And some other people made a subset of Vulkan working on top of that.
Why don't you complain about Apple not supporting Vulkan instead?
Vulkan is supported on basically all modern platforms except for Apple operating systems, Apple refuses to support open graphics APIs on their platform and there's nothing anyone can do about it - this isn't a Vulkan problem. Even OpenGL is deprecated and support hasn't been updated for years, and that's basically the most open graphics API in existence.
Nowaday I think it would be SYCL. It use the same kind of "same source" API that CUDA propose and is portable. Technically it can even use a CUDA backend.
I've written a lot of software against GPUs, albiet some years back. The main challenge was that many of the best libraries had CUDA support (or CuDNN support on top) but not support for other GPU lines' frameworks.
Getting CUDA to work well is hard. Not hard on your laptop, not hard on a particular machine but hard to work everywhere when you dont know the target environment beforehand -- there are different OSs, different OS versions, different versions of CUDA, different cards with different capabilities. But we did get it to work fairly widely across client machines.
The same effort needs to be put into getting things to work for other manufacturers, except a layer deeper since now you're not even standardized on CUDA. Many companies just dont make the investment. Our startup didn't, because we wouldn't find people who could make it work cost effectively.
What I really wish is that the other manufacturers would themselves test popular frameworks against a matrix of cards under different operating systems and versions. We see some of that, for example, with the effort of getting TensorFlow to run on Apple's m1 and metal. I just dont see a random startup (e.g., mine w/ 12 employees) being able to achieve this.
For example, if I know from the manufacturer that I could get TensorFlow X to work on GPU Y on {Centos N, Ubuntu 18/20}, I would gladly expand support to those GPUs. But sometimes you dont know if it is even possible and you spin your wheels for days or weeks -- and if the marketshare for the card is limited, the business justification for the effort is hard to make. The manufacturers can address this issue.
Nvidia docker runtime has been more recent. There were some issues with k8s usage and Nvidia docker runtime -- you couldnt use a non-integer number of allocations (e.g., cant split allocation of a GPU).
That said, NVIDIA Docker Runtime is awesome now -- however, all this underscores further how much further behind the non-NVIDIA stack is!
OpenCL feels pretty stagnant. Showstopping bugs staying open for years. Card support is incredibly spotty. Feature support isn't even near parity with CUDA.
This despite v3.0 being released just last year... And completely breaking the API.
OpenCL certainly has the potential to be a universal API but support for it is surprisingly spotty given its age.
For proprietary implementations, Intel appears to have the broadest and most consistent support. Nvidia skipped OpenCL 2.x for some technical reason (IIUC). AMD is a complete mess, for some reason not bothering (!!!) to roll out ROCm support for their two most recent generations of consumer GPUs.
In open source "Linux only" land, Mesa mostly supports OpenCL 1.2 (https://mesamatrix.net/#OpenCL) at this point. So if you're targeting Linux specifically then that's something at least.
Good luck shipping an actual product using OpenCL that will "just work" across a wide variety of hardware and driver versions. POCL and CLVK are both experimental but might manage this "some day". In the mean time, resign yourself to writing Vulkan compute shaders. (Then realize that even those will only run on Apple devices via MoltenVK, and despair at the state of GPGPU standardization efforts.)
Technically it is entirely viable. Vulkan/OpenGL compute shaders offer more or less a 1:1 equivalent to every CUDA features.
It is more of an usability issue. CUDA has been design to be a GPGPU API from the get go and, therefor, tend to be "easier" to use. OpenCL could have been a better replacement, but the API was really not on par with CUDA when it comes to usability. SYCL looks like finally a good answer by the Khronos group but it is so late. You already have a lot of people who know how to use CUDA, a lot of learning resources, etc ...
Many organizations writing GPU-compliant software are not actually "writing CUDA" but they are either using key libraries which area using CUDA (e.g., TensorFlow) or it is a layer deeper (e.g., I use a deep learning library, the deep learning library using CuDNN, CuDNN uses CUDA.)
Other orgs are using something written in another language that compiles into CUDA.
Either way, to replace CUDA, that middle component needs to be replaced by someone and ideally it should be the card manufacturers themselves (IMHO.) I cant imagine any small/medium organization having sufficient engineering time to write the middle component and keep them up to date with the slew of new GPUs, OS updates, or new GPU features -- unless it is their core business.
A simple artifical life / cellular automaton framework would be a great demo for portable compute shaders. I'm looking at this as a potential starting point in my compute-shader-101 project. If someone is interested in coding something up, please get in touch.
Yeah, that looks like probably the most promising stack for the future, but there are certainly rough edges today. See [8] for a possible starting point (a pull into that repo or a link to your own would both be fine here).
I don't think you could really call this a cellular automata, as that's defined by the cellular-neighbourhood-processing update rule. To put it another way, this looks like a 'vector' simulation (or automata) compared to GoL's 'raster' update.
There are certainly a lot of other fascinating cellar automata though! Even within 2-state-2d-totalistic (the class GoL is from) there's loads to see and lots of surprises! Well worth exploring! (there's an app called 'golly' that's good for that, and it's cousin 'ready' does related (also 'raster') 'reaction-diffusion' simulations.)
There is an old artificial life simulator (darwinbots http://wiki.darwinbots.com/w/Main_Page ) that is inspired by grobots-like programming games. Each organism is driven by its own code that can mutate randomly at each reproduction.
I've been trying to produce a web version of it. This is where I got so far (before more or less desisting):
Then there's Core War from 1984 [1]. 11 years ago I computationally evolved a warrior (a program competing for virtual resources) and submitted it to the nano hill [2], it's still ranked top 20 to this day. Every few months the hill emails me the stats of someone trying to beat us with a new warrior :)
This is amazing. My question is whether there are emergent structures in a long-running sandbox environment? The videos that were posted appeared to have quite complex structures but it was unclear whether they were designed or if they "evolved" from earlier more-basic structures. Would be curious to get the author's take.
One of the YouTube videos claims that they are self-replicating structures that were "evolved" in another simulation. So possibly the appearance of being designed comes from the fact that they were selected from the best of whatever was produced by that other simulation and placed together for a video.
Not a biologist but I understand that isolation is an important factor of diversity and by default, this simulation wouldn't have that. So it makes sense to evolve in different areas and put them back into the same area.
Have you ever seen http://boxcar2d.com/? It requires Flash so it probably doesn't work anymore, but it used genetic algorithms to "design" a 2d car to travel over bumpy terrain.
I wrote a (much less fancy) cellular automata program I called "evol" [0]. It simulates organisms on a flat grid. They have opcodes which are randomly permutated from time to time. If they can collect enough energy, they split; if they lose too much, they die. Having more opcodes costs more energy. There is no hinting or designing; everything starts with a simple "MOVE_RANDOM".
If you leave the program running long enough, they do actually evolve different behavior. Specifically, they will learn to recognize that there are other lifeforms in a direction and then move the opposite direction, reducing competition over the fixed amount of energy in a cell. You can actually see the population density rise when this happens. Since the grid wraps, you will generally get them "flowing" in one direction, cooperatively.
The world is simple and boring and it doesn't have graphics. Also, since the naive "Dna"/opcodes I chose use branching and random number generation, it's very slow and can't be simulated on a GPU.
Fun project nevertheless. The last few months, I've been slowly rewriting it in Rust and adding more stuff like terrain height. Haven't published the Rust version yet as it's incomplete—got hung up on the poor state of its terminal libraries.
Very cool. Interesting to hear that they actually managed to evolve. Would be curious to see what happens when they can eat each-other. Though I recognize that might be significantly more complicated
A lot of physics seems unnecessarily expensive to compute. Quantum mechanics suggest we either have nonlocality or exponential blowup, both of which cause simulation challenges. With just classical physics you don’t need to deal with that.
On the other hand, there are a lot of things that make physics tractable to compute, such as the +++- metric tensor and other factors forbidding causality violations. A universe with closed timelike curves becomes very expensive to compute because you usually have to use implicit solvers that are slow and might not even converge, corresponding to various time travel paradoxes.
Everyone saying it would be computationally expensive to simulate our universe is failing to put their mind outside of the box of our universe. Imagine for a moment that there's a universe which compares to our universe similarly to how our world compares to one inside of Conway's Game of life.
Granted, this scenario doesn't provide us with anything we can take action on, but the idea that we're in a simulation at all doesn't, either.
So you only have to assume physics totally different from ours, and we can’t observe it. Isn’t that a bit of a weak point? And what would be the point of this simulation that has been running for billions of years?
>you only have to assume physics totally different from ours
You don't have to assume anything is true if you don't want to, but if you want to consider whether we're living in a simulation, it's probably worth considering.
>And what would be the point of this simulation that has been running for billions of years?
First, it's billions of years in our time. Second, what's the point of Conway's Game of Life?
> You don't have to assume anything is true if you don't want to, but if you want to consider whether we're living in a simulation, it's probably worth considering.
Which, for me, is a dead end. It's the same as assuming there's a God, except the moral implications are worse.
> First, it's billions of years in our time.
So, if billions of years of our time fly by like your average simulation run in "their" universe, the simulation can't be very meaningful to them. And it makes the distance between our and "their" physics even larger.
> what's the point of Conway's Game of Life?
None, and that's why nobody runs one with 10^120 cells for billions of years. And if somebody did, the result would be incomprehensible. The gap between us and our creators must then be incomprehensible for us. All this is so outlandish, that the word "likely" shouldn't be anywhere near this discussion.
> And what would be the point of this simulation that has been running for billions of years?
There is zero evidence for or against the simulation hypothesis, so why would some random person on HN be able to have the answer to this question even if we are in a simulation or even if we simply assume that we are?
Some self-replicating "creature" in Conway's Game of Life could rowhammer the machine it runs in such that the creature (or a copy of it) now exists outside the Game and is able to replicate across the machine and maybe even across the network. If it takes control of a robot, you could argue it's "escaped" its simulation and now exists in our physical world.
The odds of all that happening without it being prevented are all but zero.
We have a better chance that one of the simulators grows attached and—against protocol—decides to uplift us from the simulation into a form where we can directly communicate with them.
Even if it's easy, simple simulations would still dominate the space of all possible simulations if the resources of the simulators are finite. So simpler simulations are more likely. (https://osf.io/ca8se , disclaimer I'm the author)
The physics of the simulator would have to be totally different to support a simulation with exponential computational costs. You probably couldn’t have anything like conservation of energy. Polynomial overhead would feel much more plausible.
Consider the physics of the simulator is literally the physics of our current universe. It need not be running on a binary substrate, the computation platform could just be the mass of the universe over time.
> A lot of physics seems unnecessarily expensive to compute.
When you make a simple simulation of rigid bodies with classical physics you often get numerically unstable results - bodies jerking against each other, slowly passing through, etc. One common way to solve this is to introduce a "frozen" state. When objects are close enough to be at rest with balanced forces - you mark them as frozen and don't compute them every frame to save computing power. You only unfreeze them when some other unfrozen object interacts with them.
Additionally hierarchical space indexing algorithms are often used to avoid n^2 comparisons calculating what interacts and what doesn't. And these algorithms often use heuristics and hashing functions with collisions to subdivide the problem, which might result in objects becoming unfrozen without actually touching each other.
The result from inside this simulation would be weird, nonlinear, nonlocal and look a little like wave function collapse (if particle A whose coordinates hashed through this weird function are the same as those of particle B happens to unfreeze - the particle B unfreezes as well despite not interacting in any way). And this would be probably considered "hard to compute" compared to the simple equations the system developer wanted to simulate.
Example that might be more relatable for scientists - it's much easier and cheaper computationally to make a numerical simulation for 3-body problem than to make an analytic simulation of it. But describing this numerical simulation behavior in terms of physical equations requires much more complex model than the equations that you wanted to compute in the first place. You have to include implementation details like floating point accuracy, overflows, etc. And if you go far enough you have to add the possibility of space ray hitting a memory cell in the computer that runs your simulation.
I'm not saying this is the reason QM is weird - I don't understand QM well enough to form valid hypotheses ;), but I'm saying we might be mistaking the intention of The Developer with the compromises (s)he made to get there. If you take any imperfect implementation of a simple model and treat it as perfect - the model becomes much more complex.
Nope, long distance entanglement collapse breaks this. You either need exponential blowup to simulate all possible eigenvalues or you need superluminal coordination.
There isn’t actually an observed/unobserved distinction in physics. Unless you mean the simulation is specifically targeting humans, which is a vastly more complicated proposal.
> Unless you mean the simulation is specifically targeting humans, which is a vastly more complicated proposal.
It's also the most likely proposal (with current understanding of universe).
Axis of Evil (Cosmology) calls into question the Copernicus views of the universe. Essentially saying our solar system is somehow back at the center of the universe.
If WE are the subject of the simulation, it's likely everything our instruments observe are like the sky on the Truman show - not there, just phantoms of what we would expect to be there with what the simulation wants us to know about physics.
There's a max speed the speed of light, what if this is the max processing ability of the computer we're running on. What if we're not on a computer at all but some sort of wetware computer system that grows as it needs to, and never runs out of resources?
What if the speed of light in the parent sim is 500x bigger for them, or ours is like a centimeter in comparison.
A dream is a simulation, we could all be dream creatures to some huge extra-dimensional being. Not everything pre-supposes human technology.
I've seen literal "glitches" in reality, so it's pretty easy for me to believe that reality isn't something completely set in stone. For others it challenges everything they believe in, for that I say open your mind.
Donald Hoffman believes that what we see is like what someone in a VR headset sees, outside the VR headset who knows what that world is like, but in this one -- everything except math (which he believes is universal and extra-universal), is made to fit this universe. Physics, science, all of it is unique only inside the headset. There could be many headsets with different settings running parallel (parallel worlds/universes), maybe the speed of light is faster in one than the other, maybe gravity works different, etc... So many things in our understanding are really like "settings" like size of a planck's constant, pie, speed of light, etc. Almost reads like a config file.
I mean if you buy into a "God" being, if computing is a thing which we have it so why wouldn't God? Wouldn't it even make more sense for him to just code up a simulation? I mean it's gotta be a lot less demanding than building a whole universe from nothing.
Running an ai simulation on an 8 bit nintendo is going to be a lot more complicated, and difficult than running one on a 512^e38 bit (pulled out of ass) 100kth gen Radeon GPU that won't be developed for 1000 years from now...
In a universe where time itself could be fluid, where it could be easy to reverse events, rewrite events, etc - making quantum computers work even way better than we ever could because we're limited by causality.
I mean the people beyond this universe could have 50 senses, like a sense of how far up or down they are, or how much water they can breathe in before they need oxygen if o2 is even a thing, or a sense of time so they can go back/forward through time. If they have 50 senses, our 5 sounds like "nothing" to simulate.
It's all a matter of perspective, I'm sure an ant feels like they keep pretty busy and nothing could possibly simulate their colonies, but I'm sure that would be pretty easy.
Yes, any evidence of complexity (assuming that simpler universes are more likely) is evidence against the simulation hypothesis: The Simplicity Assumption and Some Implications of the Simulation Argument for our Civilization
https://osf.io/ca8se
(I'm the author :) )
complexity and simplicity seems pretty biased to human understanding?
Just as a thought experiment, I'd propose that our universe and the human experience is incredibly simple. Humans were only given a limited number of senses so that the simulation can be run in this "low fidelity". Compared to the thousands of senses a level or two up. We also are simulated in a simple linear time model, only able to experience a single time at once, greatly reducing the complexity and fidelity needed. Same for the number of dimensions we are able to sense.
Yes, you need to remain inside the reference class of human simulations, so in a sense there is a bias in where do you want to draw the line of what's a human simulation. But once you do it, the result in not ambiguous.
Not really. If we're in a simulation that just begs the question - what is the "real" universe that the simulation is running in. It pushes the question of the nature of our universe up a level where we have zero visibility. No more satisfying that "where was god before he created the universe?"
The mathematical universe sidesteps this problem. If there is a concise and complete model of the universe, that is sufficient for it to exist. A simulation might also be considered a mathematical model, and it would exist in the same way even if nothing ever runs the simulation. So I guess maybe it could be a simulation, but we mustn't ask what it runs on, but what is the program?
If the universe will never leak any information about its origins, then those origins cannot affect us in any way, ever. This doesn't make any such hypothesis less likely, but it makes them irrelevant to us.
If we are in a simulation and this simulation obeys similar constraints to our computational models, we can test hypotheses on the basis of information theory. Or possibly find error-correction codes encoded in string theory as some quantum physicists have suggested.
> The mathematical universe sidesteps this problem. If there is a concise and complete model of the universe, that is sufficient for it to exist.
This then leads to how does math exist instead of nothing? Math is a concept, and if concepts exist then that is not "nothing".
Many people confuse "nothing" with the vacuum of space and particles appearing out of nowhere. In this case, we have something (space, vacuums, and particles), not nothing.
Does science fiction exists? Or Pokemon? In case your view is that they don't, you may argue similarly that math is a human made construct (which happen to work well to describe our universe, but it may be just survivorship bias as we use in physics only the math that works. For instance we discard imaginary solutions to classical motion equations).
I do believe it is the right view, math is a man made "language" inspired by physics which is more fundamental.
Because nothing is precisely what does exist.
But nothing implies something, so my working theory is that nothing's implied opposite something is itself the first thing, then some cellular automata like progression results from similar logical self-reference and down the line our physics (and the entirety of every logical permutation of information n-dimensionally) results from that.
A similar conception I've heard is that its like something and nothing, at the beginning of time, made a bet whether there'd be something or nothing, but the act of making the bet was already something, rigging it in something's favor. Nothing thought that was bullshit and tried to call it so, and they've been battling it out ever since.
Put another way, nothing has absolutely no properties - including the property of being nothing, or empty. If an empty nothing lacks the property of being empty, or nothing, then something must arise.
I'm working on writing a paper along those lines. I do believe that the answer to "why there is something rather than nothing?" may be: actually nothing is the only thing that exist, but its instability creates our apparent reality trough a self-referential observer-observed reality loop. I would love to chat, use my research email.
It is actually possible :) (with some assumption on the distribution of the simulations)
Complex sims are less likely, so the likelihood of increasing optional complexity of our sim should be slim, for instance interstellar travel. It's still unsolved how much unlikely, but if you have a large enough increase in complexity (say interstellar travel over billions of light years) you will hit sims which are unlikely enough.
>The Autoverse is an artificial life simulator based on a cellular automaton complex enough to represent the substratum of an artificial chemistry. It is deterministic, internally consistent and vaguely resembles real chemistry. Tiny environments, simulated in the Autoverse and filled with populations of a simple, designed lifeform, Autobacterium lamberti, are maintained by a community of enthusiasts obsessed with getting A. lamberti to evolve, something the Autoverse chemistry seems to make extremely difficult.
He is, but sometimes I go cross-eyed reading his books. He likes to explore some crazy topics, which makes for great reading but sometimes confusing reading too.
Pick up Axiomatic, try the first story (The Infinite Assassin) and see if it grabs you. It's got the best parts of something like Snow Crash, which drops you in without much exposition, and lets the visuals/action lead. Learning to Be Me from the same collection really stood out to me, it's a unique take on the "uploading your consciousness" trope.
For folks who like this sort of thing, I will once again make my monthly plug for folks to check out "The Evolution of Cooperation", by Robert Axelrod.
Also, "The Selfish Gene". Super fun read. Also, there are a bunch of really interesting videos made to demonstrate concepts like the evolution of altruism on youtube: https://www.youtube.com/watch?v=goePYJ74Ydg
Bought it now! I really likes Steven Levy's "Artificial Life" as a light introduction to this world. Sadly, the book isn't too far out of date despite being 30 years old now.
Same problem with my 1070ti (also Pascal architecture). When first started can pan, zoom, edit, etc. But, as soon as Run is hit, rendering completely breaks: scroll bars indicate zoom is working, but display never updates. In addition, program hangs on exit (one CPU is pegged at 100%).
Have updated to current CUDA (11.3.1) and current NVidia driver (466.77) with no luck.
I think you need to read the first few chapters of After Virtue to appreciate the concept behind creating things for people to enjoy directly; it's a form of art, essentially reducing the overgrown calculator known as a "computer" to a beautiful vase holding a flower arrangement.
This is a sort of test playground for marketing, brands, and so on since the programs occupy a no man's land between games, academic research, toys, entertainment, and programming.
It also satisfies the self-feeding dogfood condition: similar to games such as RoboWar, it is difficult to resist the temptation to experiment at the simulation level, a phenomenon that could be described as the MFTL effect.
Definitely going to play around with this. I'd love to see examples where you have a ton of at first non-usable energy spread out in the world, with some "hot spot" of energy in a corner with some setup allowing for evolving mechanisms. Seeing mechanisms form that are able to utilize the spread-out energy would be really fascinating.
He was a professor of mine in grad school, he also did visual effects for The Last Starfighter, and the early work on character recognition in the Apple Newton. Cool dude.
Yes, cool dude indeed! Glad you mention him, I was thinking of him when I saw this article. He visited the group where I was doing my PhD many years ago and also gave a fantastic talk on evolution, learning, and artificial life -- I was quite impressed. He has some cool stuff in his website too (http://shinyverse.org/larryy/).
Continuing the thread of other individuals who've done interesting work in this area, I've always been a huge fan of Jeffrey Ventrella's "Gene Pool": http://www.swimbots.com/genepool/
216 comments
[ 3.1 ms ] story [ 250 ms ] threadi still use an RTX3080 though, thankfully got one before the current craze started
Just as a random anecdote, I grabbed an AMD 5700xt around when those came out (for gaming). Since I had it sitting around between gaming sessions, I figured I'd try to use it for some compute, for Go AI training. For _1.5 years_ there existed a showstopping bug with this, it just could not function for all of that time. They _still_ do not support this card in their ROCm library platform last I checked. The focus and support from AMD is just not there.
Also Hollywood is a city and most computer animation is not done there. The big movie studios aren't even in Hollywood except for paramount.
https://home.otoy.com/render/octane-render/
As for the rest of the comment, usual Nvidia hate.
I don't know where you are getting "nvidia hate", studios that use linux usually use nvidia, mostly because of the drivers.
None of this changes that optix is not a renderer.
WGPU is more portable, since it can use not only Vulkan but also other APIs like OpenGL and Direct3D 11, but Vulkan is already very highly portable for almost everyone with a computer modern enough to run anything related to GPU compute.
Why don't you complain about Apple not supporting Vulkan instead?
Getting CUDA to work well is hard. Not hard on your laptop, not hard on a particular machine but hard to work everywhere when you dont know the target environment beforehand -- there are different OSs, different OS versions, different versions of CUDA, different cards with different capabilities. But we did get it to work fairly widely across client machines.
The same effort needs to be put into getting things to work for other manufacturers, except a layer deeper since now you're not even standardized on CUDA. Many companies just dont make the investment. Our startup didn't, because we wouldn't find people who could make it work cost effectively.
What I really wish is that the other manufacturers would themselves test popular frameworks against a matrix of cards under different operating systems and versions. We see some of that, for example, with the effort of getting TensorFlow to run on Apple's m1 and metal. I just dont see a random startup (e.g., mine w/ 12 employees) being able to achieve this.
For example, if I know from the manufacturer that I could get TensorFlow X to work on GPU Y on {Centos N, Ubuntu 18/20}, I would gladly expand support to those GPUs. But sometimes you dont know if it is even possible and you spin your wheels for days or weeks -- and if the marketshare for the card is limited, the business justification for the effort is hard to make. The manufacturers can address this issue.
That said, NVIDIA Docker Runtime is awesome now -- however, all this underscores further how much further behind the non-NVIDIA stack is!
This despite v3.0 being released just last year... And completely breaking the API.
For proprietary implementations, Intel appears to have the broadest and most consistent support. Nvidia skipped OpenCL 2.x for some technical reason (IIUC). AMD is a complete mess, for some reason not bothering (!!!) to roll out ROCm support for their two most recent generations of consumer GPUs.
In open source "Linux only" land, Mesa mostly supports OpenCL 1.2 (https://mesamatrix.net/#OpenCL) at this point. So if you're targeting Linux specifically then that's something at least.
Good luck shipping an actual product using OpenCL that will "just work" across a wide variety of hardware and driver versions. POCL and CLVK are both experimental but might manage this "some day". In the mean time, resign yourself to writing Vulkan compute shaders. (Then realize that even those will only run on Apple devices via MoltenVK, and despair at the state of GPGPU standardization efforts.)
Other orgs are using something written in another language that compiles into CUDA.
Either way, to replace CUDA, that middle component needs to be replaced by someone and ideally it should be the card manufacturers themselves (IMHO.) I cant imagine any small/medium organization having sufficient engineering time to write the middle component and keep them up to date with the slew of new GPUs, OS updates, or new GPU features -- unless it is their core business.
[8] https://github.com/googlefonts/compute-shader-101/pull/8
There are certainly a lot of other fascinating cellar automata though! Even within 2-state-2d-totalistic (the class GoL is from) there's loads to see and lots of surprises! Well worth exploring! (there's an app called 'golly' that's good for that, and it's cousin 'ready' does related (also 'raster') 'reaction-diffusion' simulations.)
https://m.youtube.com/watch?v=QADU5SHHO-w
(Old video of grobots in action at https://youtu.be/BLXKedZHls4?t=801)
Alien looks awesome!
I've been trying to produce a web version of it. This is where I got so far (before more or less desisting):
http://darwinjs.herokuapp.com/
[1] https://en.wikipedia.org/wiki/Core_War
[2] http://sal.discontinuity.info/hill.php?key=nano
Others look evolved inside the sandbox. (see doc here: https://alien-project.org/documentation/Evolutionexperiments...)
It was ported here https://rednuht.org/genetic_cars_2/ but it's not quite the same thing.
If you leave the program running long enough, they do actually evolve different behavior. Specifically, they will learn to recognize that there are other lifeforms in a direction and then move the opposite direction, reducing competition over the fixed amount of energy in a cell. You can actually see the population density rise when this happens. Since the grid wraps, you will generally get them "flowing" in one direction, cooperatively.
The world is simple and boring and it doesn't have graphics. Also, since the naive "Dna"/opcodes I chose use branching and random number generation, it's very slow and can't be simulated on a GPU.
Fun project nevertheless. The last few months, I've been slowly rewriting it in Rust and adding more stuff like terrain height. Haven't published the Rust version yet as it's incomplete—got hung up on the poor state of its terminal libraries.
[0] https://github.com/ehbar/evol
On the other hand, there are a lot of things that make physics tractable to compute, such as the +++- metric tensor and other factors forbidding causality violations. A universe with closed timelike curves becomes very expensive to compute because you usually have to use implicit solvers that are slow and might not even converge, corresponding to various time travel paradoxes.
Couldn't the universe where the simulation runs be so entirely different to ours that computing all that stuff is just easy.
Granted, this scenario doesn't provide us with anything we can take action on, but the idea that we're in a simulation at all doesn't, either.
You don't have to assume anything is true if you don't want to, but if you want to consider whether we're living in a simulation, it's probably worth considering.
>And what would be the point of this simulation that has been running for billions of years?
First, it's billions of years in our time. Second, what's the point of Conway's Game of Life?
Which, for me, is a dead end. It's the same as assuming there's a God, except the moral implications are worse.
> First, it's billions of years in our time.
So, if billions of years of our time fly by like your average simulation run in "their" universe, the simulation can't be very meaningful to them. And it makes the distance between our and "their" physics even larger.
> what's the point of Conway's Game of Life?
None, and that's why nobody runs one with 10^120 cells for billions of years. And if somebody did, the result would be incomprehensible. The gap between us and our creators must then be incomprehensible for us. All this is so outlandish, that the word "likely" shouldn't be anywhere near this discussion.
There is zero evidence for or against the simulation hypothesis, so why would some random person on HN be able to have the answer to this question even if we are in a simulation or even if we simply assume that we are?
The odds of all that happening without it being prevented are all but zero.
We have a better chance that one of the simulators grows attached and—against protocol—decides to uplift us from the simulation into a form where we can directly communicate with them.
Sure, but look at the state of frontend web development :)
When you make a simple simulation of rigid bodies with classical physics you often get numerically unstable results - bodies jerking against each other, slowly passing through, etc. One common way to solve this is to introduce a "frozen" state. When objects are close enough to be at rest with balanced forces - you mark them as frozen and don't compute them every frame to save computing power. You only unfreeze them when some other unfrozen object interacts with them.
Additionally hierarchical space indexing algorithms are often used to avoid n^2 comparisons calculating what interacts and what doesn't. And these algorithms often use heuristics and hashing functions with collisions to subdivide the problem, which might result in objects becoming unfrozen without actually touching each other.
The result from inside this simulation would be weird, nonlinear, nonlocal and look a little like wave function collapse (if particle A whose coordinates hashed through this weird function are the same as those of particle B happens to unfreeze - the particle B unfreezes as well despite not interacting in any way). And this would be probably considered "hard to compute" compared to the simple equations the system developer wanted to simulate.
Example that might be more relatable for scientists - it's much easier and cheaper computationally to make a numerical simulation for 3-body problem than to make an analytic simulation of it. But describing this numerical simulation behavior in terms of physical equations requires much more complex model than the equations that you wanted to compute in the first place. You have to include implementation details like floating point accuracy, overflows, etc. And if you go far enough you have to add the possibility of space ray hitting a memory cell in the computer that runs your simulation.
I'm not saying this is the reason QM is weird - I don't understand QM well enough to form valid hypotheses ;), but I'm saying we might be mistaking the intention of The Developer with the compromises (s)he made to get there. If you take any imperfect implementation of a simple model and treat it as perfect - the model becomes much more complex.
How do you know it's all computed? To make a convincing simulation, you just need to simulate in detail the bits that are actually being observed.
Everything else that happens could just be approximated at larger and larger granularity the further it is away from an observer.
There isn’t actually an observed/unobserved distinction in physics. Unless you mean the simulation is specifically targeting humans, which is a vastly more complicated proposal.
It's also the most likely proposal (with current understanding of universe).
Axis of Evil (Cosmology) calls into question the Copernicus views of the universe. Essentially saying our solar system is somehow back at the center of the universe.
https://www.youtube.com/watch?v=hjVCjdX5XRw
If WE are the subject of the simulation, it's likely everything our instruments observe are like the sky on the Truman show - not there, just phantoms of what we would expect to be there with what the simulation wants us to know about physics.
There's a max speed the speed of light, what if this is the max processing ability of the computer we're running on. What if we're not on a computer at all but some sort of wetware computer system that grows as it needs to, and never runs out of resources?
What if the speed of light in the parent sim is 500x bigger for them, or ours is like a centimeter in comparison.
A dream is a simulation, we could all be dream creatures to some huge extra-dimensional being. Not everything pre-supposes human technology.
I've seen literal "glitches" in reality, so it's pretty easy for me to believe that reality isn't something completely set in stone. For others it challenges everything they believe in, for that I say open your mind.
Donald Hoffman believes that what we see is like what someone in a VR headset sees, outside the VR headset who knows what that world is like, but in this one -- everything except math (which he believes is universal and extra-universal), is made to fit this universe. Physics, science, all of it is unique only inside the headset. There could be many headsets with different settings running parallel (parallel worlds/universes), maybe the speed of light is faster in one than the other, maybe gravity works different, etc... So many things in our understanding are really like "settings" like size of a planck's constant, pie, speed of light, etc. Almost reads like a config file.
I mean if you buy into a "God" being, if computing is a thing which we have it so why wouldn't God? Wouldn't it even make more sense for him to just code up a simulation? I mean it's gotta be a lot less demanding than building a whole universe from nothing.
2. That the same arguments also apply to our simulator operators. They also inhabit a simulated universe. And so on. Where does it stop, and why?
In a universe where time itself could be fluid, where it could be easy to reverse events, rewrite events, etc - making quantum computers work even way better than we ever could because we're limited by causality.
I mean the people beyond this universe could have 50 senses, like a sense of how far up or down they are, or how much water they can breathe in before they need oxygen if o2 is even a thing, or a sense of time so they can go back/forward through time. If they have 50 senses, our 5 sounds like "nothing" to simulate.
It's all a matter of perspective, I'm sure an ant feels like they keep pretty busy and nothing could possibly simulate their colonies, but I'm sure that would be pretty easy.
Just as a thought experiment, I'd propose that our universe and the human experience is incredibly simple. Humans were only given a limited number of senses so that the simulation can be run in this "low fidelity". Compared to the thousands of senses a level or two up. We also are simulated in a simple linear time model, only able to experience a single time at once, greatly reducing the complexity and fidelity needed. Same for the number of dimensions we are able to sense.
This may not literally be a simulation, but it seems to behave like one in many ways.
The mathematical universe sidesteps this problem. If there is a concise and complete model of the universe, that is sufficient for it to exist. A simulation might also be considered a mathematical model, and it would exist in the same way even if nothing ever runs the simulation. So I guess maybe it could be a simulation, but we mustn't ask what it runs on, but what is the program?
The universe does not owe you visibility into its origins, the lack of it does not make the hypothesis any less likely.
> If there is a concise and complete model of the universe, that is sufficient for it to exist.
Sounds like the ontological argument [1], one of the worst contortions of apologia ever imagined.
[1]: https://en.wikipedia.org/wiki/Ontological_argument
This then leads to how does math exist instead of nothing? Math is a concept, and if concepts exist then that is not "nothing".
Many people confuse "nothing" with the vacuum of space and particles appearing out of nowhere. In this case, we have something (space, vacuums, and particles), not nothing.
A similar conception I've heard is that its like something and nothing, at the beginning of time, made a bet whether there'd be something or nothing, but the act of making the bet was already something, rigging it in something's favor. Nothing thought that was bullshit and tried to call it so, and they've been battling it out ever since.
Put another way, nothing has absolutely no properties - including the property of being nothing, or empty. If an empty nothing lacks the property of being empty, or nothing, then something must arise.
The problem is that nothing can't make bets.
(https://osf.io/ca8se, I'm the author)
https://en.wikipedia.org/wiki/Permutation_City
I wonder if there is an efficient cellular automata that vaguely approximates the behavior of real chemistry, just like the autoverse.
It's a shame the garden eden configuration plot point is kind of bunk.
no thanks.
I've tried, the program runs but I cant step the simulation even once.
Have updated to current CUDA (11.3.1) and current NVidia driver (466.77) with no luck.
https://www.reddit.com/r/nosleep/comments/u7zc2/the_life_in_...
Here is the link: https://archive.org/details/4.Macintyre/page/n17/mode/2up
This is a sort of test playground for marketing, brands, and so on since the programs occupy a no man's land between games, academic research, toys, entertainment, and programming.
It also satisfies the self-feeding dogfood condition: similar to games such as RoboWar, it is difficult to resist the temptation to experiment at the simulation level, a phenomenon that could be described as the MFTL effect.
http://www.catb.org/~esr/jargon/html/M/MFTL.html
https://github.com/pavelliavonau/cmakeconverter
And also use Vcpkg for dependencies, but I guess there will be some mess with Nvidia SDKs so you'll have to hack around a bit.
He was a professor of mine in grad school, he also did visual effects for The Last Starfighter, and the early work on character recognition in the Apple Newton. Cool dude.
https://www.youtube.com/watch?v=JBgG_VSP7f8
Not sure how they're connected, but I remember being obsessed with that paper and actually recreating it in 2D as a grad project.
His fractal art is quite compelling as well: http://www.ventrella.com/