Hey, 2014-11-06 8:59 GMT-05:00 Karl Rupp <r...@iue.tuwien.ac.at>:
> Hi Toby, > > >> I fixed a couple of minor problems today, which should finally result > in > >> practically full success of the nightly test suite. One of them might be > >> the cause of your first item, which showed up as build errors on NVIDIA > >> GPUs. > > > > Yes, and cf my other mail!.. > > In a perfect world we would not have to mess with imperfections of the > OpenCL and CUDA compilers - but unfortunately the world is not > perfect... There are a few more things we can do to improve the feedback > of such failures, though, but we can't magically fix underlying compiler > crashes. > > It is hard to tell whether the problem is on our part or not. Very subtle corruptions can cause any weird thing to happen, such as a segfault in strlen... It is not unlikely that the developer of the OpenCL compilers think the same way, ie "In a perfect world we would not have to mess with applications imperfections" :-p Toby, can you run dmesg | NVRM and see if anything weird is happening when it segfaults? > >> ViennaCL used to dump the build log and the kernel sources. You should > >> see the same? > > > > It still does, but in this case, it never got that far! > > Hmm, not good... > > > > >>> I think the defining feature is the ElementFabs of some expression > >>> involving a Trans, and I think these are now occurring because I > >>> disabled an old bit of code: previously, I dispatched the matrix > >>> transposition before the rest of the statement, because expressions > >>> involving trans weren't supported by the scheduler. But then Philippe > >>> pointed out that this made autotuning such expressions impossible, so I > >>> disabled that dispatch. It seems there are some bits where this remains > >>> unsupported, so I'll have a think about what to do. > >> > >> The core does not support composite expressions involving trans(), e.g > >> A + trans(A) > >> What is currently supported is: > >> A = prod(trans(B), C); > >> A = prod(B, trans(C)); > >> A = prod(trans(B), trans(C)); > >> A = solve(trans(B), C, (unit_)upper_tag or (unit_)lower_tag); > >> A = solve(B, trans(C), (unit_)upper_tag or (unit_)lower_tag); > >> A = solve(trans(B), trans(C), (unit_)upper_tag or (unit_)lower_tag); > >> y = prod(trans(A), x); > >> A = trans(B); > >> > >> I could fix up the scheduler such that it creates a temporary when > >> encountering trans() in any other operation, though. > > > > Aha. If you can spare the time to add that, that would be great, but if > > not, I can add another check to the PyViennaCL dispatch mechanism. I > > really don't mind (though of course there's less overhead in C++). > > I'll try to come up with a fix for that later today, I don't think it > requires huge amounts of magic. > > While we are at it: Finally almost all portability troubles have been > addressed, so I will only go through one final round of nightly tests > and release tomorrow. > > Best regards, > Karli > > > > ------------------------------------------------------------------------------ > _______________________________________________ > ViennaCL-devel mailing list > ViennaCL-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/viennacl-devel >
------------------------------------------------------------------------------
_______________________________________________ ViennaCL-devel mailing list ViennaCL-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/viennacl-devel