コード例 #1
0
ファイル: stream.py プロジェクト: joppevos/GPUmonitor
def open_streams(stream_id, gpumap):
    """ Open each given stream and start streaming"""
    for s in stream_id:
        st = py.Stream(s)
        st.open()
    streamdict = {}
    start = time.time()
    for gpu in gpu_info():
        listofstreams = gpumap.get(gpu.id)
        for i in range(3):
            st0 = py.Stream(listofstreams[0]['token'])
            st1 = py.Stream(listofstreams[1]['token'])
            st2 = py.Stream(listofstreams[2]['token'])

            st0.open()
            st1.open()
            st2.open()

            streamdict[gpu.id] = [st0, st1, st2]
    a = time.time() - start

    while True:
        x = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
        for gpu in gpu_info():
            streamdict[gpu.id][0].write(dict(x=x, y=memory(gpu.id)))
            streamdict[gpu.id][1].write(dict(x=x, y=temperature(gpu.id)))
            streamdict[gpu.id][2].write(dict(x=x, y=load(gpu.id)))

        time.sleep(3)
コード例 #2
0
ファイル: stream.py プロジェクト: joppevos/GPUmonitor
def plot():
    """ main func. get tokens, init plot and stream"""
    stream_id = stream_ids()
    fig = tools.make_subplots(rows=2, cols=2)

    streams = []
    # create list of streams
    for i in stream_id:
        temp = dict(token=i, maxpoints=1000)
        streams.append(temp)

    gpumap = {}
    # assign streams to each gpu in dict
    for gpu, i in zip(gpu_info(), range(0, 18, 3)):
        t = []
        s1 = streams[i]
        s2 = streams[i + 1]
        s3 = streams[i + 2]
        t = [s1, s2, s3]
        gpumap[gpu.id] = t

    append_traces(fig, gpumap)
    set_layout(fig)
    unique_url = py.plot(fig, filename='render')

    open_streams(stream_id, gpumap)
コード例 #3
0
ファイル: stream.py プロジェクト: joppevos/GPUmonitor
def append_traces(fig, gpumap):
    """append each gpu's 3 traces to a plot"""
    colorway = [
        '#007CFF', '#00FCFF', '#FF2200', '#87FF00', '#0300FF', '#8300FF',
        '#FFC100', '#A200FF', '#FF005D'
    ]
    c = 0
    for gpu in gpu_info():
        listofstreams = list(gpumap.get(gpu.id))
        mem = go.Scatter(x=[],
                         y=[],
                         mode='lines+markers',
                         stream=listofstreams[0],
                         name=(f'gpu{gpu.id+1}'),
                         line=dict(color=colorway[c]))  # 1 per trace
        temp = go.Scatter(x=[],
                          y=[],
                          mode='lines+markers',
                          stream=listofstreams[1],
                          name=(f'gpu{gpu.id+1}'),
                          line=dict(color=colorway[c]))  # 1 per trace
        load = go.Scatter(x=[],
                          y=[],
                          mode='lines+markers',
                          stream=listofstreams[2],
                          name=(f'gpu{gpu.id+1}'),
                          line=dict(color=colorway[c]))  # 1 per trace

        fig.append_trace(mem, 1, 1)
        fig.append_trace(temp, 1, 2)
        fig.append_trace(load, 2, 1)
        c += 1
コード例 #4
0
ファイル: stream.py プロジェクト: joppevos/GPUmonitor
def load(ids):
    """ returns average load of the GPUs"""
    gpus = gpu_info()
    result = {}
    for g in gpus:
        if g.id == ids:
            result = g
            break
    return result.load * 100
コード例 #5
0
ファイル: stream.py プロジェクト: joppevos/GPUmonitor
def memory(ids):
    gpus = gpu_info()
    result = {}
    for g in gpus:
        if g.id == ids:
            result = g
            break
    percent = (result.memoryUsed / result.memoryTotal) * 100
    return percent
コード例 #6
0
ファイル: stream.py プロジェクト: joppevos/GPUmonitor
def temperature(ids):
    """ returns average temperature of the GPUs"""
    gpus = gpu_info()
    result = {}
    for g in gpus:
        if g.id == ids:
            result = g
            break
    return result.temperature