小编nik*_*ack的帖子

在运行时添加新3D对象的最佳方法

到目前为止,我一直在创建期间创建3D对象.但现在我需要动态添加它们.什么可以更简单,我想...

现在的主要问题是如何以最快的方式上传新对象的数据并找出数据上传的时间.

这是我的设置:

  • 我正在使用vulkan内存分配器库,所以我是自由形式的内存管理负担.
  • 我打算VkBuffer为每个对象使用一个单独的 - 这样我就不需要管理偏移,对齐,并且添加/删除对象会更容易.

这是我的想法/问题:

  1. 如何上传数据?我希望缓冲区只能是gpu-visible,这意味着我需要一个临时缓冲区.
  2. 如果我使用临时缓冲区,我需要知道数据何时可以在gpu上使用.我不想冲洗管道并等待.我看到的唯一方法是对每个对象使用一个围栏,并且只draw在该围栏准备就绪时调用该命令.
  3. 如果我使用临时缓冲区并希望在短帧期间上传多个对象,我需要以某种方式确保此临时缓冲区的各个部分不被不同的对象覆盖.为此,我需要保持它的大,处理偏移的对齐.但有多大?

我很确定我太复杂了.我相信应该有一个更简单的模式.你会怎么做?

vulkan

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

来自/到统一内存的 memcpy 是否表现出同步行为?

在下面的代码中:

__managed__ int mData[1024];

void foo(int* dataOut)
{
    some_kernel_that_writes_to_mdata<<<...>>>();
    // cudaDeviceSynchronize() // do I need this synch here?
    memcpy(dataOut, mData, sizeof(int) * 1024);

    ...

    cudaDeviceSynchronize();
}
Run Code Online (Sandbox Code Playgroud)

我需要kernel和之间的同步吗memcpy

cudaMemcpy文档提到该函数在大多数用例中表现出同步行为。但是来自/到托管内存的“正常”情况又如何呢? memcpy在我的测试中,同步似乎是隐式发生的,但我在文档中找不到这一点。

cuda

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

与 SIMD 内在函数进行比较和交换

如果发生某种情况,是否可以在 SIMD 指令中进行比较并交换值。换句话说,我有 4 个整数:

(100 5) (1 42)
Run Code Online (Sandbox Code Playgroud)

我想收到:

(5 100) (1 42)
Run Code Online (Sandbox Code Playgroud)

即我想成对比较(第一个值与第二个值,第三个值与第四个值),如果左操作数更大 - 交换值。是否可以只使用 1 个 SIMD?

PS:这是我第一次尝试 SIMD,可能我使用了错误的术语 - 如果我错了,请纠正我。

c++ simd

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

long float c ++ visual studio 2013

我已经开始用Stroustrup的C++编程书 - 数据类型学习C++.它表示对于浮点类型语言有float,double,long double类型.但是这个程序对我有好处:

long float float2{ 5.0F };
cout << float2 << endl;

cout << "size of long float: " << sizeof(long float) << endl; // 8

std::cout << "min long float value: " << (long float)std::numeric_limits<long float>::min() << std::endl; // 2.22507e-308
std::cout << "max long float value: " << (long float)std::numeric_limits<long float>::max() << std::endl << std::endl; // 1.79769e+308
Run Code Online (Sandbox Code Playgroud)

即与double相同.那有什么区别?据我所知,之前没有这种类型 - 长浮动.它是微软编译器功能吗?这是一个新标准吗?

c++ floating-point

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

有很多原子是好还是坏?

这个问题与我以前有关.我做了一些测试,并发现拥有充满原子的数组比我之前使用互斥锁的方法快得多.但拥有数百万只它可以吗?也许有些东西我根本不知道?

c++ atomic c++11

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

标签 统计

c++ ×3

atomic ×1

c++11 ×1

cuda ×1

floating-point ×1

simd ×1

vulkan ×1