loglow (OP)
Jr. Member
Offline
Activity: 69
Merit: 3
|
|
September 01, 2011, 07:32:04 AM Last edit: September 05, 2011, 08:46:47 PM by loglow |
|
hi! I've had a mining machine running for a few months, and I thought I'd share some images. I've benefited from many ideas, designs, guides, and photos from this forum! so, this is the third iteration: v1 was 2x5830s in an Antec 300 case, v2 was 4x5830s in an improvised open frame, and v3 (below) is 4x5830s in an aluminum and lexan (polycarbonate) case which I actually planned out before building it. in a nutshell: v1) ran fine but had no room for 4 cards and v2) ran too hot, required external fans, and was huge. my goals for v3 were: a) no external cooling and b) smaller than 12" x 12" x 18". plans were made in google sketchup first. the frame is 1/16" x 3/4" aluminum L-shaped strips, and the siding is 3/32" sanded lexan. the frame is held together with #8 machine screws and a combination of hex nuts (internal) and cap nuts (external). the panels have 1/2" holes which can fit around a hex nut, yet be secured with a fender washer, so they can be removed without taking apart the frame or needing to get inside the case; they're also secured with sections of velcro. here are a few more pictures; the last one was taken with the top panel off. after much (too much) trial and error, I'm running debian wheezy (testing) with catalyst 11.6 and app sdk 2.5. through a combination of mostly python and rrdtool, I've built a visual monitoring system for the machine: anyway, I'm happy to go into more detail about any of this stuff; feel free to ask! take care, -dan
|
|
|
|
edtks86
Newbie
Offline
Activity: 26
Merit: 0
|
|
September 01, 2011, 07:46:21 AM |
|
looks awesome!!! what are the temps like?
|
|
|
|
haploid23
Legendary
Offline
Activity: 812
Merit: 1002
|
|
September 01, 2011, 07:53:12 AM |
|
looks awesome! do those 6 fans blow at the cards, or do they exhaust the heat? how much in material did this build cost you?
|
|
|
|
loglow (OP)
Jr. Member
Offline
Activity: 69
Merit: 3
|
|
September 01, 2011, 07:58:27 AM Last edit: September 01, 2011, 08:18:44 AM by loglow |
|
looks awesome!!! what are the temps like?
thanks! a script runs once per second to measure the temps and fan speeds. if a card's temp is 68-72C then its fan stays put, otherwise the fan is increased or decreased by 1%. fans range 40% (night) to 60% (day), occasionally reaching a peak of 70-80% on especially hot days. this means the temps (first column, green) remain reasonably constant, while the fans (second column, blue/purple) vary as the ambient temp changes. here's the console output of the script:
|
|
|
|
loglow (OP)
Jr. Member
Offline
Activity: 69
Merit: 3
|
|
September 01, 2011, 08:08:41 AM Last edit: September 01, 2011, 08:18:58 AM by loglow |
|
looks awesome! do those 6 fans blow at the cards, or do they exhaust the heat? how much in material did this build cost you?
thank you . the 6 fans blow inwards, onto the cards. raw materials were roughly $80, more or less. I think ~$25 for the lexan, ~$30 for the aluminum, and the rest for hardware (nuts, bolts, screws, velcro, etc). I wasn't trying to be as cheap as possible. I wanted to use quality materials and have an extremely solid result, yet not waste money or materials on anything unnecessary. you can pick the case up and shake it, or turn it upside down; nothing moves.
|
|
|
|
BkkCoins
|
|
September 01, 2011, 12:17:52 PM |
|
That's awesome. I'd love to know more about the script and if you plan to share it. I'm running Ubuntu with very similar setup but my rig is mounted in a wire shelf unit that cost $8 here. Maybe next phase would be something like this.
|
|
|
|
Reckman
|
|
September 01, 2011, 01:46:42 PM |
|
That's badass. Might get better airflow around the gpu if you sealed below the gpus as well
|
|
|
|
cicada
|
|
September 01, 2011, 02:23:50 PM |
|
That's badass. Might get better airflow around the gpu if you sealed below the gpus as well
I thought about this too. I was considering a very similar setup but with isolated GPU 'slots' - basically a box around each GPU. You can cut a slot in the lexan/acrylic/whatever for the PCIe connector to poke through, but otherwise it keeps each GPU from sucking down it's neighbor's heat, while efficiently exhausting it's own. Such a thing would work pretty well even in a 'traditional' closed case as long as you can push enough air through the GPU channels.
|
Team Epic!All your bitcoin are belong to 19mScWkZxACv215AN1wosNNQ54pCQi3iB7
|
|
|
BkkCoins
|
|
September 01, 2011, 02:31:04 PM |
|
On my Sapphire 5830s it blows quite a bit stronger out the back end of the card than the front (with the grill). So I would have though pulling from that end would be better than blowing into it as wouldn't that go directly against the direction the cards fans already blow? I'm curious if you tried it with the back end fans reversed and saw what difference it makes?
Wouldn't you want to get cool air into the center of each card where it intakes rather than directly against the hot air coming out? Just curious how much you experiments with this.
|
|
|
|
cicada
|
|
September 01, 2011, 03:04:44 PM |
|
On my Sapphire 5830s it blows quite a bit stronger out the back end of the card than the front (with the grill). So I would have though pulling from that end would be better than blowing into it as wouldn't that go directly against the direction the cards fans already blow? I'm curious if you tried it with the back end fans reversed and saw what difference it makes?
Wouldn't you want to get cool air into the center of each card where it intakes rather than directly against the hot air coming out? Just curious how much you experiments with this.
On these cards, the only direction the fans blow is 'into the heatsink'. The exhaust comes out whichever path has the least resistance, which by default happens to be the open 'rear' of the card rather than out the grill. A powerful fan can reverse this, but probably at an efficiency reduction. Sapphire's coolers work well for stand-alone cards, but when you've got a mess of them and need to actually try controlling the airflow, man they become a big PITA.
|
Team Epic!All your bitcoin are belong to 19mScWkZxACv215AN1wosNNQ54pCQi3iB7
|
|
|
loglow (OP)
Jr. Member
Offline
Activity: 69
Merit: 3
|
|
September 01, 2011, 08:47:52 PM |
|
That's badass. Might get better airflow around the gpu if you sealed below the gpus as well
this is something I'm considering. the lexan turned out to be so pleasant to work with that I might try to make a piece that mounts over the open back area of the case; this would direct the airflow even more and further lower the fan speeds. it would need some careful planning so as not to block ports, cables, or the power supply fan. thanks for the suggestion.
|
|
|
|
loglow (OP)
Jr. Member
Offline
Activity: 69
Merit: 3
|
|
September 01, 2011, 09:00:02 PM Last edit: September 01, 2011, 09:29:08 PM by loglow |
|
That's awesome. I'd love to know more about the script and if you plan to share it. I'm running Ubuntu with very similar setup but my rig is mounted in a wire shelf unit that cost $8 here. Maybe next phase would be something like this.
thank you. I'm happy to share it. the only change I've made to it here is that I removed a few lines that have to do with updating the rrd (round robin database) with some of the stats, since that action is very specific to my setup. the rest should work pretty well for general purposes. let me know if it doesn't, or if you have any questions about it. python 2.7 (instead of 2.6) was required for something, one of the modules I think, but I don't remember exactly what it was. python 2.6 works fine, I edited the #! line below to reflect this. #!/usr/bin/python
from re import findall, search from shlex import split from subprocess import Popen, PIPE from sys import stdout, argv from os import environ
# define target range for temps TEMP_COOL = 60 TEMP_LOW = 68 TEMP_HIGH = 72 TEMP_CRIT = 80
# define fan speeds limits FAN_MIN = 20 FAN_MAX = 100
# strings for all hardware polling commands GET_ADAPTERS = 'aticonfig --list-adapters' GET_TEMPS = 'aticonfig --odgt --adapter=all' GET_CLOCKS = 'aticonfig --odgc --adapter=all' GET_FANS = 'aticonfig --pplib-cmd "get fanspeed 0"' SET_FANS = 'aticonfig --pplib-cmd "set fanspeed 0 $"'
# make it easier to display terminal text in color TEXT_COLORS = ["black", "red", "green", "yellow", "blue", "magenta", "cyan", "white"] def textcolor(text, color): code = str(TEXT_COLORS.index(color) + 30) return "\033[0;" + code + "m" + text + "\033[m"
# get all current stats from the hardware (except fans) raw_adapters = Popen(split(GET_ADAPTERS), stdout=PIPE).communicate()[0] raw_temps = Popen(split(GET_TEMPS), stdout=PIPE).communicate()[0] raw_clocks = Popen(split(GET_CLOCKS), stdout=PIPE).communicate()[0]
# make a list of the adapter ids adapter_ids = findall(r"\*?\s+(\d)\.", raw_adapters)
# getting fan data is a bit specialized and requires some iteration raw_fans = {} for i in adapter_ids: n = int(i)
# the DISPLAY env var needs to be set before each fan is polled environ["DISPLAY"] = ":0." + i raw_fans[n] = Popen(split(GET_FANS), stdout=PIPE).communicate()[0]
# all of the parsed stats will be stored here adapters = []
# iterate over each adapter to parse stats and store them for i in adapter_ids: n = int(i)
# parse the stats with regex keeping things as adaptable as possible temp = search("(?s)" + "Adapter " + i + ".*?" + r"(\d+\.\d+)", raw_temps) clocks = search("(?s)" + "Adapter " + i + ".*?" + r"(\d+)\s+(\d+)" + ".*?" + r"(\d+)\s+(\d+)" + ".*?" + r"(\d+)%", raw_clocks) fan = search(r"(\d+)%", raw_fans[n])
# store the parsed data into the adapter list and convert types adapters.insert(n, {}) cur = adapters[n] cur["dev"] = n cur["temp"] = float(temp.group(1)) cur["core"] = int(clocks.group(1)) cur["mem"] = int(clocks.group(2)) cur["pcore"] = int(clocks.group(3)) cur["pmem"] = int(clocks.group(4)) cur["load"] = int(clocks.group(5)) cur["fan"] = int(fan.group(1)) cur["dfan"] = 0 # if temp is outside range then adjust the fan speed up or down def adjust_fan(cur): if cur["temp"] < TEMP_LOW: cur["dfan"] = -1 elif cur["temp"] > TEMP_HIGH: cur["dfan"] = 1 while cur["fan"] + cur["dfan"] < FAN_MIN: cur["dfan"] += 1 while cur["fan"] + cur["dfan"] > FAN_MAX: cur["dfan"] -= 1 if cur["dfan"] != 0: cur["fan"] += cur["dfan"] environ["DISPLAY"] = ":0." + str(cur["dev"]) command = SET_FANS.replace("$", str(cur["fan"])) Popen(split(command), stdout=PIPE)
# color the temp display based on its current value def color_temps(cur): color = "green" if cur["temp"] < TEMP_COOL: color = "blue" elif cur["temp"] < TEMP_LOW: color = "cyan" elif cur["temp"] > TEMP_CRIT: color = "red" elif cur["temp"] > TEMP_HIGH: color = "yellow" cur["temp"] = textcolor("%.1fC" % cur["temp"], color)
# stores the order, label, and format string of each output outputs = ( ("dev", "GPU%d"), ("temp", "%s"), ("load", "%d%%"), ("core", "%d"), ("pcore", "%d"), ("mem", "%d"), ("pmem", "%d"), ("fan", "%d%%"), ("dfan", "%+d%%"))
# print column headers and a row of data for each adapter # also, adjust fan speeds for each adapter if necessary for output in outputs: stdout.write(output[0] + "\t") stdout.write("\n") for adapter in adapters: adjust_fan(adapter) color_temps(adapter) for output in outputs: name = output[0] format = output[1] value = adapter[name] stdout.write(format % value + "\t") stdout.write("\n")
|
|
|
|
stryker
|
|
September 01, 2011, 09:11:20 PM |
|
nice script, works fine for me using python 2.6 on linuxcoin distro
|
|
|
|
loglow (OP)
Jr. Member
Offline
Activity: 69
Merit: 3
|
|
September 01, 2011, 09:18:17 PM |
|
I'm curious if you tried it with the back end fans reversed and saw what difference it makes? I haven't tried this yet, at least not with the hardware in its current setup. this would definitely be worth experimenting with, and if and when I do I'll share what kind of difference it makes. currently, the case fans are providing a significant flow of fresh air to the individual card fans, and except for the grille, it seems like the heat piped away from the core is more or less equally dispersed in each direction. the "slots" idea is also fascinating, essentially giving each gpu its own little independent air channel...something to think about.
|
|
|
|
loglow (OP)
Jr. Member
Offline
Activity: 69
Merit: 3
|
|
September 01, 2011, 09:27:45 PM |
|
nice script, works fine for me using python 2.6 on linuxcoin distro thanks I run it using the "watch" command so its persistent and gives real time stats. also, you're right, it works fine with python 2.6; I guess the 2.7 requirement was for something I'd been using at one point but ended up removing...I edited the original post
|
|
|
|
stryker
|
|
September 02, 2011, 07:49:32 AM |
|
@loglow haha me too watch is so handy.
BTW you ought to know, when you set your fans to a fixed speed as I do, your script puts them back to automatic speed.... I'm not sure why I've only just this min noticed so have not had time to look into it..... thought you ought to know tho.
|
|
|
|
loglow (OP)
Jr. Member
Offline
Activity: 69
Merit: 3
|
|
September 03, 2011, 01:50:33 AM |
|
BTW you ought to know, when you set your fans to a fixed speed as I do, your script puts them back to automatic speed.... I'm not sure why I've only just this min noticed so have not had time to look into it..... thought you ought to know tho. all you need to do is remove the "adjust_fan(adapter)" line near the bottom, or comment it out, and then the fans will just remain at whatever speed anything else has them set to.
|
|
|
|
critical
|
|
September 03, 2011, 04:21:47 AM |
|
try to put some fans at the EXHAUST of the card, help to exhaust out more heat from the hard
|
|
|
|
stryker
|
|
September 03, 2011, 05:16:23 PM |
|
I've never been one for sticking big fans right on top of the cards.... notice the cards tend to blow the air all over the place out the front and back.... so putting too much blow or suction right on top of a card probably just causes cavitation in the air around the cards vitals.
Now setting up a gentle air movement front to back or back to front does seem to work.
|
|
|
|
loglow (OP)
Jr. Member
Offline
Activity: 69
Merit: 3
|
|
September 04, 2011, 05:21:56 AM |
|
try to put some fans at the EXHAUST of the card, help to exhaust out more heat from the hard
I'm not sure if it needs more exhaust, to be honest. first, I'd like to try installing larger lexan panels on the front and back to get case a little less open-air and a little more contained. as it is, I'm happy with the temps, even on hot days like today. Now setting up a gentle air movement front to back or back to front does seem to work. I agree with this; I think it's all about the air moving in a consistent direction...
|
|
|
|
|