小编Eug*_*ith的帖子

NVIDIA与AMD:GPGPU性能

我想听听有两种编码经验的人的意见.我自己,我只有NVIDIA的经验.

NVIDIA CUDA似乎比竞争对手更受欢迎.(只计算这个论坛上的问题标签,'cuda'优于'opencl'3:1,'nvidia'优于'ati '15:1,并且根本没有'ati-stream'标签.

另一方面,根据维基百科,ATI/AMD显卡应该具有更大的潜力,特别是每美元.目前市场上最快的NVIDIA显卡,GeForce 580(500美元),评级为1.6单精度TFlops.AMD Radeon 6970的售价为370美元,售价为2.7 TFlops.580具有512个执行单元,772 MHz.6970具有1536个执行单元,频率为880 MHz.

AMD相对于NVIDIA的纸张优势有多现实,是否可能在大多数GPGPU任务中实现?整数任务会发生什么?

cuda gpgpu nvidia ati opencl

103
推荐指数
7
解决办法
5万
查看次数

最快的128位整数库

我正在研究CPU繁重的数值计算应用程序.没有进入很多细节,它是一个计算数学研究项目,涉及为大整数x计算某个函数f(x).

现在,所有内容都是在x64模式下使用C++实现的,使用本机64位整数.这限制了我x <2 ^ 64~1.8*10 ^ 19.我想更进一步,为此,我需要一个执行128位算术的库.它必须非常快.特别是,整数除法应该很快.否则我会坐在这里等待结果直到感恩节.而且我宁愿不重新发明轮子.

我在维基百科上找到了一个大约20个大整数库的列表,但其中大多数似乎都是针对任意精度的数字,这对我的任务来说太过分了,我不需要额外的费用.

有谁知道哪个库可以最快地运行128位整数?

c c++ numerical biginteger

14
推荐指数
2
解决办法
1万
查看次数

HTML5视频和部分范围的HTTP请求

我正在尝试修改自定义Web服务器应用程序以使用HTML5视频.

它提供带有基本<video>标记的HTML5页面,然后它需要处理实际内容的请求.

到目前为止,我能让它工作的唯一方法是将整个视频文件加载到内存中,然后在一个响应中将其发回.这不是一个实用的选择.我想逐件服务:发送回来,比方说,100 kb,等待浏览器请求更多.

我看到一个带有以下标题的请求:

http_version = 1.1
request_method = GET

Host = ###.###.###.###:##
User-Agent = Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20100101 Firefox/16.0
Accept = video/webm,video/ogg,video/*;q=0.9,application/ogg;q=0.7,audio/*;q=0.6,*/*;q=0.5
Accept-Language = en-US,en;q=0.5
Connection = keep-alive
Range = bytes=0-
Run Code Online (Sandbox Code Playgroud)

我试图发回部分内容回复:

HTTP/1.1 206 Partial content
Content-Type: video/mp4
Content-Range: bytes 0-99999 / 232725251
Content-Length: 100000
Run Code Online (Sandbox Code Playgroud)

我得到了一些GET请求,如下所示

Cache-Control = no-cache
Connection = Keep-Alive
Pragma = getIfoFileURI.dlna.org
Accept = */*
User-Agent = NSPlayer/12.00.7601.17514 WMFSDK/12.00.7601.17514
GetContentFeatures.DLNA.ORG = 1
Host = ###.###.###.###:##
Run Code Online (Sandbox Code Playgroud)

(没有迹象表明浏览器需要文件的任何特定部分.)无论我发送回浏览器,视频都不会播放.

如上所述,如果我尝试在同一HTTP数据包中一次发送整个230 MB文件,则相同的视频将正常播放.

有没有办法让这一切都通过部分内容请求很好地工作?我正在使用Firefox进行测试,但它最终需要与所有浏览器一起使用.

video html5 http

11
推荐指数
1
解决办法
2万
查看次数

循环内的OpenMP同步

我有一个生成数据的大循环.每次迭代需要1秒钟,然后产生一大块数据.我需要以正确的顺序写入文件的所有块.

如果我只想并行化循环,我可以写这样的东西(高度简化):

    FILE* f = fopen("output.txt", "w");
    omp_lock_t lock;
    omp_init_lock(&lock);
    int nIterations = 1000000;
#pragma omp parallel for
    for(int thread=0; thread<4; thread++)
    {
        int a=0, b=0, c=0;
        for(int n=thread; n<nIterations; n+=4)
        {
            int value = do_computations(&a, &b, &c);
            omp_set_lock(&lock);
            fprintf(f, "%d\n", value);
            omp_unset_lock(&lock);
        }
    }
#pragma omp barrier
    fclose(f);
    omp_destroy_lock(&lock);
Run Code Online (Sandbox Code Playgroud)

这会将我的输出输入到文件中,但不保证条目的顺序.

我想同步执行,以便所有线程完成他们的任务,然后主线程写入文件,然后线程恢复.换句话说,我想要这样的事情:

    #pragma omp parallel for
        for(int thread=0; thread<4; thread++)
        {
            int a=0, b=0, c=0;
            int values[4];
            for(int n=thread; n<nIterations; n+=4)
            {
                values[n] = do_computations(&a, &b, &c);
#pragma omp barrier …
Run Code Online (Sandbox Code Playgroud)

c openmp

5
推荐指数
1
解决办法
9304
查看次数

使用自动生成的值初始化 C++ 向量的最短方法

我想知道最近修订的 C++ 标准中是否有任何内容可以让我构造一个向量,并用最少的击键(最好是在一行中)用自动生成的值(例如,来自 RNG)填充它。

我能想到的最好的是

int N=1000;
std::default_random_engine rng;
std::uniform_int_distribution<int> distr(0,99);

vector<int> v(N);
std::generate(v.begin(), v.end(), std::bind(distr,rng));
Run Code Online (Sandbox Code Playgroud)

或者

std::generate_n(v.begin(), N, std::bind(distr,rng));
Run Code Online (Sandbox Code Playgroud)

但它太长了,实际上需要更少的击键来编写显式初始化循环:

    for(auto& x: v)
        x=distr(rng);
Run Code Online (Sandbox Code Playgroud)

我特别不喜欢那里有 .begin() 和 .end() 。

似乎没有正确的向量构造函数能够采用函子初始值设定项,但也许还有其他方法。

c++ stl

5
推荐指数
0
解决办法
290
查看次数

通过Keras使用大于2 Gb的数据集

TensorFlow在单个张量上长期存在2 Gb的限制。这意味着您不能一次跳过超过2 Gb的数据来训练模型。请参见使用大于2GB的数组初始化tensorflow变量在Tensorflow中使用大型数据集

这些帖子中引用的标准解决方案是使用占位符,并将其通过feed_dict传递给“会话”:

my_graph = tf.Graph()
sess = tf.Session(graph=my_graph)   
X_init = tf.placeholder(tf.float32, shape=(m_input, n_input))
X = tf.Variable(X_init)
sess.run(tf.global_variables_initializer(), feed_dict={X_init: data_for_X})
Run Code Online (Sandbox Code Playgroud)

但是,这仅在我使用“旧” API(tf.Session()等)时才有效。如今,推荐的方法是使用Keras(tensorflow.org上的所有教程都使用它)。而且,对于Keras,没有tf.Graph(),tf.Session()和run()(至少没有一个用户容易看到的)。

如何修改以上代码以与Keras配合使用?

python keras tensorflow

1
推荐指数
1
解决办法
595
查看次数

标签 统计

c ×2

c++ ×2

ati ×1

biginteger ×1

cuda ×1

gpgpu ×1

html5 ×1

http ×1

keras ×1

numerical ×1

nvidia ×1

opencl ×1

openmp ×1

python ×1

stl ×1

tensorflow ×1

video ×1