6 ms·
I found this hard to believe but from a quick Google search it appears you're right - Intel desktop CPU sales have been on a downward trend since 2011.
by beeboop 11y ago
I found this hard to believe but from a quick Google search it appears you're right - Intel desktop CPU sales have been on a downward trend since 2011.
- creshal 11y agoThat's partially related to Intel running against a wall with CPU speeds around that time, and partially to the mobile boom. An 2011 i7-2600K desktop CPU is still competitive with current generation i7 CPUs for general-purpose computing – most improvements were in specialized instruction sets like AVX or TSX (which infamously was broken on the first generation shipping it). Lower-end i3 and i5 are even worse off, because they don't get most acceleration instruction sets in the first place. For consumers, it makes absolutely no sense to upgrade their desktop PCs unless they break.
- beeboop 11y agoI am actually part of that camp. I have a i3570k and recently did an entire system upgrade including changing from full tower to mini ITX. The only real problem was the selection of mini ITX motherboards for my older socket type is pretty poor. But I'm now Oculus ready with only a minor CPU overclock despite my CPU being pretty old.
- dmoy 11y agoYea I still keep waiting to upgrade my 2600k, but at this point I think all the other parts will physically break before I need to. It's like 10-20% slower than a chip 5 years newer, big woop.
- creshal 11y agoOverclock by 20% aaaand done.
- kevinnk 11y agoThe 2600k cost about $350 new in 2011. For the same amount of money you could get a 5820K which is about 1.5x faster than the 2600k (or to put it in your terms, the 2600k is 52% slower). Still probably not worth it, but I looked up the numbers and might as well post them.
- seanp2k2 11y agoSame here. It's hard to want to upgrade a 2500k stable at 4.6ghz on air with no overvolting. Got it right when it came out. OTOH, starting with a Radeon 6870 then later adding a second for crossfire and Bitcoin mining when that was profitable still barely give me the power to play the newest Rainbow 6 on low everything @1920x1200 while keeping >30FPS min on Win10. I'm personally waiting for the new GPUs to come later this year before upgrading, then seeing if Oculus or Vive has better game support at that time.
- pcwalton 11y agoWell, don't forget the GPU. Intel Iris is much better than Intel HD. The way I see it, this is our fault as software developers. A 2016 PC would be much faster than a 2011 PC if we as software developers made good use of SIMD and GPUs. But we don't.
- vanderZwan 11y agoI blame the latter on language expressiveness more than anything else. Here's two pieces of C++ code; one "clean", one fast, taken from [0]: void blur(const Image &in, Image &blurred) { Image tmp(in.width(), in.height()); for (int y = 0; y < in.height(); y++){ for (int x = 0; x < in.width(); x++){ tmp(x, y) = (in(x-1, y) + in(x, y) + in(x+1, y))/3; } } for (int y = 0; y < in.height(); y++){ for (int x = 0; x < in.width(); x++){ blurred(x, y) = (tmp(x, y-1) + tmp(x, y) + tmp(x, y+1))/3; } } } The optimised-for-speed version (order of magnitude difference): void fast_blur(const Image &in, Image &blurred) { m128i one_third = _mm_set1_epi16(21846); #pragma omp parallel for for (int yTile = 0; yTile < in.height(); yTile += 32) { m128i a, b, c, sum, avg; m128i tmp[(256/8)*(32+2)]; for (int xTile = 0; xTile < in.width(); xTile += 256) { m128i *tmpPtr = tmp; for (int y = -1; y < 32+1; y++) { const uint16_t *inPtr = &(in(xTile, yTile+y)); for (int x = 0; x < 256; x += 8) { a = _mm_loadu_si128(( m128i*)(inPtr-1)); b = _mm_loadu_si128(( m128i*)(inPtr+1)); c = _mm_load_si128(( m128i*)(inPtr)); sum = _mm_add_epi16(_mm_add_epi16(a, b), c); avg = _mm_mulhi_epi16(sum, one_third); _mm_store_si128(tmpPtr++, avg); inPtr += 8; } } tmpPtr = tmp; for (int y = 0; y < 32; y++) { m128i *outPtr = ( m128i *)(&(blurred(xTile, yTile+y))); for (int x = 0; x < 256; x += 8) { a = _mm_load_si128(tmpPtr+(2*256)/8); b = _mm_load_si128(tmpPtr+256/8); c = _mm_load_si128(tmpPtr++); sum = _mm_add_epi16(_mm_add_epi16(a, b), c); avg = _mm_mulhi_epi16(sum, one_third); _mm_store_si128(outPtr++, avg); } } } } } I don't know about you, but that looks like an error prone maintenance disaster waiting to happen. And, just for comparison, Halide code that produces results as fast as the second code: Func halide_blur(Func in) { Func tmp, blurred; Var x, y, xi, yi; // The algorithm tmp(x, y) = (in(x-1, y) + in(x, y) + in(x+1, y))/3; blurred(x, y) = (tmp(x, y-1) + tmp(x, y) + tmp(x, y+1))/3; // The schedule blurred.tile(x, y, xi, yi, 256, 32).vectorize(xi, 8).parallel(y); tmp.chunk(x).vectorize(x, 8); return blurred; } (this is kind of a weird coincidence; last time I replied to you I mentioned Halide[1] as well) [0] http://people.csail.mit.edu/jrk/halide12/halide12.pdf http://people.csail.mit.edu/jrk/halide12/halide12.pdf [1] http://halide-lang.org/ http://halide-lang.org/