定义要在函数调用中由线程访问的全局常量字符串变量

玫瑰的赫克托

允许调用函数的各种线程全局访问常量字符串。

我有以下代码,它从字符列表(允许的字母表)中选择一个随机字符并将其附加以形成一个随机单词。我将此用于遗传算法,但是当我尝试对其进行并行化以使其更快(家庭作业分配)时,它最终会变慢。在询问了我的教授并解决了大部分问题之后,最后一个细节是我的字母表不允许多个线程同时阅读。

我曾尝试定义 GENES,然后使用#pragma omp threadprivate(GENES)我的教授说可以使用的命令。

我试过了

const string GENES = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPRSTUVWXYZ"
#pragma omp threadprivate(GENES)

编译时返回这个。

error: ‘GENES’ declared ‘threadprivate’ after first use

我也试过

string GENES;
#pragma omp threadprivate(GENES)
GENES = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPRSTUVWXYZ;

返回:

error: ‘GENES’ declared ‘threadprivate’ after first use
#pragma omp threadprivate(GENES)
                             ^
error: ‘GENES’ does not name a type
GENES = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPRSTUVWXYZ 1234567890, .-;:_!\"#%&/()=?@${[]}";

最后,我尝试在线程中定义 GENES 并将它们作为参数传递或将它们硬编码到函数中。所有这些都会使程序变慢。

我希望程序运行得更快,但实际上它运行得更慢,从添加线程后的 0.5 秒到 1-3 秒。我查了一下,这不是由于创建线程的时间。

这应该通过使所有线程都可以访问字符串来解决,但我似乎无法编译和运行我成功找到的任何解决方案。

Zulan

我的字母表不允许多个线程同时阅读。

这不是真的。

多线程读取是完全没问题的std::string既然如此,则const没有线程可以实际写入它1它既正确快速2

通常在 C++ 中,const 松散地暗示线程安全保持GENES共享,这很可能不是您性能问题的原因。

如果您的目标是找出性能问题,我建议为您的平台使用适当的性能分析工具,这些工具可以识别线程/OpenMP。如果您想询问有关如何提高程序并行性能的问题,请确保

  1. 包括一个最小的、可重现的示例这并不意味着包含您的整个程序但是显示性能问题的最小版本。
  2. 分享您的具体测量结果和方法。
  3. 告诉我们您如何编译程序以及运行它的系统的规格(CPU 和内存)

1:假设没有恶const_cast小号

2:除非您将可变全局变量放在同一缓存行上,这似乎不太可能。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在名称由字符串变量定义的类中调用已知函数(带有参数)

来自分类Dev

从字符串变量调用非全局函数

来自分类Dev

指向函数内部定义的常量字符串的全局char指针

来自分类Dev

函数调用创建的全局变量默认为空字符串,应该是未定义的

来自分类Dev

如何在rpg程序中定义可在调用函数中访问的全局变量

来自分类Dev

如何在rpg程序中定义可在调用函数中访问的全局变量

来自分类Dev

使用字符串变量访问常量

来自分类Dev

django / python:通过等价字符串访问定义的常量

来自分类Dev

Python:是否可以调用由字符串变量指定的函数?

来自分类Dev

在Ruby中定义涉及变量的常量字符串的最干净方法是什么?

来自分类Dev

尝试从字符串名称访问$ _SERVER(或任何全局)变量

来自分类Dev

Python-定义全局字符串变量

来自分类Dev

如何访问由Shell Script中的各种字符串组成的变量?

来自分类Dev

获取空字符串从全局变量内部函数

来自分类Dev

Django模板标签可以访问字符串变量,但是不能调用表函数?

来自分类Dev

访问由C中的函数修改的字符串数组时出现分段错误

来自分类Dev

用字符串替换由变量定义的行范围

来自分类Dev

对象文字的调用函数,由字符串表示-JavaScript

来自分类Dev

从串联字符串中调用变量

来自分类Dev

如何从字符串中调用变量?

来自分类Dev

在汇编中定义字符串常量的语法是什么?

来自分类Dev

我可以在protobuf中定义常量字符串吗?

来自分类Dev

从字符串中调用函数

来自分类Dev

从jQuery中的字符串调用函数

来自分类Dev

从字符串中调用PHP函数

来自分类Dev

使用函数Javascript / React中的字符串动态调用函数/变量

来自分类Dev

在方法中返回字符串并更改全局变量

来自分类Dev

方法中的全局字符串变量插值

来自分类Dev

如何在index.html中调用/访问.constant变量(字符串)?

Related 相关文章

  1. 1

    在名称由字符串变量定义的类中调用已知函数(带有参数)

  2. 2

    从字符串变量调用非全局函数

  3. 3

    指向函数内部定义的常量字符串的全局char指针

  4. 4

    函数调用创建的全局变量默认为空字符串,应该是未定义的

  5. 5

    如何在rpg程序中定义可在调用函数中访问的全局变量

  6. 6

    如何在rpg程序中定义可在调用函数中访问的全局变量

  7. 7

    使用字符串变量访问常量

  8. 8

    django / python:通过等价字符串访问定义的常量

  9. 9

    Python:是否可以调用由字符串变量指定的函数?

  10. 10

    在Ruby中定义涉及变量的常量字符串的最干净方法是什么?

  11. 11

    尝试从字符串名称访问$ _SERVER(或任何全局)变量

  12. 12

    Python-定义全局字符串变量

  13. 13

    如何访问由Shell Script中的各种字符串组成的变量?

  14. 14

    获取空字符串从全局变量内部函数

  15. 15

    Django模板标签可以访问字符串变量,但是不能调用表函数?

  16. 16

    访问由C中的函数修改的字符串数组时出现分段错误

  17. 17

    用字符串替换由变量定义的行范围

  18. 18

    对象文字的调用函数,由字符串表示-JavaScript

  19. 19

    从串联字符串中调用变量

  20. 20

    如何从字符串中调用变量?

  21. 21

    在汇编中定义字符串常量的语法是什么?

  22. 22

    我可以在protobuf中定义常量字符串吗?

  23. 23

    从字符串中调用函数

  24. 24

    从jQuery中的字符串调用函数

  25. 25

    从字符串中调用PHP函数

  26. 26

    使用函数Javascript / React中的字符串动态调用函数/变量

  27. 27

    在方法中返回字符串并更改全局变量

  28. 28

    方法中的全局字符串变量插值

  29. 29

    如何在index.html中调用/访问.constant变量(字符串)?

热门标签

归档