日本电子维修技术 显卡2080TI采购被批准了,买哪块比较好



努力了一翻之后可以买几块试试。
之前还没给学校采购过东西,用来训练模型可能会长期高负载运行。
求推荐售后省事,散热好的2080TI……


评论
公版?

评论
买公版。。。

评论
黑东公版呗。。。

评论
你看,三个人同时发帖,不约而同。。。

评论
肯定公版啊

评论
如果你能抢到的话。。

评论
黑东公版呗

评论
华硕顶级非公那款,你值得拥有

评论

国庆前都不用指望能买到

评论
什么学校 这么土豪

评论
我觉得微星的好看些···公版这个版本实在是欣赏不来···没有半点线条感觉

评论
为什么都说公版……公版散热不咋地呀

评论

你不是一直阿苏斯阿苏斯的。怎么叛变了

评论

这种使用场景需要考虑卡片密度啊,又不是摆桌上随便跑着玩的塔式工作战站三槽三风扇也能塞进去反正一个工作站也就一块卡

正经跑用的机器里都是二三四块各种泰坦皮啊就那么点空间,大点的卡直接不用想
接下来,此处我根本不知道啊苏斯有啥卡,公版肯定塞的进去的,于是


评论
感觉这代不需要买公版,2080ti听说公版散热有降频,还是买散热再给力点的三奶吧,买保修长热管多点的就行。

评论
EVGA的一体水冷看着不错



评论
买公版,一是这次的公版散热效果非常好,二是均热板PCB及电子元件温度也低,非公往往是核心温度低,PCB VRM供电之类温度很高

评论
楼主要多卡,你们给推荐公版???
不如直上Quadro RTX


评论

2080ti还是压不住 降频了 公版用料这次是良心了 但是只能说现在显卡是谁大谁牛逼啊

评论
公版只能买2080,能压住而且差价不大,2080ti不管改水还是不改,都不用考虑公版,贵1000不说还降频,信仰和小机箱除外

评论

那是原来的涡轮

现在公版双风扇开放式散热了

评论

多卡跑计算的话,开放式散热不如原来的涡轮

评论

看了几家评测公版烤机都会过热降频

评论
公家东西  买保修方便的

评论

你换其他家非公一样过热降频

评论
怪不得现在学费那么贵

评论
也可以买公版,然后用延长线把显卡分开就行了。不好看就是了。但如果学校只让采购公版那也没办法。

评论
看标题以为是老婆批准,进来一看原来是科研批准

评论
既然批准了,当然捡最贵的买啊。反正被批准的不花自己钱。
现在单位也就学校采购经费好了,其它的头疼

评论

asus 有个涡轮扇子的卡,但估计散热吃不消,其他形状又是2.5槽的,我这也塞不下……

评论
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <cuda_runtime.h>
#include <assert.h>
#include <cudnn.h>
#include <stddef.h>
#include <iostream>
#include <time.h>
#include<vector>
// Linux
#include <sys/time.h>
#include <boost/multi_array.hpp>

using namespace std;

#define checkCUDNN(expression)                               \
  {                                                          \
    cudnnStatus_t status = (expression);                     \
    if (status != CUDNN_STATUS_SUCCESS) {                    \
      cerr << "Error on line " << __LINE__ << ": "           \
                << cudnnGetErrorString(status) << endl;      \
      exit(EXIT_FAILURE);                                    \
    }                                                        \
  }

double get_wall_time()
{
    struct timeval time;
    if (gettimeofday(&time,NULL)){
        return 0;
    }
    return (double)time.tv_sec + (double)time.tv_usec * .000001;
}

cudnnHandle_t cudnn;
cudnnTensorDescriptor_t input_descriptor;
cudnnTensorDescriptor_t output_descriptor;
cudnnFilterDescriptor_t kernel_descriptor;
cudnnConvolutionDescriptor_t convolution_descriptor;

float workspace_bytes;
void* d_workspace{nullptr};
float* d_dummy_input{nullptr};
float* d_dummy_kernel{nullptr};
float* d_output{nullptr};

void post(){
    cout << "version : CUDA runtime: " << cudnnGetVersion() << " | CuDNN: " << cudnnGetCudartVersion() << endl;
}

void initializeDescriptor(
                int batch_size,
                int input_channel,
                int output_channel,
                int input_height,
                int input_width,
                int output_height,
                int output_width,
                int kernel_height,
                int kernel_width,
                cudnnDataType_t dataType,
                cudnnMathType_t mathType){

        checkCUDNN(cudnnCreate(&cudnn));

    //TODO 3 : Input, Filter and Output descriptors (xDesc, yDesc, wDesc, dxDesc, dyDesc and dwDesc as applicable) have dataType = CUDNN_DATA_HALF.

    // INPUT
    checkCUDNN(cudnnCreateTensorDescriptor(&input_descriptor));
    checkCUDNN(cudnnSetTensor4dDescriptor(input_descriptor,
                                          /*format=*/CUDNN_TENSOR_NHWC/*batch_size | height | width | channel*/,
                                          /*dataType=*/dataType/*fp16*/,
                                          /*batch_size=*/batch_size,
                                          /*channels=*/input_channel,
                                          /*image_height=*/input_height,
                                          /*image_width=*/input_width));
    // OUTPUT
    checkCUDNN(cudnnCreateTensorDescriptor(&output_descriptor));
    checkCUDNN(cudnnSetTensor4dDescriptor(output_descriptor,
                                          /*format=*/CUDNN_TENSOR_NHWC,
                                          /*dataType=*/dataType,
                                          /*batch_size=*/batch_size,
                                          /*channels=*/output_channel,
                                          /*image_height=*/output_height,
                                          /*image_width=*/output_width));

    // KERNEL
    checkCUDNN(cudnnCreateFilterDescriptor(&kernel_descriptor));
    checkCUDNN(cudnnSetFilter4dDescriptor(kernel_descriptor,
                                          /*dataType=*/dataType,
                                          /*format=*/CUDNN_TENSOR_NCHW,
                                          /*out_channels=*/output_channel,
                                          /*in_channels=*/input_channel,
                                          /*kernel_height=*/kernel_height,
                                          /*kernel_width=*/kernel_width));

    // CONVOLUTION
    checkCUDNN(cudnnCreateConvolutionDescriptor(&convolution_descriptor));
    checkCUDNN(cudnnSetConvolution2dDescriptor(convolution_descriptor,
                                               /*pad_height=*/1/*zero-padding*/,
                                               /*pad_width=*/1/*zero-padding*/,
                                               /*vertical_stride=*/1,
                                               /*horizontal_stride=*/1,
                                               /*dilation_height=*/1/*holing, new kernel height = dilation_factor * ( original_height - 1 ) + 1*/,
                                               /*dilation_width=*/1/*dilation_factor = 1 means no change*/,
                                               /*mode=*/CUDNN_CROSS_CORRELATION,
                                               /*computeType=*/CUDNN_DATA_FLOAT));

    // TODO 1 : cudnnSetConvolutionMathType is called on the appropriate convolution descriptor setting mathType to CUDNN_TENSOR_OP_MATH.

    cudnnSetConvolutionMathType(convolution_descriptor, mathType);

}

void createDeviceData(
                int batch_size,
                int input_channel,
                int output_channel,
                int input_height,
                int input_width,
                int output_height,
                int output_width,
                int kernel_height,
                int kernel_width){

    // use 10GB GPU memory for workspace
    workspace_bytes = 10 * 1024.0f * 1024.0f * 1024.0f;
    cudaMalloc(&d_workspace, workspace_bytes);

    int dummy_input_bytes = batch_size * input_width * input_height * input_channel * sizeof(float);
    int output_bytes = dummy_input_bytes;

    // generate dummy input data
    boost::multi_array<float, 4> h_dummy_input(boost::extents[batch_size][input_height][input_width][input_channel]);
    for (int inner_batch_size = 0; inner_batch_size < batch_size; ++inner_batch_size) {
            for (int inner_height = 0; inner_height < input_height; ++inner_height) {
                    for (int inner_width = 0; inner_width < input_width; ++inner_width) {
                            for (int inner_channel = 0; inner_channel < input_channel; ++inner_channel) {
                                    h_dummy_input[inner_batch_size][inner_height][inner_width][inner_channel] = 0.12345f;
          }
        }
      }
    }

    cudaMalloc(&d_dummy_input, dummy_input_bytes);
    cudaMemcpy(d_dummy_input, h_dummy_input.data(), dummy_input_bytes, cudaMemcpyHostToDevice);

    // output data
    cudaMalloc(&d_output, output_bytes);
    cudaMemset(d_output, 0, output_bytes);

    // 3 by 3 dummy kernel
    float kernel_template[kernel_width][kernel_height] = {
      {1.1,  1.2, 1.3},
      {1.4, -1.5, 1.6},
      {1.7,  1.8, 1.9}
    };

    float h_dummy_kernel[input_channel][output_channel][kernel_width][kernel_height];
    for (int kernel = 0; kernel < input_channel; ++kernel) {
      for (int channel = 0; channel < output_channel; ++channel) {
        for (int row = 0; row < kernel_width; ++row) {
          for (int column = 0; column < kernel_height; ++column) {
            h_dummy_kernel[kernel][channel][row][column] = kernel_template[row][column];
          }
        }
      }
    }

    cudaMalloc(&d_dummy_kernel, sizeof(h_dummy_kernel));
    cudaMemcpy(d_dummy_kernel, h_dummy_kernel, sizeof(h_dummy_kernel), cudaMemcpyHostToDevice);

}

void freeDeviceData(){
        cudaFree(d_dummy_kernel);
        cudaFree(d_dummy_input);
        cudaFree(d_output);
        cudaFree(d_workspace);
}

int main( int argc, char** argv )
{

        post();

    //TODO 4 : The number of Input and Output feature maps is a multiple of 8.

    int batch_size_hparam[1] = {128};
    int input_channel_hparam[1] = {8};
    int input_height_hparam[14] = {32, 40, 48, 56, 64, 80, 96, 112, 128, 152, 176, 200, 224, 256};

    int kernel_height = 3;
    int kernel_width = kernel_height;

    for(int x = 0; x < 1; x++){

            int batch_size = batch_size_hparam[x];

        for(int y = 0; y < 1; y++){

                int input_channel = input_channel_hparam[y];
                int output_channel = input_channel;

            for(int z = 0; z < 14; z++){
                    int input_height = input_height_hparam[z];
                    int input_width = input_height;
                    int output_height = input_height;
                    int output_width = output_height;

                    // cout << "hyper-param: batch_size = " << batch_size << " | input_channel = " << input_channel << " | input_height = " << input_height << endl;

                initializeDescriptor(
                                batch_size,
                                input_channel,
                                output_channel,
                                input_height,
                                input_width,
                                output_height,
                                output_width,
                                kernel_height,
                                kernel_width,
                                CUDNN_DATA_HALF,
                                CUDNN_DEFAULT_MATH);

                createDeviceData(
                                batch_size,
                                input_channel,
                                output_channel,
                                input_height,
                                input_width,
                                output_height,
                                output_width,
                                kernel_height,
                                kernel_width);

                    double start_time = get_wall_time();
                    // execute
                    const float alpha = 1, beta = 0;
                for(int i = 0; i < 10000; i++){

                        // TODO 2 : cudnnConvolutionForward is called using algo = CUDNN_CONVOLUTION_FWD_ALGO_IMPLICIT_PRECOMP_GEMM.
                        checkCUDNN(cudnnConvolutionForward(cudnn,
                                                              &alpha,
                                                              input_descriptor,
                                                              d_dummy_input,
                                                              kernel_descriptor,
                                                              d_dummy_kernel,
                                                              convolution_descriptor,
                                                              CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD,
                                                              d_workspace,
                                                              workspace_bytes,
                                                              &beta,
                                                              output_descriptor,
                                                              d_output));
                }
                    double end_time = get_wall_time();

                    // cout<<"time cost : "<< end_time - start_time <<"s." << endl;
                    cout<< end_time - start_time <<endl;

                    freeDeviceData();


            }
        }
    }

    cudnnDestroyTensorDescriptor(input_descriptor);
    cudnnDestroyTensorDescriptor(output_descriptor);
    cudnnDestroyFilterDescriptor(kernel_descriptor);
    cudnnDestroyConvolutionDescriptor(convolution_descriptor);
    cudnnDestroy(cudnn);
}复制代码测试代码。就等着你测了。


评论

用法:
https://www.chiphell.com/thread-1839986-1-1.html

具体不一样的地方:
无需来回调mathtype_t,设置为CUDNN_TENSOR_OP_MATH_ALLOW_CONVERSION即可。代码中的TODO 1。
tensor core现在可以与CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD_NONFUSED一起用了,不仅是CUDNN_CONVOLUTION_FWD_ALGO_IMPLICIT_PRECOMP_GEMM。代码中的TODO 2。


评论

好的…卡到了我试试(学校采购要很久…… 电路 电子 维修 我现在把定影部分拆出来了。想换下滚,因为卡纸。但是我发现灯管挡住了。拆不了。不会拆。论坛里的高手拆解过吗? 评论 认真看,认真瞧。果然有收 电路 电子 维修 求创维42c08RD电路图 评论 电视的图纸很少见 评论 电视的图纸很少见 评论 创维的图纸你要说 版号,不然无能为力 评论 板号5800-p42ALM-0050 168P-P42CLM-01
 ·日本中文新闻 唐田绘里香为新剧《极恶女王》剃光头 展现演员决心
·日本中文新闻 真子小室夫妇新居引发隐私担忧
·日本中文新闻 前AKB48成员柏木由纪与搞笑艺人交往曝光
·日本学校 {日本国际学校}梅田インターナショナルスクール
·日本学校 LINE:sm287 陳雨菲、20歳、台湾からの留学生、東京に来たばかり
·日本留学生活 出售平成22年走行48000km 代步小车
·日本华人网络交流 円相場 一時1ドル=140円台まで上昇?
·日本华人网络交流 问日本华人一个问题
·日本旅游代购 富山接机
 ·生活百科 英国转澳大利亚转换插头
·汽车 【求助】修车遇到困难怎么办?

维修经验

CPUcpu-z 1.77版低调发布

日本维修技术更新: New benchmark “submit and compare” feature New clocks dialog reporting all system’s clock speeds in real-time Preliminary support for Intel Kaby Lake AMD Bristol Ridge processors 主要是增加了支持I、A两个新架构的 ...

维修经验

CPU这几天经常开机黑屏,热重启后又正常

日本维修技术这几天经常开机黑屏,热重启后又正常,今天热重启也不管用了。折腾半天总算点亮,显示超频失败,以前出这个画面我是不理它的,直接重启就能正常进系统了,今天不敢托大,因为 ...

维修经验

CPU超频求助!关于华擎H170和6700K

日本维修技术问题见楼主的show贴 https://www.chiphell.com/thread-1634895-1-1.html 这次华擎的H170 Hyper最大的特色应该是自带时钟发生器可以自由超外频 可是楼主好久没有折腾超频了。。。 两图中除了CPU外频 以 ...

维修经验

CPU液态金属会侵蚀cpu核心吗?

日本维修技术前阵子看到有人说,液态金属时间长了会侵蚀cpu铜盖,那么问题来了,这货会不会侵蚀核心呢? 评论 这玩意儿好像只对铝起反应 评论 不是说,cpu的盖子是铜的吗。。。 评论 不会,核 ...

维修经验

CPUm6i究竟支不支持e3 1231v3

日本维修技术官网上看支持列表没写有e3 1231v3,装机帖又有人晒,百度也没个明确答案,那究竟能不能点亮?有在用的chher说一下么 评论 升级最新bios肯定可以支持 评论 我的p67evo官网上也没说支持12 ...

维修经验

CPU华擎 HYPER 妖板 正确玩法

日本维修技术600元的 B150,10相供电,释放洪荒之力 注意必须官网 Beta 区的 BIOS 有 AVX 的 CPU 可能会掉缓存 启动时按 X 键激活 SKY OC,重启后进入 BIOS 160924164727.jpg (95.63 KB, 下载次数: 1) 2016-9-24 17:47 上传 ...

维修经验

CPUE5 2686 V3和i7 6800K如何选择

日本维修技术默认用,不超频,两者功耗是一模一样的 E5 2686 V3:2.0主频,3.5睿频, 18核心36线程 ,45M L3 咸鱼大约2500~3000元 i7 6800K : 3.5主频,3.8睿频 ,6核心12线程 ,盒装3000元 评论 性能应该是26 ...

维修经验

CPUHD530硬解4K能力还是有点弱呀!

日本维修技术播放器用PotPlay 64bit,各种优化后,跑4K @120Hz视频只能到70帧左右的速度,勉强能用! 显示器用的4K的优派VP2780 未标题-1.jpg (211.97 KB, 下载次数: 0) 2016-9-26 21:29 上传 评论 这个估计你没优化 ...

维修经验

CPU6900k 1.25V到4.2体质怎么样

日本维修技术如图,体质怎么样,ring是35,没敢试了,都说ring高了毁硬件 评论 不错的U,但不算雕,上4.4就大雕了,这电压上4.5的目前没见有人发图 评论 谢谢前辈告知 评论 我这个用1.2V超的4.2,R ...

维修经验

CPUI3 6100 华擎B150M pro4超4.5g测试。

日本维修技术看看论坛没多少i3 6100的帖子,就转下自己发的show贴里面的数据,给大家参考下。家里还有当年的神U i3 540 oc 4.5G在给老妈用。 不知道数据上正常吗?有6100的朋友可以告诉下,另外是不有 ...

维修经验

CPU7系u会兼容100系主板吗?

日本维修技术RT,听说要推200系板,100系还能用吗以后。。 评论 兼容的 评论 感谢!以后换u就行了,目前消息200系板会有新的特性吗? 评论 24条PCI-E 3.0通道、支持Intel Optane混合存储技术、十个USB 3 ...

维修经验

CPU有心入5820k了,求教下温度问题

日本维修技术一直徘徊在6700k和5820k之间,6700k现在这德行直接把我推向了5820k啊,从2600k升级上来,三大件都要换,现在唯一疑惑的是IB-E ex这种顶级风冷能不能压住4.5g的5820呢?毕竟刚刚买一个多月。 ...

维修经验

CPU6600&amp;6600K才100的差价

日本维修技术太少了吧。。。 6600.JPG (106.91 KB, 下载次数: 0) 2016-10-1 10:30 上传 评论 毕竟只是i5而已…… 评论 上z170 6600也能超,等于没区别,差价能有100已经不错了 评论 然后又见不超频人士推荐超频 ...