13
$\begingroup$

I have recently started to use Quantum ESPRESSO for evaluating different properties of ZnSe Quantum Dots. But I currently don't have access to any cluster and as I am increasing the size of calculation, my computer starts to hang and then crashes.

Would it be feasible to create my own small clusters from 2 or 3 laptops that I have and somehow get them to run in parallel so I will be able to execute DFT codes more efficiently. All of the laptops I posses use Windows and that is going to be a big disadvantage, but I have read articles that it is indeed possible using Ethernet.

What do you guys think, should I give this a shot?

$\endgroup$
11
  • 1
    $\begingroup$ My strong recommendation is: if you don't have access to huge computational resources, go with SIESTA that it is much less resource consuming. $\endgroup$
    – Camps
    Jun 16 at 1:22
  • 4
    $\begingroup$ No. 0) "clusters" with 2-3 nodes make no sense. one node runs all kinds of admin software, the remaining 1 or 2 nodes doing the actual computation... zero speedups compare to one node. 1) admin of any cluster is a lot of work (= cost), 2) laptop hardware is not the most reliable compared to the price, generally has bad cooling, small memory, etc, so your project would be frying after a day or two 3) DFT in 3D scales purely, so you will need 10-20X more computational power to see any difference. $\endgroup$
    – Greg
    Jun 16 at 16:50
  • 1
    $\begingroup$ Might be worthwhile to check out aws.amazon.com/hpc/parallelcluster. $\endgroup$ Jun 16 at 16:57
  • 1
    $\begingroup$ @Greg Sounds like that could be written as an answer! $\endgroup$ Jun 16 at 17:07
  • 4
    $\begingroup$ Stackoverlow has a dedicated tag «cluster-computing», with entries like this and this. Some build their own cluster (example) as a cheaper home / DIY procject. $\endgroup$
    – Buttonwood
    Jun 17 at 13:53
17
$\begingroup$

"Would it be feasible to create my own small clusters from 2 or 3 laptops that I have and somehow get them to run in parallel so I will be able to execute DFT codes more efficiently."

It's certainly possible but it would not help much at all.

  • If you are considering to put together three laptops (each with, say, 4 cores) to get a 12-core "cluster", you will still be very unlikely to observe a 3x speed-up, especially due to the slow speed of Ethernet connections. HPC systems for multi-node computations use InfiniBand or Omnipath (unfortunately both very expensive compared to the scale of costs typically experienced by someone purchasing just personal laptops) instead of Ethernet, for that reason. You would be better off purchasing a desktop computer with 12-cores.

  • If you're considering to put together three laptops (each with, say, 16GB of RAM) to get a 48GB "cluster", you would be better off just purchasing more RAM (for example, at Crucial you can get two 16GB DIMM sticks instead of the two 4GB or 8GB DIMM sticks that you probably have in each laptop by default) and inserting it into your laptop yourself. Unfortunately some laptops these days have the RAM soldered in, so you can't change the RAM easily, but this takes me back to the first bullet point above, where I recommend to get a desktop computer (it will not only likely have more cores, but also more space to add more RAM).

For serious HPC in academic research, it would be very expensive to purchase multiple laptops yourself and try to string them together to form a cluster. It's unfortunate that this is sometimes a struggle in science (also for people who want to do world-class experiments that require expensive lab equipment).

I hope that the answers to these two questions might be able to help you:

I have some computer resources at Compute Canada (CC) as part of a project, but to use them, the collaboration would have to fit within the rules of CC and the specific project proposal which I wrote for it last year.

Some other threads here which might be interesting to you are:

$\endgroup$
7
  • $\begingroup$ Your answer made me sad, but thanks for saving a lot of my time and money $\endgroup$ Jun 16 at 10:39
  • 2
    $\begingroup$ Yea, the honest truth is that I think connecting 3 laptops together this way would require a lot of time and effort and achieve no great outcome. I wish my answer didn't have to be so sad, but I prefer to give the truth more than anything else! $\endgroup$ Jun 16 at 15:33
  • $\begingroup$ Just to add to this answer, albeit a bit tangential: I like to bring up the yourdatafitsinram.net page. These days it's perfectly feasible to fit several TiB into RAM (feasible depending on your budget). And doing that will pretty much give you a higher speed-up than distributing your problem over a cluster of computers just because you don't have to synchronize over a network. $\endgroup$
    – fho
    Jun 17 at 8:53
  • 1
    $\begingroup$ To add to this, to expect a 3x speedup for 3 laptops also requires them to have the same specifications. No need to match a celeron with an i7... $\endgroup$
    – zeroth
    Jun 17 at 11:52
  • 1
    $\begingroup$ FWIW, this type of clustering can be very useful, but just not for this type of workload. You need to be either looking at an embarrassingly parallel workload (something like the stuff researchers run on BOINC), or have a primary goal of redundancy (think like for cluster-based storage systems) or cross-verification of results (again, a bit like BOINC). $\endgroup$ Jun 17 at 17:22
9
$\begingroup$

If your main limitation is the memory you can make use of old used server machines (approx. 6-10 years old). These machines usually utilize cheap DDR3 server memory chips and support quite impressive capacities (in the range of hundreds of GBs). On the other hand CPU speed is not that impressive even though they are usually dual processor and sport from 8 to 24 cores total.

Take a look at HPE DL380e gen8 or HPE DL380p gen8, these are fairly common models which I am familiar with. You can find several reddit threads where people discuss setting up home labs (mostly for storage rather than computation) which can be helpful for you.

For about 1000 USD you can probably buy a really powerful machine, especially since you do not need a lot of hard drives which is the main cost of a home lab. Just be sure to consult the documentation to buy the right memory chips (e.g. here).

Also, if you want to go further, you can create a cluster of such machines. Equip them with cheap used 10Gb/25Gb/50Gb/100Gb ethernet cards, preferably with ROCE, and you can run a nice cluster. If you want a 3 machine cluster, then if you buy two port network cards, you can connect machines directly without a network switch. Otherwise, you would need to buy a used (or brand new) 10Gb/25Gb/50Gb/100Gb switch which can be more costly.

Last note: beware, these machines can get really loud. They are meant to be placed in a server room, not your living room. The noise will kill you ;-)

$\endgroup$
2
  • 1
    $\begingroup$ Careful with server hardware, that is usually built to be reliable at the expense of single core performance. The additional cores may compensate for that, but contention for the memory bus and (on x86) cache coherency between sockets are also limiting factors. An i7 or i9 will be a lot faster than the Xeons you'd find in servers. $\endgroup$ Jun 17 at 10:03
  • $\begingroup$ @SimonRichter Definitely, a brand new i9 will be much faster, not only single core, but even overall. But if you need 768GB of memory there is no other affordable way to go than using old server machines. $\endgroup$
    – ciamej
    Jun 17 at 10:11
5
$\begingroup$

Here's a few (crazy) ideas if your only goal is to make-from-old... (also joined from SO just to post this).

If you're talented enough to program the system as low-level as the EEPROM/flash that the BIOS itself is loaded from, and still have reasonable control over the hardware:

You could in theory make a communication path via an available RAM slot, but absolutely nothing will support this, so you'd be entirely on your own (writing your own below-BIOS level drivers for chipset, CPU, RAM and your own custom kernel and operating system, plus the software you need to run). You'd require very sound knowledge in electrical engineering, programming, reverse engineering (nobody tells you how to interface with motherboard hardware directly, that's what the BIOS is for!). Not feasible in the end.

You could also communicate over PCI. This might actually work way better than my first crazy idea, but is definitely slower (though since both are theoretical, does that matter?). Again, it would require pretty good knowledge of electrical engineering (and RF now that I think about it; PCs are fast after all), and at the end of the day, the throughput probably won't be great, and certainly nowhere near supercomputer speeds.

I realize this means it's not feasible, and that was the original question, but I am the level of crazy to desperately want to try both after thinking about it for a bit, and thought I'd share anyway.

EDIT: If I knew my grammar was going to be corrected I wouldn't have posted :)

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.