| 01:37.41 | IriX64 | interesting |
| 01:38.11 | IriX64 | and obviously they keep adding to it. |
| 01:40.07 | IriX64 | good to know i'm not in there, was worried for a moment :) |
| 04:04.01 | *** join/#brlcad IriX64 (n=mario_du@bas3-sudbury98-1168050142.dsl.bell.ca) | |
| 04:36.58 | IriX64 | brlcad just out of curiosity, does that magic number, is it returned from gl, and is it guaranteed to be the same on everybodys system? |
| 04:38.13 | IriX64 | I took it out of my copy, and am curious if im breaking anything else? |
| 04:38.33 | IriX64 | still compiling, i'll know soon. |
| 04:49.24 | Maloeran | Magic variables as first member in structs are used to uniquely identify the chunk of data for debugging purposes |
| 04:52.26 | Maloeran | Speaking of which, I find it strange that there's no global switch to disable these checks and remove the magic variables |
| 05:07.08 | IriX64 | they're merely checking a passed pointer to a struct for validity, in fb_close trying to close the device. |
| 05:12.17 | IriX64 | works ty. |
| 05:12.23 | IriX64 | rt too :) |
| 05:16.18 | IriX64 | was failing on the open. |
| 05:18.52 | IriX64 | my way i still check the pointer for validity, but it's not tied to that funny number. |
| 05:20.36 | IriX64 | just use the same name for the new check, it passes, i recompiled everything. |
| 05:25.56 | IriX64 | still need the other two variables (ptr and str) . |
| 05:26.11 | IriX64 | for backwards compatibility :) |
| 05:31.37 | IriX64 | http://www.pastebin.ca/index.php my code for what its worth, nothing else need change. |
| 05:37.11 | IriX64 | now to build an x version for myself. |
| 05:38.00 | brlcad | IriX64: removing the check doesn't fix anything any more than spraying perfume on crap makes it smell good |
| 05:38.34 | brlcad | it's a value defined by BRL-CAD and repeatedly checked for validity in the case of bug injection or bad compilation logic |
| 05:38.39 | IriX64 | well my crap not only smells good it does what its supposed now :) |
| 05:39.07 | brlcad | it's still crap |
| 05:39.22 | IriX64 | but crap that works is no longer crap |
| 05:39.30 | brlcad | that's BS |
| 05:39.35 | brlcad | you've just masked the problem |
| 05:39.40 | brlcad | and created an unstable system |
| 05:39.51 | IriX64 | urf ok just ignore that snippit i pasted |
| 05:40.00 | brlcad | there's no guarantee now that you might coorrupt a geometry database or cause other harm |
| 05:40.19 | IriX64 | man we're dealing with video here its not rocket science. |
| 05:40.21 | brlcad | just because it no longer aborts doesn't mean the problem is fixed, it aborted for a very important reason |
| 05:40.36 | IriX64 | yeah the damn numbers didint match. |
| 05:40.53 | IriX64 | one is supplied by me one by u go figure. |
| 05:41.02 | brlcad | that's just the check |
| 05:41.08 | brlcad | do you even realize what the check means? |
| 05:41.14 | IriX64 | but it bombs on a simple open |
| 05:41.23 | brlcad | it means you have corrupted memory, the wrong data |
| 05:41.36 | brlcad | which means just about *anything* can happen |
| 05:41.46 | brlcad | random crashes, unstable behavior, data corruption |
| 05:42.04 | brlcad | that's absurd |
| 05:42.11 | IriX64 | goats gotten, as i say you're free to ignore it. |
| 05:42.41 | brlcad | well, just don't waste my time later with any other issues then, because that is a deal-breaker |
| 05:42.53 | brlcad | flat out, you're on your own |
| 05:43.07 | IriX64 | sure if im going to hassle you ill recompile with that in it ok? |
| 05:43.34 | IriX64 | err yours in it. |
| 05:43.48 | IriX64 | simple #ifdef for sean ... |
| 05:44.20 | IriX64 | ill even add it to configure ;) |
| 05:44.29 | IriX64 | --for-sean |
| 05:46.31 | brlcad | the fact it even works is interesting, perhaps a side effect of the prevalence of aliasing and struct alignments |
| 05:46.44 | brlcad | but it's entirely unpredictable behavior |
| 05:47.39 | brlcad | what's bothersome is that you seem to think there's nothing wrong with the change you've made as if you understand the full implications .. I do not believe that to be the case |
| 05:48.43 | brlcad | i'm not just being pedantic about the check, there is a problem there that may or may not be benign, but it's an entirely unpredictable system and as a solid modeling system predictability and security of user data is paramount important |
| 05:51.21 | brlcad | Maloeran: brl-cad doesn't use the magic numbers just for debugging, it's fundamental to various data integrity tests and assurance that the application will shut down the instant an unexpected situation is detected so as not to corrupt data .. the user's data is vastly (several orders) more important than the application |
| 05:52.50 | brlcad | there is a compile-time switch to turn off the actual checks and run-time debugging aspects of those checks, but we don't even ship binaries with that option .. it's intended for specific jobs where you know that an error won't be encountered and want the 5-50% performance gain |
| 05:55.25 | brlcad | as for actually removing the magic variables at compile-time, it's rather bad-practice to change the size of your structs between modes of compilation -- you change alignments, can mask errors, and can introduce new problems in itself |
| 06:02.54 | *** join/#brlcad SWPadnos (n=Me@dsl245.esjtvtli.sover.net) | |
| 06:58.23 | IriX64 | x works |
| 07:16.12 | ``Erik | O.o |
| 07:17.35 | ``Erik | removing struct magic isn't going to buy you anything, just bring grief... |
| 07:19.30 | ``Erik | yeah, it burns a clock in some functions, but if it ever follows the 'off' branch path, it's a serious error, so performance wise it's an "optimal" jne |
| 08:36.00 | *** join/#brlcad clock_ (n=clock@zux221-122-143.adsl.green.ch) | |
| 08:37.20 | *** join/#brlcad clock_ (n=clock@zux221-122-143.adsl.green.ch) | |
| 09:48.12 | *** join/#brlcad clock__ (n=clock@zux221-122-143.adsl.green.ch) | |
| 12:43.50 | brlcad | our application has been entered |
| 13:06.08 | *** join/#brlcad SWPadnos_ (n=Me@dsl245.esjtvtli.sover.net) | |
| 13:33.33 | *** join/#brlcad clock_ (n=clock@zux221-122-143.adsl.green.ch) | |
| 13:40.21 | Maloeran | Makes sense, brlcad. I guess the magic checks aren't too present in the critical performance loops |
| 14:08.25 | *** join/#brlcad rossberg (n=rossberg@bz.bzflag.bz) | |
| 15:48.48 | Maloeran | Mmhm, http://news.bbc.co.uk/2/hi/asia-pacific/6441631.stm |
| 16:53.03 | IriX64 | used the wrong code tree, goof that I am, there goes another hour. |
| 17:12.17 | *** join/#brlcad clock_ (n=clock@zux221-122-143.adsl.green.ch) | |
| 17:19.47 | *** join/#brlcad ChanServ (ChanServ@services.) | |
| 17:19.47 | *** mode/#brlcad [+o ChanServ] by irc.freenode.net | |
| 18:00.43 | *** join/#brlcad dtidrow_work (n=dtidrow@host169.objectsciences.com) | |
| 19:05.08 | IriX64 | wikipedia knows nothing of glEnable() (cept for a java wrapper) :) |
| 19:06.17 | IriX64 | should have all ansi programming references there :) |
| 19:14.38 | ``Erik | em, it's an encyclop�dia, not a programmer reference... |
| 19:22.32 | brlcad | it's also directly editable.. if you want to add something that's missing, you can directly do so |
| 19:38.44 | IriX64 | doesn't that cause a mess? |
| 19:39.37 | IriX64 | who keeps track of what i add it could be blatantly a lie. |
| 19:47.42 | ``Erik | oh neat, they're running 'the prisoner' on bbc, first episode starts in 10 minutes |
| 20:54.42 | *** join/#brlcad IriX64 (n=mario_du@bas3-sudbury98-1168050142.dsl.bell.ca) | |
| 21:01.34 | IriX64 | mc |
| 21:08.28 | *** join/#brlcad clock_ (i=clock@84-72-90-161.dclient.hispeed.ch) | |
| 21:45.39 | *** join/#brlcad docelic (n=docelic@212.15.176.65) | |
| 22:39.29 | *** join/#brlcad louipc (n=louipc@bas8-toronto63-1096782634.dsl.bell.ca) | |
| 22:57.03 | Maloeran | Exclusive games or ports? |
| 22:59.32 | ``Erik | software at all |
| 23:00.04 | ``Erik | http://www.lemon64.com/games/list.php?type=year&name=1999&submit.x=0&submit.y=0 |
| 23:11.19 | *** join/#brlcad Twingy (n=justin@74.92.144.217) [NETSPLIT VICTIM] | |
| 23:16.38 | IriX64 | some lemon for your tequila ``Erik :) |
| 23:18.26 | Maloeran | 1999... We had 3d accelerated games and megabytes of RAM then, very surprising to see C64 games |
| 23:19.10 | Maloeran | Then again, some people in Efnet's #asm still write code for that platform, for some poorly defined reason |
| 23:19.34 | IriX64 | why is amigaos in config.sub? |
| 23:21.23 | IriX64 | likewise ibm370 ;) |
| 23:21.38 | IriX64 | mvs mmmmm |
| 23:26.15 | ``Erik | config.sub is a GNU provided file that supports an obscene # of os's |
| 23:26.35 | ``Erik | heh |
| 23:26.44 | ``Erik | I've had urges to write c64 asm in the last few months |
| 23:27.16 | ``Erik | it's good to understand the history |
| 23:27.48 | ``Erik | I also use hand-tools when I have equivelant powertools, and I cook things from scratch that I could buy pre-prepared at a restraunt or a grocers frozen section |
| 23:27.50 | ``Erik | *shrug* |
| 23:27.59 | ``Erik | c64 asm was fun... |
| 23:28.03 | ``Erik | x86 is anything but. |
| 23:28.38 | ``Erik | mips asm was fun, too... unfortunate that it didn't gain traction like that horrible intel klugefuck |
| 23:30.27 | Maloeran | amd64 & SSE is bearable |
| 23:31.33 | IriX64 | ``Erik i'm a pdp sort so I know what you speak of :) |
| 23:32.04 | ``Erik | the sse2 api is, uh, fugly? :) |
| 23:32.16 | ``Erik | I d'no what exactly the differences between amd64 and x86 are |
| 23:32.38 | IriX64 | both based on segments unfortunatly |
| 23:33.23 | Maloeran | Segments? Not quite |
| 23:33.25 | ``Erik | heh, x86 style segment addressing still boggles me... I mean, "toy" computers of the 80's had moved to paged addressing |
| 23:33.30 | bjorkBSD | a pdp sort? he's a COBOL programmer :O |
| 23:33.30 | IriX64 | SSE? elucidate ive been hiding from the industry for a while. |
| 23:33.35 | ``Erik | 70's, even |
| 23:33.42 | ``Erik | the c64 had sorta paged memory |
| 23:33.54 | IriX64 | heh picture this picture that :) |
| 23:33.56 | ``Erik | absolute wiht fixed size, but .... O.o not offset |
| 23:34.40 | Maloeran | Erik, I was wondering something. Why don't they make chips able to buffer, let's say, 4 threads per core... and whenever there's a cache miss, it switches execution to another thread until execution can continue? |
| 23:35.03 | ``Erik | uhh, I d'no? :D |
| 23:35.09 | Maloeran | I think it would be a fairly nice design, considering how cache misses are typically such a large bottleneck |
| 23:35.12 | ``Erik | feel free to patent the idea *cough* |
| 23:35.20 | Maloeran | Pft :p |
| 23:35.27 | ``Erik | just remember, silicon costs, and you're talking about doing that in silicon |
| 23:35.40 | bjorkBSD | common sand? |
| 23:35.48 | bjorkBSD | ... washed with common water? :P |
| 23:35.55 | bjorkBSD | the beach becons |
| 23:36.04 | Maloeran | Erik, it would simplify chip design on many other aspects |
| 23:36.07 | bjorkBSD | *k |
| 23:36.27 | ``Erik | mal: do you have a silicon emulator? |
| 23:36.28 | IriX64 | prefer quadruple cache 1=instructions current 2- instructions probable 3= data current 4=data probable. |
| 23:36.29 | Maloeran | They could focus on just having multiple cores processing a large buffer of threads, rather than trying desesperately to make one thread run as fast as possible |
| 23:36.39 | ``Erik | um |
| 23:36.49 | ``Erik | in school, I got a copy of "mmlogic" I think... |
| 23:36.53 | ``Erik | windows only |
| 23:37.05 | ``Erik | but building a pipelined gpu in it was ... educational |
| 23:37.09 | Maloeran | Whenever there's a resource bottleneck, such as cache misses, it could suspend the thread and move to another one |
| 23:38.09 | Maloeran | It would be an elegant way to keep all processing resources busy, while completely hiding the memory latency |
| 23:38.36 | ``Erik | but youd' be talking about building a full-up scheduler in silicon |
| 23:38.51 | Maloeran | Not a scheduler, just a small buffer of 4 threads per core |
| 23:39.13 | ``Erik | small, yes, but a scheduler... :D |
| 23:39.20 | Maloeran | Fine :p |
| 23:39.46 | ``Erik | and process scheduling is very much a non-solved aspect |
| 23:40.33 | Maloeran | Come on, this is simple. Whenever a thread hits a cache miss, or requires the FDIV unit blocked by another thread, just switch to the next one |
| 23:40.39 | ``Erik | unless you admit that the ingo O(1) scheduler jsut shoved in linux is no better than the ancient BSD 'fair use' scheduler... |
| 23:40.56 | ``Erik | WHICH next one? |
| 23:41.04 | Maloeran | Any other of its 4 threads! |
| 23:41.16 | IriX64 | and if they all block? |
| 23:41.19 | ``Erik | but which any? the one waiting for the result of the first? |
| 23:41.20 | Maloeran | The OS can do correct thread management, the chip will just try to keep its resources busy |
| 23:41.25 | ``Erik | the one waiting on the disk read? |
| 23:43.00 | IriX64 | could put in a deadman timer i guess Maloeran. |
| 23:43.01 | Maloeran | It doesn't have to be fancy at all, there's the OS to do all the careful and proper thread management |
| 23:43.38 | ``Erik | and what if it makes the kernel 1000x uglier to cope with the 2% speed boost? :D |
| 23:43.54 | ``Erik | dude, get a silicon simulator, try your idea out... if it works |
| 23:43.59 | ``Erik | fucking patent it and start a biz |
| 23:43.59 | Maloeran | The point is just to switch between multiple threads currently awaiting processing in order to nicely hide the memory latency, while keeping processing resources busy |
| 23:44.25 | Maloeran | Processing speed keeps increasing, memory is lagging behind, I think this is a solution to solve the issue |
| 23:45.33 | ``Erik | but I tend to use computers as data manipulators on large sets, not fast simple repetitive crunchers :) |
| 23:46.09 | Maloeran | Exactly, wouldn't you prefer to fully hide the horrible latency of accessing your large sets which are never in cache? :) |
| 23:46.21 | ``Erik | um |
| 23:46.32 | ``Erik | the data sets taht start to irk me are too big to fit in ram |
| 23:46.36 | ``Erik | and i have boxen with LOTS of ram |
| 23:46.37 | Maloeran | Multiple threads managed by the hardware really are the solution |
| 23:46.48 | ``Erik | I mean, my laptops have 2g a whack, they're tiny... |
| 23:46.57 | ``Erik | the boxes I "work" on are 8g and 32g |
| 23:47.03 | ``Erik | g as in gigabytes of ram |
| 23:47.13 | Maloeran | Fine, stop just loading data, and start doing some number crunching on it :) |
| 23:47.26 | ``Erik | but in grinding over 500gb of data, *shrug* |
| 23:47.53 | Maloeran | Bah. So it's not useful to you. You do see the point of the design, right? |
| 23:48.07 | ``Erik | my cpu's almost never cook up anything notable in 'user' cpu... :) |
| 23:48.36 | ``Erik | it could be useful, yeah... figure out the details, if it's really a win, patent it and make your zillion dollars |
| 23:48.50 | ``Erik | then you can 'retire' and do what you want instead of trying to make a living :) |
| 23:49.11 | ``Erik | heh |
| 23:49.18 | ``Erik | solve the problem of paying bills. |
| 23:49.19 | ``Erik | :D |
| 23:50.04 | ``Erik | I mean, if you push this 'interesting problem' and make a few million bucks, you can get away with never trying to "make money" ever again, right? |
| 23:50.30 | ``Erik | so you can focus on 'interesting' problems without worrying about rent or paying for lunch |
| 23:50.31 | ``Erik | no? |
| 23:50.43 | Maloeran | Designing a chip to take on AMD is not something I can do alone within a reasonable time frame |
| 23:51.15 | ``Erik | a defendable patent can be sold to the likes of amd *shrug* |
| 23:51.26 | Maloeran | Anyway, I think the ideas are good if anyone here likes gazillion stuff |
| 23:52.22 | dtidrow_work | got a question for you all - which linux file system is best for handling lots of files in a single directory? |
| 23:53.37 | dtidrow_work | and that's available on linux? |
| 23:54.00 | Maloeran | dtidrow_work, reading, writing, creating or deleting many files? |
| 23:54.09 | ``Erik | but my 'big' dir is only 13000 files |
| 23:54.17 | dtidrow_work | reading atm |
| 23:54.24 | ``Erik | no, ufs is a UNIX fs, default for freebsd O:-) |
| 23:54.31 | Maloeran | Then reiser4 |
| 23:54.45 | dtidrow_work | is it actually available? |
| 23:54.54 | dtidrow_work | thought it was still 'beta' |
| 23:55.26 | Maloeran | Ah yes, that's probably right... Reiser3 is in the kernel sources though, of coursee |