如何使用 python 中的位移位指定 3GB?
How to specify 3GB using bit shift in python?
我正在 Jetson TX2 中分配内存。它有 8GB 的内存。
我需要指定可用于 TensorRT 的最大 GPU 内存大小。
max_workspace_size_bytes = (has to be an integer)
我看过一些使用这些的示例 "values":
1<<20 = 1048576 (decimal)
= 0001 0000 0000 0000 0000
1<<30 = 1073741824
= 0001 0000 0000 0000 0000 0000 0000
但是如果我有8GB RAM,“1048576”或“1073741824”怎么能代表RAM的一部分呢?
我用这个分配了3GB:
3*(10**9)
但我想了解表示数字的另一种方式。
你可以总结一下。
((1<<30)+(1<<31))
或按位或它们。
((1<<30) | (1<<31))
或者移动一个大于 1 的值,例如3.
(3<<30)
3GB = 3,221,225,472
1100 0000 0000 0000 0000 0000 0000 0000
3<<30 = 3GB
也许您遇到了 "Gb vs Gib" 问题。通常,3 Gigas 的 RAM 是指 3,221,225,472 字节而不是 3,000,000,000。
第一个值是 3 * (2^10)*(2^10)*(2^10),一个漂亮的 3 (11) 后跟 30 个零的二进制表示,而第二个是 3 * ( 10^3)(10^3)(10^3),二进制乱七八糟
这种使用 2 的幂而不是 10 的幂的约定是您会看到人们将 3Gb 写成 3 << 30
:
的原因
3 << 30 == 3 * (1 << 10) * (1 << 10) * (1 << 10)
== 3 * (2**10 * 2**10 * 2**10)
== 3 * (2**30)
如果您想了解更多信息,related question and a good Wikipedia article 关于这个问题。
我正在 Jetson TX2 中分配内存。它有 8GB 的内存。 我需要指定可用于 TensorRT 的最大 GPU 内存大小。
max_workspace_size_bytes = (has to be an integer)
我看过一些使用这些的示例 "values":
1<<20 = 1048576 (decimal)
= 0001 0000 0000 0000 0000
1<<30 = 1073741824
= 0001 0000 0000 0000 0000 0000 0000
但是如果我有8GB RAM,“1048576”或“1073741824”怎么能代表RAM的一部分呢?
我用这个分配了3GB:
3*(10**9)
但我想了解表示数字的另一种方式。
你可以总结一下。
((1<<30)+(1<<31))
或按位或它们。
((1<<30) | (1<<31))
或者移动一个大于 1 的值,例如3.
(3<<30)
3GB = 3,221,225,472
1100 0000 0000 0000 0000 0000 0000 0000
3<<30 = 3GB
也许您遇到了 "Gb vs Gib" 问题。通常,3 Gigas 的 RAM 是指 3,221,225,472 字节而不是 3,000,000,000。
第一个值是 3 * (2^10)*(2^10)*(2^10),一个漂亮的 3 (11) 后跟 30 个零的二进制表示,而第二个是 3 * ( 10^3)(10^3)(10^3),二进制乱七八糟
这种使用 2 的幂而不是 10 的幂的约定是您会看到人们将 3Gb 写成 3 << 30
:
3 << 30 == 3 * (1 << 10) * (1 << 10) * (1 << 10)
== 3 * (2**10 * 2**10 * 2**10)
== 3 * (2**30)
如果您想了解更多信息,related question and a good Wikipedia article 关于这个问题。