Thinking about buying a multicore system of ebay. Would appreciate any thoughts or experiences

HI @Tamas_Papp
I am listening to you both and I am using a laptop < 5yrs old to look into Julia. As to the ram issue, how can I investigate an in memory data set of 48gb without the amount of ram I stipulated? Is there something in the Julia memory model that would help me here? I want to investigate a data set which is know to take up that amount of space using c++'s memory model. So this system is to kill two birds with one stone, the parallel processing as ONE project and the Memory model as a completely separate project.

Unless you need to do dense linear algebra on that dataset, chances are you don’t actually need to store the whole thing in ram and can use memory mapped IO. Julia has facilities for only loading part of a file into ram at a given time but representing it to you as if the whole thing was in ram.

2 Likes

Getting a new computer for computational purposes with a budget of $500 is not really a good idea, it’s the opposite of a sweet spot.

Normally I would totally agree, but that Ryzen 1600-AF changes everything at that price point. This processor is probably better than what 50% of the people here have available. If you really really need 48gb of ram and 32gb is not enough (I’ve never seen that happen), you could probably invest in a third module and stay under 500$ by going from an SSD to an HDD (not that I would ever recommend that). Running 3 memory modules is pretty exotic though and you should check the manual if it is supported. It probably also decreases CPU performance because it has to run in single-channel mode, but I’ve never tried that.

I’m pretty sure that you don’t need 48GB of ram for your dataset. For most things you simply don’t need to have everything in memory at once. And if it is really necessary (I doubt it), it would probably be better to rent an AWS instance for that.
I don’t want to come off as obnoxious, just want to avoid people wasting their money.

This depends on the details of your problem; you may want to open a separate topic to discuss it.

Hi @daniel @Mason @Tamas_Papp

daniel, you have been EXCELLENT and I thank you again for taking the time to advise me, I AM rethinking this but the memory issue is REAL and immutable. We can’t use AWS for IP reasons, we don’t trust it at all.

Mason

we are doing very STRANGE things to the dataset and YEP we need it in memory. the existing code base has shown us that some of the functionality breaks if we page. Trust me if I could get away with less memory I would.

Tamas

I don’t want to clutter discourse with this so I will take all the advice you kind people have offered and mull over the issues. Right now I am the ONLY one considering Julia, all the rest are headed in a different way. thanks again to all.

I’ll just chime in and echo what most people are saying. 64gb is going to be overkill. You should only invest in that for personal hardware if either (a) you are not the one paying for it or (b) you currently have 32gb and KNOW that you actually need to increase the amount. And if you fall into either of these categories, you should probably be increasing your budget anyway.

I do have access to a HPC cluster for computational research, where I can spin up jobs having hundreds of cores and tons of RAM. Yet, this is always done to parallelize across cores and not out of a need for more memory. I’m sure the same is true for most other people in similar situations.

I’d also be willing to bet that you only think you need the whole dataset in memory. Several datatypes have gotten more memory efficient anyway. I remember that it used to be closer to a 2-to-1 ratio (1gb CSV ~= 2gb DataFrame), but the last time I loaded a 13gb file into memory it barely even swelled in size.

1 Like

@tbeason
nope 64gb is the minimum for this data set, I will certainly check with the lads in the c++ room but they are pretty sharp when it comes to this kind of thing. I AM paying for this as it’s something I want to do off my own bat, it’s a personal project and YEP I KNOW I have to have that amount of memory. I have access to all sorts of BIG equipment environments but I want to do this experiment at home for all sorts of reasons.
As to the datatype issue I am certainly going to ask around if we are all up to speed but I am pretty sure we are, never hurts to ask.

I’m not a security expert, but it seems incredulous to me that your data is simultaneously so sensitive it can’t go on AWS, but also okay for you to buy some cheap used server on eBay, take it home and plop the dataset on that.

I’d be much more suspicious of that machine than I would of AWS or similar unless I had the know-how to verify that every single electronic component in that computer enclosure is not some sort of listening device.

@Mason
I said IP so that’s not the same thing. I would have thought the difference was apparent. I can lock down the server in my home easily ( yes we are proud supporters of proton and librem) and make darn sure that the comms are NON EXISTENT but having a pipe to AWS is always a problem, having used Kali since it was backtrack I know of what I speak.

@daniel thank you so much for bringing this Ryzen 1600-AF to my attention. I agree that this is the better solution and I will start with 32gb thus your picks

https://pcpartpicker.com/list/cWMTrV

are perfect, thank you for taking the time. Also to everyone else for their sage advice. I’m taking a small sample of the data 24gb and buying 32gb ram ( actually 48gb was a sample in the first place) BUT it’s a GREAT building block for this experiment.
Using the photonic stuff I should be able to really get data moving around at home and the x700 would, as you and @Tamas_Papp pointed out, be a false economy. It’s been some time since I put a system together and I forgot all the lessons I learnt in the past. Thanks for reminding me.

May I ask, how you arrive at a complete computer system from these parts? Is just adding some “box” (tower?) enough or is more needed? What about the “cables” to plug everything together?

(as you see I don’t have experience in building such systems from scratch…)

@swissr

A great question. Yes you would need to add a case for the build out. I think the best way for you to get a feel for building a system is to watch someone else do it. Linus is pretty good and here is a first person view of the experience. To be honest the process LOOKS difficult but it really isn’t. The only advice I would give is to make sure you take your time. Watch the video all the way through to get a feel for what is going on, ignore the jargon just concentrate on the actions. Remember you can always replay it.

hope this answers your question but if not tell me what is troubling you and I’ll try to help out.
theakson

2 Likes

Also, unlike folks on YouTube/elsewhere on the internet, you don’t need to make things pretty. I put this “together” over the weekend:


I am not an artist. Just stick things together and hope the cat doesn’t make a mess.
(EDIT, just tested that computer:

julia> using LinearAlgebra

julia> LinearAlgebra.peakflops(16000)
2.115954927188622e12

Over 2.1 teraflops of double precision. :slight_smile: )

I’d would definitely use a SSD. If you want terabytes of disk space, you could use a small SSD to save the OS and frequently accessed / performance sensitive data on, and use a large HDD for everything else.
Mmap will probably be much faster with an SSD.

5 Likes

The motherboard, the case, and the power supply usually come with all the cables you need for the whole thing machine.

Its not rocket science. Just plug things where they fit, don’t force anything, and when in doubt read the docs (the motherboard usually comes with a decent manual on where things go) or look it up online.

Cases got much better in the last decade when it comes to cable organization, easy of access, and airflow. Now even entry-level ones are decent.

Generally I agree with you, but I am still not sure about the specs of the task @anon69491625 wants to use it for, specifically whether memory access pipelines would be a bottleneck for those multithreaded task. It probably would not matter much though.

I think that many of us would be interested in the specs (w/ prices, if you can share them).

EDIT I would love to see specs for workstations for Julia (w/ prices) from everyone else who is willing to share them, too. The gaming worlds has a lot of these, but they have different objectives than computational scientists, so it is not ideal.

I upgraded a (not particularly old) computer. The CPU, motherboard, and cooling equipment are new, the rest from that computer.

  • CPU: 10980xe, 18 cores, all core clock speed: 4.6/4.3/4.1 GHz base/avx/avx512
  • Motherboard: Asus Rampage Encore
  • RAM: 3200 GHz, 14 CAS latency, 128 GB GSkill
  • GPU: AMD Vega64
  • Radiator1: 420x420mm (MO-RA3)
  • Radiator2: 360x120
  • Power supply: 1000W Corsair HX

I haven’t pushed it too hard yet, but it’s stayed at <50C. I don’t want to actually risk crashing it.
The motherboard’s bios defaulted to 4.8/4.3 or so/3.8 GHz maximum base/avx/avx512 2-core clock speed, but with reducing speeds as the number of cores under load increased.
The bios settings I changed were:

  • Enabled XMP (memory) profile
  • Turned on sync-all-cores (so that all cores under load will run at the reported clock speed; cores not under load will be slower to save power)
  • Set the core voltage as the peak adaptive voltage (so voltage of idle cores will drop) and clock speeds for base, avx, and avx512. I used the numbers from for each of these SiliconLottery.

The fans quieted down and the temperature dropped after I made this change, so it seems this was a lower voltage than the “auto” settings – generating less heat, and putting less wear onto the CPU.

More stable clock speeds that aren’t a function of how many cores are under load is also helpful for benchmarking.

Did you end up going with the 3600?

At the high end, I’m still a fan of AVX512 and have put a lot of effort into taking advantage of SIMD. Even though overall the reviews of the new Threadrippers were far more positive – and very little software “in the wild” makes good use of AVX512 at all (eg, OpenBLAS does not). If you can use it, Skylake-X still gives you the most FLOPS for the money.
AVX512 also provides efficient masking, vectorized Int64 → Float64 conversion, compressed stores for vectorized filters, and semi-passable gathers.

I’d be happy to provide more details if you or anyone else is interested.

What would the alternatives be?
If theakson’d benefit a lot from vectorization, the 3600 would be a big improvement.
If memory bandwidth were critical, a first generation threadripper for the 4 memory channels?
Both are probably big steps up in price.

4 Likes
  • CPU: 10980xe, 18 cores, all core clock speed: 4.6/4.3/4.1 GHz base/avx/avx512
  • Motherboard: Asus Rampage Encore
  • RAM: 3200 GHz, 14 CAS latency, 128 GB GSkill
  • GPU: AMD Vega64
  • Radiator1: 420x420mm (MO-RA3)
  • Radiator2: 360x120
  • Power supply: 1000W Corsair HX

That’s a lot of radiators! Do you hear the fans at all? It seems a bit overkill even for a 10980XE, so I guess you just wanted it to be as silent as possible?

Edit: and are these really Noctua NF-A14’s? That looks like 400$ just in fans :no_mouth:

Not yet, I was busy so I put it on the back burner.

I was referring to the fact that various motherboards and chipsets can utilize high-speed RAMs to a different extent. But the effect of this is probably relatively minor (~5–10% for workloads we could care about) so it should not matter much.

Not a workstation by any stretch, but just as an additional data point, my new IceLake i5-1035G1 Dell Inspiron laptop gets:

julia> using LinearAlgebra

julia> LinearAlgebra.peakflops(16000)
1.0023871294332375e11

which I think is quite OK for a $600, 3 pound laptop :slight_smile:

julia> using LinearAlgebra

julia> LinearAlgebra.peakflops(16000)
1.4476638052059836e11

with $999 HP Z820
Platform Info:
OS: Windows (x86_64-w64-mingw32)
Microsoft Windows [Version 10.0.17763.914]
CPU: Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz:
speed user nice sys idle irq
#1-32 2594 MHz 5841262688 0 209435254 49539433347 7830643 ticks

Memory: 127.92533111572266 GB (77738.2265625 MB free)

I’m quite happy with 20x and 14.5x the performance, respectively – although it’s definitely more than 20x the trouble to move from place to place.

Their next generation may be available in about half a year.

Supposedly Ryzen benefits a great deal from high speed ram, as the infinity fabric matches the RAM speed. However, I don’t recall actually seeing any benchmarks.

@daniel You have an eye for fans! They’re mostly silent when the CPU isn’t doing much.
I had problems with overheating when using a lot of BLAS on a different CPU with a 360mm AIO earlier.
I figured if I was going to put the effort into a custom cooling solution, I’d try to see where going fairly extreme gets me. So far the hottest core has stayed under 50C, but I’ve also not put it on extended all core avx512 loads yet.
I’ll try running zgemm3m vs zgemm4m benchmarks when I get home.

1 Like