- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有使用恒定内存的设备/主机功能。它可以在设备上正常运行,但是在主机上似乎该内存尚未初始化。
#include <iostream>
#include <stdio.h>
const __constant__ double vals[2] = { 0.0, 1000.0 };
__device__ __host__ double f(size_t i)
{
return vals[i];
}
__global__ void kern()
{
printf("vals[%d] = %lf\n", threadIdx.x, vals[threadIdx.x]);
}
int main() {
std::cerr << f(0) << " " << f(1) << std::endl;
kern<<<1, 2>>>();
cudaThreadSynchronize();
}
0 0
vals[0] = 0.000000
vals[1] = 1000.000000
最佳答案
由于CygnusX1误解了我对MurphEngineer答案的评论的意思,所以也许我应该发布自己的答案。我的意思是这样的:
__constant__ double dc_vals[2] = { 0.0, 1000.0 };
const double hc_vals[2] = { 0.0, 1000.0 };
__device__ __host__ double f(size_t i)
{
#ifdef __CUDA_ARCH__
return dc_vals[i];
#else
return hc_vals[i];
#endif
}
cudaMemcpyToSymbol
/
cudsaMemcpyFromSymbol
)
__constant__
数组。
#include <iostream>
#include <stdio.h>
__constant__ double dc_vals[2];
const double hc_vals[2];
__device__ __host__ double f(size_t i)
{
#ifdef __CUDA_ARCH__
return dc_vals[i];
#else
return hc_vals[i];
#endif
}
__global__ void kern()
{
printf("vals[%d] = %lf\n", threadIdx.x, vals[threadIdx.x]);
}
int main() {
hc_vals[0] = 0.0;
hc_vals[1] = 1000.0;
cudaMemcpyToSymbol(dc_vals, hc_vals, 2 * sizeof(double), 0, cudaMemcpyHostToDevice);
std::cerr << f(0) << " " << f(1) << std::endl;
kern<<<1, 2>>>();
cudaThreadSynchronize();
}
关于CUDA主机和设备使用相同的__constant__内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9457572/
有什么区别,在 CUDA 程序中定义设备常量的最佳方法是什么?在 C++,主机/设备程序中,如果我想将常量定义在设备常量内存中,我可以这样做 __device__ __constant__ float
我没有向内核传递大量参数,而是使用了一个 __constant__ 变量。这个变量是一个结构数组,其中包含许多指向全局数据的指针(这些指针将是一个参数列表);用于调用内核的多个不同数据集的数组。然后内
我在 C# 中使用 ManagedCuda,但我有一个问题找不到答案...也许您可以帮助我。我读到在 C++ 和 CUDA 中你可以声明一个变量(它是一个数组),比如: __constant__ do
我在 C# 中使用 ManagedCuda,但我有一个问题找不到答案...也许您可以帮助我。我读到在 C++ 和 CUDA 中你可以声明一个变量(它是一个数组),比如: __constant__ do
我是 CUDA 编程新手。目前,我正在尝试构建一个使用 CUDA 并行处理数据的 OO 框架。我目前正在使用 CUDA 8.0。 有一些关键参数__constant__ int foo[3]需要所有线
我有一个数组,我想在 CUDA 设备上的 __constant__ 内存中初始化。直到运行时我才知道它的大小或值。 我知道我可以使用 __constant__ float Points[**N**][
我不明白为什么我会收到错误 dynamic initialization is not supported for __device__, __constant__, __shared__ varia
我对 CUDA 有点陌生,所以如果这是一个愚蠢的问题,请原谅我。我一直在阅读/观看很多教程,但它们都很困惑,但我认为我已经掌握了基本概念。无论如何,我正在尝试执行以下操作:我想在设备上初始化几个常量变
例如,如果您有一个简单的常量变量 __device__ __constant__ int MY_CONSTANT; 并且它被同一个内核线程多次访问: __global__ void move(int*
我在同一个问题上看到了很多答案,但从未找到解决方案。只有一些建议在 cudaMemcpyToSymbol(...) 等中使用 char simbol。 我使用来自 cudaMemcpyToSymbol
与 CUDA 一样,最基本的东西有时也是最难的…… 所以...我只想将一个变量从 CPU 复制到 GPU 的 常数 变量,我很难过。 这就是我所拥有的: __constant__ int contad
我正在尝试编译一个 CUDA 示例; cuda.cu: __constant__ unsigned VERTICES; __constant__ unsigned TRIANGLES; 以及main.
在共享内存编程模型中,任何全局变量对每个线程都是可见的。 在 CUDA 中,常量 内存的声明方式与共享内存系统中的全局变量类似,这让我有点担心: 考虑以下代码: __constant__ int ar
我正在尝试静态初始化 GPU 内存中的只读 std::map 变量,如下所示: // EXAMPLE 1: using namespace std; // first attempt: __devic
我是一名优秀的程序员,十分优秀!