小编Ade*_*ler的帖子

关于数据并行编程和算法的好书和资源

我已经阅读了以下和大多数NVIDIA手册和其他内容.我去年也参加了GTC的论文和会谈.

CUDA示例:通用GPU编程简介

大规模并行处理器编程:实践方法

我知道最新的GPU Computing Gems Emerald Edition但尚未阅读.

您会推荐哪些其他书籍和资源?例如,我确信80年代的第一波数据并行编程(连接机器等)有一些很棒的内容.我知道对这一代硬件的数据并行算法进行了大量研究.

跟进... 30/Mar/2011

我还发现GPU Gems第1-3册有一些关于GPU计算的章节,而不仅仅是图形.它们可以在线免费获得,http://developer.nvidia.com/object/gpu_gems_home.html.我还没有机会读它们.

algorithm design-patterns gpu gpgpu gpu-programming

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

解决Thrust/CUDA警告"无法分辨指针指向哪个......"

我正在尝试使用Thrust/CUDA 4.0构建一个简单的应用程序并获得大量警告"警告:无法告诉指针指向哪个,假设全局内存空间"

有没有其他人看过这个,我如何禁用它们或修复我的代码?

谢谢,

阿德

这是我的代码.

Hello.h

class DECLSPECIFIER Hello   
{ 
private:
    thrust::device_vector<unsigned long> m_device_data;

public:
    Hello(const thrust::host_vector<unsigned long>& data);
    unsigned long Sum();
    unsigned long Max();
};
Run Code Online (Sandbox Code Playgroud)

Hello.cu

#include "Hello.h"

Hello::Hello(const thrust::host_vector<unsigned long>& data)
{
    m_device_data = data;
}

unsigned long Hello::Sum()
{
    return thrust::reduce(m_device_data.cbegin(), m_device_data.cend(), 0, thrust::plus<unsigned long>());
}

unsigned long Hello::Max()
{
    return *thrust::max_element(m_device_data.cbegin(), m_device_data.cend(), thrust::less<unsigned long>());
}
Run Code Online (Sandbox Code Playgroud)

输出

1>  Compiling CUDA source file Hello.cu...
1>  
1>  C:\SrcHg\blog\HelloWorld\HelloWorldCuda>"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.0\bin\nvcc.exe" -gencode=arch=compute_10,code=\"sm_10,compute_10\" --use-local-env --cl-version 2008 -ccbin "C:\Program …
Run Code Online (Sandbox Code Playgroud)

cuda visual-studio-2010 thrust

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

如何模拟MongoDB对象来测试我的数据模型?

我正在使用以下逻辑(MOQ)来尝试模拟MongoDB csharp驱动程序对象:

var svr = new Mock<MongoServer>(new MongoServerSettings());
var db = new Mock<MongoDatabase>(svr.Object, new MongoDatabaseSettings("hf_test", 
new MongoCredentials("hf_test", "hf_pass"), GuidRepresentation.Standard,
                                                 SafeMode.False, false));
Run Code Online (Sandbox Code Playgroud)

当我调用db.Object时,MOQ尝试创建我的模拟MongoDatabase的实例,但它失败并带有空引用异常.

注意:我正在考虑创建一个IMongoCollection接口,并将MongoCollection包装在它的实例中.然后,我可以简单地嘲笑......但这似乎是一大堆不必要的工作.

moq mongodb c#-4.0 mongodb-.net-driver

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

将数据从 GPU 复制到 CPU

我正在尝试使用 C++ AMP 计算矩阵。我使用宽度和高度为 3000 x 3000 的数组,并重复计算过程 20000 次:

    //_height=_width=3000
    extent<2> ext(_height,_width);
    array<int, 2> GPU_main(ext,gpuDevice.default_view);
    array<int, 2> GPU_res(ext,gpuDevice.default_view);
    copy(_main, GPU_main);
    array_view<int,2> main(GPU_main);
    array_view<int,2> res(GPU_res);
    res.discard_data();
    number=20000;
    for(int i=0;i<number;i++)
    {
        parallel_for_each(e,[=](index<2> idx)restrict(amp)
        {
           res(idx)=main(idx)+idx[0];//not depend from calculation type
        }
    array_view<TYPE, 2>  temp=res;
    res=main;
    main=temp;
    }
    copy(main, _main);
Run Code Online (Sandbox Code Playgroud)

在计算之前,我将矩阵从主机内存复制到 GPU 内存,并创建一个array_view从 0 到 7 的代码行。

之后,我启动一个循环来计算某些操作并重复 20000 次。每次迭代我都会启动一个parallel_for_each使用 C++ AMP 进行计算的循环。

GPU计算速度非常快,但是当我将结果复制到主机时,array _main我发现这个操作需要很多时间,而且我发现如果我number从20000减少到2000,复制的时间也会减少。

为什么会出现这种情况,是同步问题吗?

c++-amp

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

Parallel.Foreach维护收集顺序?

使用时有没有办法保证订单Parallel.ForEach()?我正在循环的集合需要保持它的顺序,但我正在寻找一些性能改进.

parallel-processing asp.net-4.0 task-parallel-library parallel-for

3
推荐指数
3
解决办法
8730
查看次数

Openmp - 嵌套 for 循环

如何安全地线程化下面的嵌套 for 循环,以便在具有 8 个线程的核心上并行运行程序,并且仍然以正确的顺序输出数据。我尝试使用#pragma omp for命令,但这给了我一条错误消息:工作共享区域可能不会紧密嵌套在工作共享、关键或显式任务区域内

注意:此代码是并行编程的入门,所以为了优化,写得不好

#pragma omp parallel private(t, i, j) shared(nx, ny, nt)
{
    // main loop

    for (int t = 0; t < nt; t++)
    {
        cout << "\n" << t;
        cout.flush();

        // first block 

        for (int i = 0; i < nx; i++)
        {
            for(int j=0; j < ny ;j++)
            {
                if (i> 0 && i < nx - 1 && j >0 && j < ny - 1) 
                { …
Run Code Online (Sandbox Code Playgroud)

c++ parallel-processing multithreading for-loop openmp

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