Hacker News new | past | comments | ask | show | jobs | submit | logimame's comments login

How is a storage format that's not used for math important for speeding up actual computations? I'm curious.


Many of these algorithms are bandwidth- or cache-limited on modern machines, so you can get significant speedup by storing your data in fewer bytes, even if you expand it in registers before actually doing computation on it.


We're reaching a point where it's often faster to store pages in RAM compressed with a fast algo like LZ4 and to decompress them, than to simply copy from RAM uncompressed to L1 cache.


Exactly. In this case, the limit is memory bandwidth.


Wow, that's illuminating. I naively thought the overhead of converting between datatypes would not make this worth that much (in favor of saving cache misses). Though does this also have anything to do with the AVX512 instructions?


Yes, this AVX-512F instruction makes fp16 to fp32 efficient:

https://software.intel.com/sites/landingpage/IntrinsicsGuide...

The result is that Winograd convolutions can achieve an effective FMA rate of twice the peak rate of the CPU.

The Winograd transform reduces the required number of FMAs by a factor of 5x, but you can only do FMAs at half peak rate (because you are bandwidth limited), so you come out ahead by a factor of 2.5x in theory (2x in practice).

Without fp16, that 2x advantage would be lost.


To make things worse, the site doesn't work unless you disable Ublock Origin (and even when it works it's goddamn slow), and for some reason you get a location access request from your browser right when you click an entry (is there any reason they have to collect geographic data for a download link?)


Nah, he’s more of a hobbyist in AI. I don’t necessarily think you need to be explicitly in academia to produce good academic work (independent researchers do exist), but he hasn’t really produce anything (in terms of actual theoretical/experimental results) that could be regarded as a substantial contribution to the field. He’s made some anime datasets though, maybe it could be useful to some.


I often wonder if being too close to the experimental results and current techniques blinds some people from seeing the bigger picture. Gwern certainly seems good at analyzing large-scale trends in AI research, perhaps broad high-level knowledge of the field is advantageous for this vs deep understanding of specific neural network details.


I trust Hinton and LeCun who have actually created the trends and bigger picture and invented the now "current" techniques over commentators who show up years later and offer shallow non peer reviewed analysis and predictions.

Reminds me of this talk by the failed tech startup's non technical CEO who apparently was able to see the bigger picture that scientist aspergers needs weren't able to see.

https://youtu.be/ukgnU2aXM2c


A question: would it be too much work to port Love2D to a different embedding language? (I'm currently having looks at Squirrel (http://www.squirrel-lang.org/) I always thought Lua was tightly coupled with the framework, but what you've mentioned seems to imply that's not the case.


Having attempted this myself, the answer is "a lot of work." Even with the classes and bindings separated, there is still a lot of C++ code used in the binding layer, and some of the C++ code is tightly coupled to Lua data structures. If a transition to a C API were to be made, that C++ code has to be put behind a corresponding C wrapper, so basically opaque pointer types to all those classes and functions/methods have to be wrapped to fully support using LOVE as a standalone library.

I still think that a C API would be a better option than trying to fork the project to replace Lua with Squirrel or some other language, so that at least others can have a chance to write bindings for their favorite languages without having to do all the porting work again.

Here is the tracking issue: https://github.com/love2d/love/issues/1640


I don't think it's "too much work" if you really need it or are really interested in doing so and the approach results in incremental benefit vs. one big blob of benefit at the end. It would be quite a bit of work and not super automatic, probably. You have to implement all the files named 'wrap_*' in the Love codebase, kind of. It's definitely possible to start working on a game project to test with and do it incrementally, which is probably strategically the best path and also fun, which can make it worth it. Something like:

- Get direct Love C++ project working without Lua

- Make some level of test cases with it to get a sense of C++ API usage

- Embed squirrel interpreter into test

- Start binding API to squirrel and testing more and more of API incrementally from squirrel

- Port more and more test cases till it's all covered (or prioritize based on need of game(s))

The nature of the thing you are increasingly covering in Squirrel could be a particular game or a set of demos (maybe both).


Lua is a language that I started programming with, and has a special place in my heart even if has some crappy parts.

The main issue I have with the language is with table accesses and 'nil'. Tables in Lua are the most fundamental type of object in the language, it can be either an array (1-based index) or a hashtable. In this language objects are basically just tables with fields in them, and with metatables you can basically emulate all the features in a typical OOP language (classes, inheritance, traits, operator overloading, etc.) Field access in objects are just table accesses (like what you can imagine with Javascript).

However, when you try to access a field in a table that doesn't exist (such as 'print(table.key_that_doesnt_exist)'): no errors or exceptions are explicitly raised, it just silently returns nil. This is such a dealbreaker that makes the language much harder to debug than other languages (at least Javascript returns undefined, which is different from null! Oh well, that actually has problems of its own though....) Some more horror: global variables are also implemented as tables (imagine that there's a table _G at the top of the scope). This means that any spelling mistakes with variables will also just silently return nil, since if it doesn't find any variable names at the local scope, it tries to find at the global scope.

The global variable thing was actually such a big problem that people came up with some voodoo metatable trickery script like strict.lua (https://github.com/deepmind/strict/blob/master/strict.lua) that prevents this from happening (a showcase of the language's power, but probably not its proudest). I'm sure you could also do this with table creation (make a wrapper function tbl() that automatically adds metatables to tables to prevent invalid field access, so every time you need to do things like 'pos = tbl({x = 1, y = 2})') But still, there isn't a solution baked into the language, and it's cumbersome to do this (and I'm not sure about the performance implications of this addition).

Right now I'm trying to integrate Squirrel (http://www.squirrel-lang.org/) instead of Lua as a scripting language into my game. Squirrel is an embedded scripting language that's hugely inspired from Lua, but also fixes this shortcoming of the language by making invalid table accesses runtime errors. And when you want to add new fields to a table you need to explicitly do so via the <- operator:

    table = {}
    // print(table.x) (Runtime error)
    // table.x = 1  (Runtime error)
    table.x <- 1
    table.y <- 2
    print(table.x) // Outputs 1
which is much more explicit and less error-prone.


Lua gives you means to build your object system anyway you want. A trivial example to protect a table below:

  local p = { x = 1, y = 2 }
  print( p.x, p.y )
  
  setmetatable( p,
  {
      __newindex = function() assert( false ) end,
      __index = function() assert( false ) end
  } )
  
  print( p.z )    -- you get assertion failure
  p.k = 12        -- you get assertion failure too


I’ve already mentioned how to do this with metatables. But you still need to wrap this in a function and call it every time, it’s quite cumbersome. And the whole thing falls apart when you start using other people’s libraries (For example, you enabled strict.lua in your codebase, but then it starts affecting other libraries which relied on the original Lua behavior… Or you’ve made your own object system, but that one library you’ve imported uses middleclass and another uses rxi.classic, and you need to go though the headache of making sure they’re all compatible)


To be honest, that document is a prime example of what a manifesto shouldn't look like. I can't understand what you're trying to say from the beginning sentence:

> No other re-ligion (lit. “back-binding” [one etymological analysis of the word /religion/] to some ideas to rely on for humans) is necessary for a society, but only reasoned about principles: reflection, symmetry, cooperative construction (by too many CAs -> 1CA).

I'm never explained as to how the etymology of re-ligion relates to the whole thesis, much less what the etymology actually means. That first sentence will already make 90% of the people in the humanities to close their tabs. Please explain concepts like these in full sentences, than rather jot out abbreviations and notes that only you could decipher. I'm actually intrigued about this etymology, but I can't understand! What is "CA"? What do you mean by morality relating to symmetry?

> Evolved religions like Christianity also abide to following principles. Their followers do:

  1. think/reflect about the world (our thinking: one instance of reflection)

  2. they are in search of beauty, of beautiful/good actions/deeds (symmetry (1))

  3. they try to establish one text, one book, as core of their religion.
Now you're making very, very huge sweeping generalizations about the nature of religion right away at the second sentence, which would now make the remaining 10% of the humanities people to run away. The particular qualm I have (disclaimer: though as a non-humanities person) is the third part: religion is not operated only by what is explicitly written in the texts, but are also implicitly defined by the cultural norms of that society (which is why some religious people often try to "find" things in the text in support/opposition to current cultural norms (such as women's rights in the Bible or the Quran), rather than interpreting the text and then create a top-down cultural norm based on that!) And the "singular text" thing might just be a byproduct of you thinking Christianity is the only religion in the world... (more specifically, a product of Protestanism) Also you really need to be careful when using the term evolved: I'm not saying you shouldn't use it, but you're now adding a evolutionary view of "progress" in religion that you have never explained!

Ah, I don't have the energy to read the rest of this, people deserve a more legible manifesto than that.


Thanks for your comment! [edit] Did explain short term CA in abstract. And regarding my sweeping generalizations, well, I cannot do without (it's about math, too, see last remark of this paragraph). You're right, there's much fighting over interpretations of holy books' content and cultural norms, but anyhow a base text is made available. Regarding symmetry as beauty and good deeds, I had my headache about including it, but as mutual reciprocity/respect of citizens, that has some validity. The real reason, though, I included symmetry is: https://en.wikipedia.org/wiki/Equivalence_relation : Symmetry is the second relation. I am not going abstract without a reason. In principle #1, you see THE foundation of math.

* Uniting humanities and natural sciences by the principle of reflection #+BEGIN_SRC One single root of natural sciences and humanities: reflection. #+END_SRC See Principle #1 below.

* How to unite and manage the world by a natural/logical religion

abstract

No other re-ligion (lit. "back-binding" [one etymological analysis of the word /religion/] to some ideas to rely on for humans) is necessary for a society, but only reasoned about principles (prin-ciple: the thing to grasp first , primus+capere): reflection, symmetry, cooperative construction (by too many Central Authorities [too-many-CAs] -> only 1 Central Authority [1CA]; see Cultural Principle below).

Evolved religions like Christianity also abide to following principles. Their followers do: 1. think/reflect about the world (our thinking: one instance of reflection) 2. they are in search of beauty, of beautiful/good actions/deeds (symmetry (1)) to form a sustainable society 3. they try to establish one text, one book, as core of their religion: an instance of a CA (among other religions with their corresponding CAs)

(1) Seems like rather a far fetched argument, but who is not in search of beauty? The necessary association of beauty with symmetry anyhow is clearly shown in arts education about proportions, geometries of the human face or body. Good deeds and mutual respect/reciprocity of citizens, showing off characteristics of symmetry, too?!

Uncovering an abstract core of every human religion is our goal here for the betterment of education and world management. (Respect for every evolved religion is granted, but having different people adhering to different religions is not a good way to start thinking about a unity of humanity -- despite the potential of tolerance in various religions.)

The priciples reflection, symmetry, and cooperative construction are elaborated below.


No, if you're just an owner. If you're a miner though... that's a whole different story.


Not a miner but I’m curious. What should miners be doing differently?


I don't think there's anything miners really have to do differently because of this. The only big thing would be to make sure to upgrade your software to the version that has the code for the hard fork (though at this point the hard fork has already happened, so you would be a bit late). But regular users should upgrade their hardware too so that their clients track the correct chain, otherwise they might not see the right balance.


Update their running software.


Upgrading their nodes


sudo apt upgrade geth


If you have ETH but not use any wallet, should you do something?


No.


If it goes to nobody, is it really "gone forever"? Did it even exist in the first place?

The confusions arise from thinking cryptocurrency tokens as material things (like gold). Money is just a numeric representation of the social relationship people have with each other, and the rules of the monetary system is just an technical agreement on how we should have relationships with others. This is a change of rules for the relationship between miners and owners: nothing is "lost" or "burned". Whether you agree upon that change of contract is up to yours, but the actual "disappearing" of money isn't an issue in the slightest here.


It goes from the wallet of people issuing transactions to no one. So it was actual value that people could spend, and that value is removed from circulation, reducing inflation


> If it goes to nobody, is it really "gone forever"? Did it even exist in the first place?

Yes? Isn't "going to nobody" the very definition of "gone forever"? Previously miners received the ETH spent on fees, and either kept it, or traded it for cash. Since they will be receiving less, they will have less that they can sell, which should result in less selling pressure.


I'm not sure exactly what you are saying. I don't think there's any problem with the money being burned.

> nothing is "lost" or "burned"

That "specific" Eth is gone. I say "specific" because of course it's fungible, except for its transaction history.


Confidently incorrect and took a lot of words to do it. Bravo!


To be honest, even without the actual 51% attacks happening, it would really suck to live in a world where just one entity had more than half ownership of a currency used by the people.


>it would really suck to live in a world where just one entity had more than half ownership of a currency used by the people.

You mean, kinda like in the real world?

[1]:https://www.oxfam.org/en/press-releases/worlds-billionaires-...

[2]:https://www.oxfam.org/en/5-shocking-facts-about-extreme-glob...


I really wish the current global monetary system based on the US dollar would be this simple to change as just creating a fork. Wait, it's actually the US military (which is still the largest in the world) that's backing the whole monetary system? Ah, shucks.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: