Teach me how to pick a new research laptop
February 9, 2010 2:15 PM   Subscribe

Teach me how to pick a new research laptop.

I am going to need a laptop for research. My situation now is a 2006 era hp workstation xw6200 with a 3.4 ghz xeon processor and 3.5 GB ram, windows XP. My new computer will need to be a laptop as I will be working in multiple physical locations.

I run an unsightly mixture of java/mysql, matlab and foxpro programs. Programs take up to a few minutes to run on my existing configuration and I would like to improve on that if possible. The datasets are not enormous - 10s of thousands of records would be be big for me - but the calculations are complicated.

Honestly, I am not sure what I should be looking to maximize in terms of specs. Here is the only advice I have come across, but its talking basicaly about Stata, is that advice transferable? Should I be maximizing ram? What processor should I have? How many cores? Do I need to optimize code for parallel processing for the cores to matter?

So basically - what should I be looking for in a new research computer and any specific recommendations would be great.
posted by shothotbot to Computers & Internet (15 answers total) 1 user marked this as a favorite
This is going to be tough for anyone to answer well without knowing specifically where your current code is bogging down and how optimized it is. That link talks about maxing RAM. With your small datasets, its possible that your interim calculations gobble up tons of RAM and force you to page, but its also possible that your computations are CPU-bound, and adding RAM won't do anything.

Similarly, how much optimization is it worth doing? Some code will run like 10x faster if you code it to one of those GPU APIs, but...you know, that only works for some code. Are you doing tons of math? Is it integer math or floating point?

The parallelization issue you brought up is also getting big. Computers...they just don't get as straight-line faster as quickly as they used to, so sure there's faster cores than were around when they built your Xeon in '06, but...its not like it used to be. Depending on how your code runs now you might have to look at parallelization, but its not really answerable without knowing more about your code. FWIW I vaguely recall someone telling me that Matlab had really good support for parallelizing some code, and most of the prep you have to do for it is good practice for Matlab performance anyway, like vectorizing everything you can rather than iterating, etc.

Sorry this is such a crap answer, but basically, if you want to solve this problem, you're going to have to do something like this:
- What is the work unit I care about? How many whats per second/minute or whatever?
- Get some sort of performance tool to quantify how you are doing on that now (stopwatch is an easy start, but you can use logging or specialized tools too)
- Now you are going to have to start taking apart where your computer is spending time to do its work. Is it waiting on disk? Is your Java code creating inumerable String objects and wasting mountains of time in the allocator? Etc...

Once you've got a list of the fattest time sinks, you can look at what to do. It might be just as easy to optimize some code, but you'll at least have an idea of whether getting 8GB of RAM or a 4 way RAID array like that guy on you linked from MR is talking about will help.

This sounds like a lot of work. It kinda is. Here is a cheating strategy: borrow a laptop thats super new and run your code on it. Did it get faster? Ok, buy it.
posted by jeb at 2:48 PM on February 9, 2010 [2 favorites]

Response by poster: Once you've got a list of the fattest time sinks, you can look at what to do. It might be just as easy to optimize some code, but you'll at least have an idea of whether getting 8GB of RAM or a 4 way RAID array like that guy on you linked from MR is talking about will help.

I appreciate you taking the time to think about it, jeb.

Fair point. I need to get a new computer because I need a laptop to move between multiple locations. I am using around 10 different programs - only half of which were written by me - so I am going to guess that they all have different problems, I would bet that the matlab ones do badly on reading in the data and well on the math and the java/mysql ones do the opposite but I dont know for sure.

So maybe I should have asked about a "powerful laptop" with the understanding that is used for data crunching not gaming or photo processing. If that was what you were looking for, what would you buy?
posted by shothotbot at 3:11 PM on February 9, 2010

Oh, crap. I guess because you said "research" and mentioned java, matlab, etc., I just kind of assumed you were writing all this code. Stupid of me.

If it was me, I'd either get Thinkpad or a Macbook (specifically a Thinkpad T series or a 15" Macbook Pro). Then I'd put as much RAM in them as they can hold and the biggest hard drives they can take. These are always the laptops I get. There are faster laptops (there are even faster Thinkpads), but, I have a tendency to bring my laptops with me all over the place and I find these are a good tradeoff between size and whatnot. Also, even though I run a lot of intense crap on my laptops, generally, I think the most important thing is the ineffable quality of noncrapitude, and Thinkpads and Macbooks are so far ahead of everything else in the noncrapitude sweepstakes that I probably wouldn't bother to look at the alternatives.
posted by jeb at 3:30 PM on February 9, 2010

Tough to answer with more certainty since none of us know how you write code, what sort of computations you do and so on and so forth.

I use a Macbook pro and almost always run Matlab, MySQL and R with no performance issues. I also use large databases (10s of millions of records). In addition to my laptop, I have a super fancy PC at work where I run longer simulations (since I don't leave my MB pro on all the time). However, I can't really tell (performance) differences between the two.

R is faster on my MB pro since it takes full advantage of the RAM (as opposed to my PC which can only really see about 3 GB).
posted by special-k at 3:30 PM on February 9, 2010

How much money do you have to spend? While it's convenient to do everything on your laptop, ask yourself whether you really need to perform all your runs on it. If speeding up the calculations is the most important consideration, you're going to get a lot more bang for the buck with a desktop.
posted by lukemeister at 3:31 PM on February 9, 2010

Response by poster: you're going to get a lot more bang for the buck with a desktop.
Agreed, but I will be working in at least two physically separate offices so I am thinking a laptop is my only practical choice.
posted by shothotbot at 3:34 PM on February 9, 2010

Is there any reason why the code you're running needs to be on the laptop? Why not ssh into your more powerful desktop or server and do the heavy crunching there? Assuming that the locations you're working in have adequate internet connections, a cheaper, lighter, smaller, laptop paired with your powerful desktop is a good way to go.
posted by chrisamiller at 3:41 PM on February 9, 2010

I argue that the time you save not worrying about how to deal with keeping two computers in sync ("oh shit, i forgot to check this into the repo at work! now i'm on a plane for 10 hours with no way to be productive") will be easily worth the cost diff between goodlaptop and weaklaptop+gooddesktop.

If you can stick to one computer, do it, even if it costs like...four times more.
posted by jeb at 3:45 PM on February 9, 2010

For the Matlab code you can figure out what is taking the time by looking at the profiler. Then you can read about those functions and take educated guesses about what the bottleneck is. For example, some of my code involves loading large datasets, so a faster hard drive is more important than the processor, RAM, etc.
posted by cjemmott at 4:43 PM on February 9, 2010

I use both laptops and workstations for MATLAB-intensive research. The performance difference between workstation-class CPUs and laptop-class CPUs can be an order of 3 to 4. I'm guessing you would benefit most from having a strong workstation at one of your locations and a laptop to remotely log in and run your jobs.

I doubt you will find a laptop with performance much better than your HP workstation. I like the MacBook Pro.
posted by onalark at 5:27 AM on February 10, 2010

We have a user that almost exactly matches your profile: he's running a mix of (very small market) commercial apps and his own matlab code. He's currently using a Lenovo T60 system maxed out with the best RAM the system could handle. He's also running XP Pro 64 (our institutional standard).

He's not particularly happy with it's speed, but then he always wants a faster computer. The Lenovos are rock solid however, and travel extremely well. Lenovo also have a very good service organization if rapid repairs are important. We've had it done in Russia and China at short notice.

Were I out-fitting him today, I would buy him a T500. One consideration that's now different is that I'd very strongly consider getting an SSD instead of a traditional harddrive. There are capacity issues, but the speed gains apparently are tremendous. Most of his (archival) storage needs are on network shares anyway. Local storage isn't that big a bottleneck.

Lowest price is secondary for us/him. He needs high speed, robustness and good service. We pay for that.

If your really want high performance, as onalark says, buy a workstation. Much faster in absolute terms and much better value for money. They're also much more upgradable than a laptop is.
posted by bonehead at 6:55 AM on February 10, 2010

Response by poster: I'm guessing you would benefit most from having a strong workstation at one of your locations and a laptop to remotely log in and run your jobs.

So what would you use for remote access? I am only familiar with realVNC. Is that good enough?

I bet I could get a high powered workstation and an ok laptop for what a souped up Thinkpad T510 would cost.
posted by shothotbot at 8:46 AM on February 10, 2010

Do you need good visualization? Do you need a CD/DVD?

If not, I'd get something smaller and more portable. We use Lenovo X61s for this. That's a 13" screen without an internal DVD drive. They're quite light and have decent battery life, facts very much appreciated when we travel.

If you do a lot of visualization, you need to look at bigger screens, 15" at least, bigger if possible. That does take away a lot of portability though.

Other factors to consider:

If you're going to be frequently moving locations, get a laptop with a really good keyboard. This is one reason the Lenovos are so popular with our folks.

Secondly, if you have a "home" location where you'll be spending most of your time, consider a docking system with monitor and keyboard.
posted by bonehead at 9:20 AM on February 10, 2010

I hesitate to make any strong recommendations towards the workstation/laptop route because I am not familiar with the Windows tools for remote desktop work. I also don't know what level of interaction you will need with your remote environment. For me, most of my editing is done locally, and only when I need to launch my simulations do I execute on the remote machine.

Invest in a tool like Dropbox and your files will always be synched across as many computers as you need. Also learn about SSHFS/FUSE (or its Windows equivalent) for mounting remote filesystems using secure protocols.
posted by onalark at 9:29 AM on February 11, 2010

Response by poster: I went the beefy workstation and remote viewer route. I want to leave a plug for @xi computers - I tried to order a computer and got it badly wrong. They called and spent 20 minutes asking me about what I was planning to do and cutting about $500 off the price for a better computer. The computer I got is three times as fast as my old xeon 3.4 MHz.
posted by shothotbot at 6:32 PM on March 14, 2010 [2 favorites]

« Older Leading Me Unto   |   How do I win an election? Newer »
This thread is closed to new comments.