gpt4 book ai didi

c - 高性能计算pthread参数-c++

转载 作者:太空宇宙 更新时间:2023-11-03 23:31:15 24 4
gpt4 key购买 nike

我正在做一个项目,我需要使用 pthread (C++) 使用多线程。我有一个问题:

当我想在该线程中进行一些高性能计算而没有太多其他线程中断时,最好的 pthread 参数配置设置是什么?

目前我正在使用这样的东西:

pthread_t thread;

struct sched_param param;
int sched = SCHED_FIFO;
memset(&param, 0, sizeof(sched_param));

// Now I set priority to max value (sched_get_priority_max() returns that value)
param.sched_priority = sched_get_priority_max();

// Create my thread
pthread_create(&thread, NULL, (void *) &hard_number_crunching, (void *) &structure_passed_to_thread);

// finally I set parameters to thread
pthread_setschedparam(&thread, sched, &param);

我在 SCHED_FIFO 和 SCHED_RR 之间切换“int sched”,但这对我帮助不大。是否可以强制此线程在 CPU 上运行的时间比现在更长?

最佳答案

如果您要为每个核心创建一个线程,您可能需要设置线程的关联性以防止它在核心之间漫游。这通常通过确保每个线程保持接近其缓存数据来提高性能。参见:

int sched_setaffinity(pid_t pid,size_t cpusetsize,cpu_set_t *mask);

注意:如果您创建的线程多于内核,则不应设置关联!这可能会导致各种疯狂的事情发生,更不用说死锁了。

关于c - 高性能计算pthread参数-c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14832062/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com