Ah, I finally got multihead to come up. I finally tried the other card. It came up fine. So perhaps the old one is bad.

I put the old one back in just to confirm, and now I'm waiting for the new one to boot. Knock on wood: I hope it still works ok.

The old card would do video with one gpu, but not the other. I'm tempted to put it in and see if I can send any CUDA code to the unresponsive gpu. It otherwise seemed ok as far as the system seeing it, aside from the driver not being able to boot it.

Another wrinkle is that we may be hamstrung for cards. If the hdmi idea I posted about earlier works, then we may be ok. It is unclear now. Jose probably has more of these things laying around in his lab anyway.

HDMI & multihead

I had the idea this afternoon of trying to use the HDMI output on our videocards.

This has the benefit of slightly easing the multimonitor work, while also freeing up 3 GPUs for nothing but CUDA down the road if we end up implementing it.

I picked up an hdmi-to-dvi adapter from Santa Cruz Electronics today, but it doesn't fit on the card at the same time as a normal dvi plug. So I need to either pick up an hdmi extension cable tonight, or return this adapter tomorrow and get a kit that has a cable extension.

Still trying to decide if I should try and pick one up tonight. I'm rerunning memory tests on my computer now. The ram seems to be passing now if I try it in some different dimm slots. That isn't as bad as last night, but still somewhat discouraging.

Once I get the computer up again, I need to try a couple kernel options to see if I can get multihead to work. If that doesn't work, then I will try the other video card. If that doesn't work, then maybe both cards together. I think I had one more idea after that. EDIT: this was VGA pallete snoop option and disabling UseEvents.

If multihead still doesn't work after all these things, then it may be an incompatibility with my motherboard. I could possibly pick up another from Fry's, or we could try and get another PC from Jose. If multihead STILL doesn't work (and at this point things are shady, because Nvidia's documentation says that what I am trying to do IS supported) then we are kind of SOL and will need to look into Chromium.

Bad Memory

Last night I was in lab for a long time trying to get multimonitor output to work with Jose's cards in my computer.

I probably should have kept a precise log of my actions in some kind of notebook for engineering, but this is my recollection of how things went down:

1) I updated to the latest bios and tried to do multimonitor output with my existing config. No go. Note: this was stable, however
2) I tried to boot from my old laptop hd over usb, but I could not boot because I had to change some settings on the hd.
3-0) I either booted a Knoppix cd before or after the bios update, and it ran fine. Subsequent boots did not produce a properly running Knoppix. Sometimes I got assertion failures on boot.
4) My desktop install would have trouble booting.
5) I changed the usb hd settings on my laptop, then tried to boot it. Had weird hangs or segfaults.
6) Pulled some ram, things began to work.
7) Burned a memtest86 cd, started testing ram.
8) Eventually tested each piece of ram individually, all came back bad. That means I have 4gb of bad ram in my computer which otherwise was very stable.

So what seems to have happened is

  • My ram is bad. OR

  • My motherboard is bad. OR

  • I simply seated my memory wrong.

I hope I can narrow it down today. Does anyone have access to a motherboard that uses DDR2 memory?


Webcams Part 2 & more

So today I built a 2.6.29 kernel, and the PS3 Eye driver on there seems ok. I still have a couple app compatibility wrinkles, where some things run fine against my Logitech camera. But Eddie's opencv test app works fine on it (most important), and mplayer shows video off it with low latency (also good.)

By the time we will be done in June, Ubuntu 9.04 will have been out for a month. 9.04 won't have 2.6.29 though, I don't think. Last I read, they were planning to hold off on it, anyway. It will have the next X.org release though, which has the MPX code merged in -- so it supports multiple pointers. I hope I have time at the end to implement a basic mouse driver.

I am sitting at home now watching this video about Git. Git is the scm tool that Jose set up for us last quarter. I made a Google Code account for us also, so we can do SVN via Google as well. I don't think I'd want to pick one or the other until I researched the discussion about them.


CUDA Part 2

In v2.2, which isn't out yet, they are adding zero-copy support. This could help us with performance issues for the image-processing code, assuming we get around to implement it.

Details here.



Today I picked up this Logitech camera. It maybe is better software-wise because it is a UVC (usb video class) camera, so it has a standard driver interface. Semi-standard anyway: I have not researched it *too* in-depth yet, but it seems like they have to periodically update the UVC driver for new cameras.

Playing with a few apps, I can change resolution & fps of the logitech camera pretty easily on my laptop. At first, it had a lag like the Playstation Eye. Which sounds bad, but that implies it wasn't necessarily the Eye driver that was laggy. Fiddling with the settings, it seems to have gotten faster. It is actually running at a pretty low latency now on my laptop, although it seems to kind of smear images at a high framerate.

This beckons me now to go back and tinker with the Eye some more. I may take these over to Jas' house later tonight.


Presentation Tips

I emailed a guy I know who gives really, REALLY good presentations for general tips and things that he thinks about when he makes his presentations. All of his presentations that I have seen are technical in nature but are still very engaging.

This is what he wrote to me:
You are telling a story.

More than anything else, *that* is what matters. You are telling a
tale, with twists, turns, surprises, and a moral at the end. Timing is
critical. If it's an hour presentation, no individual phase should last
longer than 5 minutes. If it's a 30 minute presentation, 3 minutes. If
it's a 10 minute presentation, it's beginning, middle, and end. If it's
a 5 minute presentation, it's context and discovery.

Slides: You are not talking to your slides. If you are delivering
slides to be read later, you can have lots of detail. But your slides
are a vague reference, just enough to remind you of the story.

Never say um. Just be silent.

Eye contact -- pick one person, in each area of your audience, who you
are speaking to. Don't be too piercing about it, but very much imagine
you are convincing or educating that *one* person. Feel their
understanding, or lack thereof, as you are talking to that one person.
As they understand, be proud. As they are confused, roll back.

Don't be afraid to drop material if it doesn't fit into the storyline.
Better to say less and explain more.

Remember. Tell a story!

It might be a little too late now to build an overarching narrative, but we have pieces of them in our presentation now. I will try to consider some of these suggestions for the things I talk about during my slides.



Eddie was asking me today about what the problem was with the PS3 eye.

This is what I did with it last week:
I tried one set of drivers from some guy's repository who seemed to be the most popular via Google. The best I could get out of the camera with his drivers were audio. I then tried the drivers by a guy from nuigroup, who modified the first guy's drivers. The thread on nuigroup for this set of drivers had several people posting success using them. When I used them however, I was getting about 1 second lag on the video.

Some details:
  • The drivers being used comes as part of a huge pile of webcam drivers that people are maintaining. I happen to be building all of them and installing them on my laptop.
  • My laptop runs 64-bit Linux, so there may be a gotcha there. I could try on my desktop, which is 32-bit.
  • The nuigroup guy's drivers I used were from Feb 15. I ought to post on there or talk to him about my issue, see if it is known.
  • The driver is otherwise nice: I'm able to select 16 different camera modes. I was getting something like 125fps out of the camera @ 320x240 -- just lagged by 1 second.
  • Apparently this driver will be in the 2.6.29 kernel


I am still ambivalent about how to maintain my email conversations for this project. I just now emailed the teachers a copy of the block diagram from my non-scimp gmail address, with a CC to our group. I did this because I wanted the mail to hit the group without me writing a bunch of CCs for us, and I want to keep most all of my scimp activity (vs. just 123 class activity) in my gmail.

I set up my main gmail so it will pick up my scimp mail as another pop3 account, so I can send as the scimp address if I choose to. That particular address seems to be a little bit of an anachronism now though, because my main gmail address is already attached to 2 mailing lists now.

Maybe we should add our scimp addresses to our internal list? Also, it may be convenient to have a scimp alias "teachers" that expands to Kip, Petersen, and Dave so I don't even have to write lengthy CCs for them.

Exponential Push [Winter]

I have to do an exponential push tonight on my CS115 project, but after that I can mostly throw myself at our Scimp stuff. I would like to finalize the block diagram (going to send the teachers my current one tonight) and the charter, then pitch in on the final report.

The writing discussion today in class bothered me a little bit. I am conflicted on the subject. I used to think I was a decent writer, because I've always gotten decent grades on things. My worst writing assignment in 123A has been an A-. I did pretty well in 185. In prior GE's I've popped out papers pretty quick, and been complimented to my face by the teacher on my writing quality.

In my GE this quarter, however, the TA has been ruthless in eviscerating my work. Granted, the paper I am thinking of in that case I did crank out *really* fast, and I didn't feel too good about the prompt to begin with, but it still plants doubt in my head.

How well written is this post?



I got Nvidia's SDK examples running on my laptop last night, but I'm afraid that Opengl might be putting memory pressure on the gpu, which makes Cuda a little problematic. Nvidia's driver is supposed to do some kind of memory management, but I have no idea how it pages things to main memory and I'm 99% certain it doesn't give the OS very good notifications of what it is doing. I need to investigate the subject.

~/NVIDIA_CUDA_SDK/bin/linux/release$ LD_LIBRARY_PATH=/usr/local/cuda/lib ./bandwidthTest
Running on......
device 0:Quadro FX 570M
Quick Mode
Host to Device Bandwidth for Pageable memory
Transfer Size (Bytes) Bandwidth(MB/s)
33554432 1152.5

Quick Mode
Device to Host Bandwidth for Pageable memory
Transfer Size (Bytes) Bandwidth(MB/s)
33554432 1240.4

Quick Mode
Device to Device Bandwidth
cudaSafeCall() Runtime API error in file , line 725 : out of memory.