1:07 AM
@SjoerdCdeVries thanks, I see what you mean; that question was clearly borderline according to the criteria set out in the blog post. On the other hand, since that was written, more SE sites have been launched that have nominally marginal subjective questions as a major focus (I'm thinking scifi especially, and perhaps RPG and Judaism to the extent that they're based mainly on people's personal opinions and experience and not all questions necessarily have a meaningful "best" answer).
These other sites seem to be successful despite the profusion of supposedly marginal questions, but probably a significant part of why it works is that these communities accept such questions and take then seriously when answering. So, from my point of view, if the community doesn't object and useful answers can actually be given (even if in the form of general advice), perhaps we don't have to follow the "rules" too rigidly.

2 hours later…
3:39 AM
This article about the design of LLVM is eerily familiar. Anyone else think that the new (in v. 8) compilation processes grew out of some of those ideas, including SymbolicC?
Plus, the pattern matching in the optimizer is familiar to anyone who has used mma. I liked the project before I read the article; I like it better now.

@rcollyer Not sure I follow. Personally I wouldn't have thought to draw comparisons between LLVM and Mathematica's compiler. LLVM is much more advanced.

And, going back to the BF parser O3 in Clang (LLVM c-compiler) runs 67 passes!
@OleksandrR it is, but I see a convergence with how compile evolved. Maybe I'm just seeing things.

Funnily enough, it was suggested that it be migrated to Signal Processing, before they retagged it sensibly... lol

@yoda I see that. And, I know so little about the actual functions ...
@yoda they should know that DFT does not refer to Fourier Transforms. :P

I mean, had I not heard you say DFT every time, but not referring to the real DFT, I would've said yes to the migration :P

3:50 AM
I suppose there are similarities, such as the bytecode generation for an abstract VM. I always took that to be a mechanism to make a faster interpreter, though (like many other interpreted languages that have an intermediate bytecode representation, such as Python).

<insert real DFT == DCT joke>

@yoda didn't miss it. :)
@OleksandrR the article discusses compiler tech, in general, so it makes sense to me that they come to similar conclusions/techniques.
In particular, the compiler does perform some level of common expression elimination which is a standard technique.

@rcollyer yes, that would be my interpretation. I think these techniques are fairly common for all compilers in general.

@OleksandrR it just looked very familiar, and I think they're drawing on the same pool of ideas, if not looking over each other's shoulder, as it were.

@rcollyer I'm not sure but I think there may be certain other optimizations that were considered at one point. CompileOptimizations -> 2 in V7 is undocumented and seems to produce sometimes not working code. In V8, may as well just emit C and let the C compiler deal with it.

3:57 AM
@rcollyer hello

@VitaliyKaurov Hi.

@rcollyer do you only see my hello or the rest too?

@VitaliyKaurov only the hello.

@rcollyer I've seen some cool graphs of yours accidentaly

@OleksandrR But, SymbolicC is an intermediate form similar, in a sense, to LLVM's IR. As I said, I'm probably seeing things.
@VitaliyKaurov really? define "accidentally."

4:00 AM
@rcollyer in previous chats ;-) i.stack.imgur.com/t2WNk.png

@rcollyer I suppose. I would be more inclined to consider the VM bytecode as the equivalent to IR.

@VitaliyKaurov while you're here, NVidia says my GPU supports CUDA, yet Mathematica does not believe it. Do you know how I can convince it that it should work?
@VitaliyKaurov that's one of my favorites.
@OleksandrR likely. As I said, I'm likely seeing patterns where they don't exist. (However, I like my hunches. :P )
@VitaliyKaurov I'm currently working on speeding up the generation of those plots.

@rcollyer tried that?

@VitaliyKaurov yep. But, I did not do the uninstall. Should try that.

@rcollyer SymbolicC seems to me more like part of the front end of a compiler--it can be used to represent C code as a parse tree (and as we work more or less directly with the parse trees in Mathematica, lets us deal with C as if it were a normal expression.) Undoubtedly SymbolicC is used for compilation to C, but the process is in reverse--first expression optimization happens, then bytecode gets generated, and then the bytecode is translated into C.

4:04 AM
@VitaliyKaurov Yet, the resources page does not list my card. I have the GForce GT 330M.

@rcollyer what are full specs of your card?

@VitaliyKaurov which is CUDA capable.
@OleksandrR which would make it a back-end, not a front-end.

@rcollyer I can ask if you want me to about that card - i can let you know if it should run, maybe tomorrow

@VitaliyKaurov thanks, I appreciate that.
Honestly, just curious. I'd like to try the volumetric rendering! :)

@r yeah thats cool stuff

4:08 AM
@rcollyer that's true, for its use in the compiler.

@VitaliyKaurov I'd like to apply it to my electron clouds. :)

@rcollyer do you have an email for me to send a response ?

Got it?

@rcollyer ok. btw I loved those images - do u have a website where you log your work?

@VitaliyKaurov not currently. But, I have space available if I want to use it.

4:11 AM
@rcollyer hmmm. why suddenly yr messages got deleted - i did not copied the email yet.. slow :)

@rcollyer GeForce GT 330M is rather old and not particularly powerful; could it be possible that Nvidia dropped support for it from the CUDA compiler, or simply didn't bother to support some necessary new feature on it? ATI's done that with cards they didn't want to have to deal with any more. (Like mine. Grr.)

@VitaliyKaurov had to beat the timer for deletion.

@rcollyer haha... but i didn't
@rcollyer ok got it

@VitaliyKaurov I meant, if I left it up there to long, I couldn't delete it. I'd have to page a mod, and they get cranky this late.
@OleksandrR you'd think they'd update they're specs page, then. I know it isn't capable of the newest versions of CUDA, but I was hoping ...

@rcollyer no worries.. you got notebooks for those images ?

4:14 AM
@VitaliyKaurov yes. I can dig them up.

@rcollyer I wish people here would blog about stuff they do

@VitaliyKaurov mine is part of my doctoral research, and, at the time, there was the possibility that it could cause difficulty if I did that. That said, now that I'm near the end, I don't care so much anymore.
In fact, I was tempted to hop on the SE.blog bandwagon and discuss how I built the functionality to do that.

@rcollyer Well I will reply to you about your card. If you have a chance or will to send me the code- would be great - when you have time ;-)

@VitaliyKaurov I sent Brett some bits of it prior to learning how to speed it up, a bit. InterpolatingFunction isn't the fastest thing on Mathematica. However, after that I figured out how to turn it on its head, and 10^5 random points takes around 7 secs. I'd like an order of magnitude faster, but it is sufficient for plotting.

@rcollyer at least it is not 2 weeks long monte-carlo simulations ;-)
@rcollyer yes - I can link you too

4:23 AM
@VitaliyKaurov nope, just density functional theory calcs. I've logged 10k+ cpu-hours, easy.
@VitaliyKaurov cool. I was just looking for your name.
@VitaliyKaurov done.

@VitaliyKaurov finally spoke in here! :)

@RM hehe... alas ;-)

It is very late here. I should go and get some sleep. @VitaliyKaurov I will send you those notebooks sometime soon.
Night all.

@rcollyer Night. I should go too.

@RM loved your "3D objects in a scene" question. I am into that stuff. Wanted to add negative scoring points for hitting the balls. No time ;-)

4:32 AM
@VitaliyKaurov Thanks :) Your answer was fantastic — spent quite a bit of time playing around with it
Yu-Sung gave me false hopes though... he said he was going to share it during the Q&A :P
hello @Verbeia

@RM was so many questions - we hardly had time for extra things ;-)
@RM thank you

@VitaliyKaurov I can imagine :) Also, I guess the questions had to be broad and of general interest — something that most people would find useful... You don't find a horse next to a chinese building with Beethoven inside every day :P

@RM true - we can horses for this site ;-)

Hi @RM

in between coffee breaks?

4:39 AM
@RM just made a cup of tea - steeling myself before reviewing a 160 page document.

yikes.

would much rather be playing with my graphing code, but that's not what I'm paid for
some of the international meetings I go to have 600+ pages of background papers to be discussed

@Verbeia you should just use word cloud question and create one for your monster text, with hyperlinks that list the sections they appear in :P

4:57 AM
@RM hah! no, but I just tried the introduction of one of our publications. Fascinating! I had to dial down the parameter that excludes words that appear fewer than 10 times. Enlightening!
Anyway, better get to it.
Bye all

2 hours later…
8:05 AM
Wow, 18K in less than five months! Thanks for all the votes.

3 hours later…
10:40 AM
@Heike Did you figure out what he meant by the eigenvalues having a natural ordering?

11:01 AM
@Szabolcs Not really. Judging from the comments it seems that the OP wants a spectral decomposition of his matrix, but I don't see how the order is relevant in this. This bit confuses me as well: "I want the eigenvalues/eigenvectors to be given in such an order so that when I build U, the diagonalizing matrix, I get: U^dagger x A x U = D, D being diagonal, and more importantly, U*D*U^dagger gives me A back."
Surely if U is normal then U^*.A.U=D implies U.D.U^*=A no matter what order the eigenvalues/eigenvectors are in.

Of course. And for U = Transpose@Eigenvectors[mat] it works.

11:42 AM
Hi all!
@Szabolcs regarding the eigenvalue problem: what OP requests does not IMO make much sense. Eigenvalues/ eigenvectors are used to characterize the invariant subspaces of a linear operator. Their order is not an invariant.
Here is a simple 2x2 example: the transformation {{0,1},{1,0}} has a determinant -1 and represents the flip of 2 eigenvalues, so to say. This is not an SO(2) transformation, so for 2x2 matrix, such transforms are ruled out (directly)
@Szabolcs but for higher dimensions, a combination of rotations can give such transforms, so they are valid members of the group. Considering real symmetric matrices again for simplicity, already 3D case shows this: a combination of 2 rotations around z and then y axes counterclockwise (Pi/2) will lead such a matrix: {{0,0,1},{0,1,0},{-1,0,0}}.{{0,-1,0},{1,0,0},{0,0,1}} yields O = {{0,0,1},{1,0,0},{0,1,0}}, which is SO(3) yet it flips the eigenvalues: O.Diag[{1,2,3}].O^T = Diag[{3,1,2}].
@Szabolcs So, the ordering of eigenvalues is not an invarant under the general SO(n) for n>2, and therefore, his question seems ill-defined. Perhaps, in certain conditions, for matrices "close enough" to a diagonal, it may make some sense.

1 hour later…
1:15 PM
@Heike The scary part is that it isn't uncommon. As a software tester, that's how we ran the vast majority of our reporting, and the development side wasn't much better: MS Project.

1:30 PM
Consider the following code:
g = RandomGraph[{10, 20}]
SetProperty[g, {VertexShapeFunction -> (Circle[#, .1] &)}]
The output looks like this:
Note how the circles match up with the lines perfectly, as if they were disks covering them. This is true regardless of the circle diameter.
This seems impossible unless Mathematica is aware of the sizes of those circles. I just don't see how it works.
I would have expected something more ugly like what SetProperty[g, {VertexShapeFunction -> (Circle[#, .1] &),
EdgeShapeFunction -> (Line[#] &)}] produces.
Hmm ... inspecting the Graphics version of the output confirms that the lines are indeed offset back by the correct amount.
But this information doesn't seem to be passed to the EdgeShapeFunction.

The behavior when you give a scaled radius seems peculiar... SetProperty[g, {VertexShapeFunction -> (Circle[#, Scaled[.05]] &)}].

And now I tried to capture what's actually being passed to that function using Sow, and for the umpteenth time, I bump into the problem of not having access to evaluation during formatting time ...
Just like when trying to work around with an $IterationLimit problem when displaying graphics with too many GeometricTransformation in them, Block[{$IterationLimit = Infinity}, ...] won't work because the problem function is called during formatting, not main evaluation.
@JM What do you see? I don't see a difference for as long as the circles don't intersect.

@Szabolcs The circles become ellipses, at least when I tried it out...

@JM Not here. But interestingly, the edges are properly offset even if I force an ellipse manually.

Yeah, I noted that the offsets were fine even if they weren't circles. Hmm...

1:47 PM
The offsetting works even for really weird shaped functions.

You have rabbits! Or, tomatoes!
Probably not what you were looking for, though.

@rcollyer no, ducks

@Heike I see. Its all quacked, anyway. :P

@rcollyer All quacked up, you mean...

The offsetting even works when you do something like this:
g = RandomGraph[{10, 20}];
vv = RandomReal[1, {4, 2}];
LocatorPane[Dynamic[vv],
Dynamic[Graphics[{EdgeForm[Black], FaceForm[], Polygon[vv]}]],
ImageSize -> 100]
SetProperty[g, {VertexShapeFunction -> (Dynamic@{FaceForm[],
Polygon[Transpose[# + Transpose[vv]]]} &)}]

1:50 PM
@JM Yep.

Now the question:
1. How does this work?
2. How can I have access to the functionality when defining custom edge shapes?

...sounds like something for main...

I second that.

Later. It's almost 4 P.M., so the shops will soon open. I need to go down and get water. I'm dying of thirst.

Sounds good.
Anybody have any ideas for this one:
1

Maple can separate and eliminate a function in a system of PDE equations, with casesplit in the PDEtools package. How to do that in Mathematica? Starting PDEs are:  -A\frac{\partial ^2Q(x,y)}{\partial x^2}+B\frac{\partial ^3P(x,y)}{\partial x^3}+C Q(x,y)-C\frac{\partial P(x,y)}{\partial x}+D\...

1:54 PM
(Typical local opening hours: 7-12 and 16-19.)

Hi @Vitaliy!

Hola, @VitaliyKaurov

@Szabolcs I was wondering about that

@JM You live in a hot country. Do you also have weird opening hours?

@Szabolcs Time for a mid-day nap?

1:55 PM
@JM hola ;-)

@Heike It's very similar in Italy.

@rcollyer morning. your card should work

that's more useful than the traditional opening hours here which are from 9-18 during weekdays, and 9-17 on Saturday

@Szabolcs Depends on the establishment. Some places only open at lunch, for instance...

@VitaliyKaurov Cool. So, what do I have to do to convince Mathematica of that?

1:56 PM
...and stay open up until 23:00...

actually, on Monday many shops don't open until 1 pm

@Szabolcs blog is a good idea, but good content and regular authors is a must.

@Heike sounds like Sundays here.

@VitaliyKaurov Thankfully, it seems that we can do with a monthly schedule...
e.g. you on the first month, Szabolcs for the next month, etc., etc.

@rcollyer On sunday practically all shops are closed

1:58 PM
@VitaliyKaurov As JM said, first we can take it slow. With a monthly schedule we'll have material for at least half a year. Are you interested in contributing? (Are you in a position to do that?)

@Heike I'm guessing there's a crazed amount of buying on Saturdays...

You have some nice graphics on your personal blog :)

@Heike that changed with secularization and most "blue laws" getting repealed to some extent.

@Szabolcs I would love to, but I am afraid I will be out of time completely
@rcollyer run that tutorial all steps and tell me which step fails and what error message

@JM Yep. Saturday is the worst day to go shopping for groceries. Especially during holiday weekends like Easter and Pentecost when the supermarkets are also closed on the following Monday.

1:59 PM
@VitaliyKaurov will do.

@Szabolcs thank you ;-)

@rcollyer Most towns have "shopping Sundays" about once a month, but the christian lobby is trying to restrict the number of Sundays per year during which shops are allowed to open.

Needs["CUDALink"]
CUDAQ[] (* False *)

@rcollyer Do you have a Mac?

@Heike yep.

2:03 PM
I had to install a CUDA driver manually to get it to work

@Heike from where? NVidia?

@rcollyer yes

@Heike Ah, so that may be the problem.
@Heike Hmmm, kicks back: no driver found. Time to crash my browser with the auto-search.
I'll log off here, and talk to you all later. Hopefully this works. :P

@rcollyer which video card do you have?

@Heike GeForce GT 330M
Apparently the auto-search is not supported on Mac. :P

2:08 PM
@rcollyer did you update driver?

@VitaliyKaurov nope. NVidia is telling me there are no drivers for it.

@rcollyer and do you have MAC ?

@VitaliyKaurov yes.

@JM Nope. With the combination: GeForce 300M series, MacOs (either of them) -> No drivers found.

2:09 PM
@rcollyer what MAC?

@VitaliyKaurov macbook pro.

@rcollyer i will check, but I got an uneasy feeling already ;-)

@VitaliyKaurov you too? :P
Found this via a google search. Not updated since 2010.

@rcollyer That's a relatively long time ago... *whistles*

@JM yes, yes it is. I wonder where I need to check if it is already installed ...

2:13 PM

@Heike Thanks. That's not directly accessible from the page I was using. Annoying.
CUDAQ[] (* True *)

\o/

CUDADriverVersion[] (* 4.2.9 *)
Thanks for the tech support!

Tsk, tsk. Maybe this should be documented somewhere so other people don't have to jump through hoops...

2:20 PM
Possibly.

The fact that you had so much trouble shows that it's worth it, even if it seems trivial in retrospect.

@rcollyer got an answer for u from TS. You should contact TS directly, they got pipeline and tricks and it'll be much faster than with me as the middle link

@VitaliyKaurov TS? My brain is sleep deprived, so I don't follow.

@rcollyer TECHNICAL SUPPORT AT WOLFRAM
@rcollyer sorry for caps :-)

@Szabolcs I want to run through the setup, first, then I'll post after I'm sure it worked.

2:25 PM
@rcollyer 1-800-WOLFRAM
or even better maybe

@VitaliyKaurov Ah. True. CUDALink seems to recognize the newly downloaded drivers from NVidia, so I'll walk through the setup, first, to ensure it works. If it doesn't, I'll ask questions, then.

pic live chat
@rcollyer sounds good

Finding the drivers, though, was an exercise in frustration.

Do all Macs come with an Nvidia card?

@Szabolcs I don't know. I believe they were using ATI for a while.
@VitaliyKaurov seems to work. Even shows up in SystemInformation[].

2:29 PM
There's still an ATI? I keep seeing NVidia everywhere these days...

Oops, found a bug

@JM they're owned by AMD.

@Heike Try with DirectedEdges -> True and the double edges will be misrendered.

CUDA doesn't work for me either
I have CUDA Toolkit 4.1 and CUDA SDK 4.0 on Sabayon linux with MMA 8.0.0
And NVIDIA Driver 295..49
And an ASUS 460GTX

setting up CUDA can be a bit advanced. you should chat with Wolfram technical support team wolfram.com/support/contact

2:39 PM
@VitaliyKaurov I can't I have only the student edition
I even asked in one of the online CUDA seminars, but didn't get a working answer

@image_doctor No support for that?

@JM only email support
@JM I have tried previously via email to get them to look at this, but after 3 weeks of getting nowhere my determination collapsed

@image_doctor just tell them you know @VitaliyKaurov... instant VIP service :)

@RM lol, who you know is often more important tha what you know :)

@RM Tsk, tsk, abuse of perks... :P

2:47 PM
;-)

@VitaliyKaurov Wait, you're condoning it? :P

ok guys off to work. cheers

@VitaliyKaurov posted

apparently, my 2008 model MBP is CUDA capable... never bothered to check before; I had always assumed it wasn't

Just played with the blur. I wonder what this will do for my electron cloud plots?
Of course, the next question: how do I turn it into an image that I can embed in a paper? png, preferred.

3:01 PM
(joke) "He does all this fancy CUDA stuff to render it, and then for printing, proceeds to taking a screenshot..."

@JM I may have to resort to that. Or, cut and paste from the graphic.
But, who cares. I can do it, and that is all that matters. :)

@rcollyer Include a notebook so the readers can render it themselves?

@Heike :)

3:15 PM
If they have a good enough graphics card ...

...and that's a pretty big "if".

3:28 PM
Anyone know a simple way of suppressing the output of temporary cells such as those of LaunchKernels or Retreiving data, etc, etc?

4:13 PM
@Rojo Quiet[] ?

4:57 PM
Quick question: how do you set up a function with, say, five arguments, to act like it's Orderless for the first three arguments?

@JM I don't know: "how do you set up a function with, say, five arguments, to act like it's Orderless for the first three arguments?"
Post it on main. I think it is interesting.

@rcollyer I'm ashamed to confess that I'm not sure what to tag it if I do decide to ask on main...
doesn't exactly cut it...

@JM interesting question! I don't think that's possible directly, but here's what I would do: transform f[arg1_, arg2_, arg3_, arg4_, arg5_] into f[g[arg1_, arg2_, arg3_], arg4_, arg5_] with g Orderless.

Hmm, I suppose I could Sort[] the first three arguments, but I was thinking there's a less baroque way of doing it...

5:13 PM
@JM if you need Orderless to be accounted for in pattern matching, emulating it using sorted arguments won't cut it, I think.

That's a point against my approach, I agree.

Now my turn for a quick question: does anyone know what InternalLocalizedBlock is for?

5:38 PM
@JM I guess you could do something like SetAttributes[orderless, Orderless]; f[a_,b_,c_,d_,e_]:=fo[orderless[a,b,c],d,e]; fo[orderless[a_,b_,c_],d_,e_]:=...

@JM works for me. Maybe combined with ?

@imagedoctor Quiet doesn't work for that, or not for me

Here's a dummy version of what I'm doing:
f[a_, b_, c_, d_, e_] := f[Sequence @@ Sort[{a, b, c}], d, e] /; ! OrderedQ[{a, b, c}];
f[a_, b_, c_, d_, e_] := {a, b, c, d, e};

@JM that can get dangerous
I think it will sort your patterns in some unexpected way if you ever want to, say, write
MatchQ[f[i_Integer, r_Real/;r>8, ....], exp]
Does that happen with orderless functions too?

The special function I'm trying to implement takes p + q arguments, and is symmetric in the first p arguments, which is what got me thinking about this problem. I'd want f[5, 3, 1, 4, 2] == f[3, 1, 5, 4, 2] to be True, since both are turned into f[1, 3, 5, 4, 2].

5:53 PM
No, it doesn't

(I'm not implementing the general function for the time being; just one or two special cases I'm interested in.)

Orderless does some other things. You can sort them only "if they are numeric"

@Rojo I know, but I just want the symmetric arguments to be in canonical order.

Then what you do is fine. Just remeber about it for pattern matching
Your patterns will end up in any order

That way, writing f[5, 3, 1, 4, 2] + f[3, 1, 5, 4, 2] gives 2 f[1, 3, 5, 4, 2]

5:56 PM
An approach that would avoid all that, perhaps, is

Hmm, good thing my approach seems to play nicely with the Listable attribute...
I should sleep on it for now. I'll ask on main if I can't figure out a better solution than mine in the morning.
See you guys later!

6:13 PM
Too late, bye JM
and I'm leaving too. If anyone knows how to shut the "laucnhing krenels", or "downloading data from wolfream server", or all those temporary cells for a partcular calculation, ping me up

6:25 PM
Here's an interesting difference between Begin and BeginPackage:
Begin["Outer"];
mySymbol
Begin["Inner"];
?mySymbol
End[]; End[];
BeginPackage["Outer"];
mySymbol
Begin["Inner"];
?mySymbol
(* OutermySymbol *)
End[]; End[];
Likely because BeginPackage["Outer"] prepends Outer  onto $ContextPath. Not surprising now that I look at it, but initially annoying for what I wanted to use it for. 7:02 PM @JM how about f[x,y,z][a,b]? @OleksandrR I remember I spend half an hour once trying to figure it out, but it didn't do what I expected it to (i.e. have the same localization mechanism that Module/With/Function, etc have, i.e. appending a single $ and no number after symbols, I'm not talking about the x$nnn Module-variables) 7:42 PM @rcollyer It doesn't prepend it... BeginPackage temporarily sets $ContextPath to be just your context and System
Simply asking ?mySymbol will only look for that symbol in the current context. So the response is correct: there is no such symbol in the OuterInner  context
Try it again with ?**mySymbol

2 hours later…
9:55 PM
Anyone going to attend the virtual conference on SystemModeler? If so,what track do you intend to follow?

1 hour later…
11:24 PM
@SjoerdCdeVries I'll be probably attending, I subscribed and got the trial, but I haven't even looked at the schedule

11:59 PM
@RM Well, asking for the definition was just shorthand for asking is it accessible? The surprising part, for me, was the outer context was not accessible by the inner context via mySymbol, it required OutermySymbol. This is not intuitive, as it is not how c++ namespaces behave. The closest equivalent is using BeginPackage instead of Begin.