gpt4 book ai didi

c++ - 创建多个 Caffe 实例 - C++

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:59:53 24 4
gpt4 key购买 nike

我想在单个 C++ 程序中创建多个 Caffe 实例,以便我可以使用多个 GPU,但 Caffe 似乎是一个单例实例。我可以运行使用 Caffe 的单独程序,并为每个程序分配一个唯一的 GPU。多程序方法不像我从单个程序运行它们那样容易管理。

最佳答案

@Apexdev,我正在处理类似的问题。我想在同一个数据集上测试多个模型。以前我曾经使用与您不同的脚本进行测试,现在我可以使用相同的脚本调用所有脚本。这是对我有用的解决方案......头文件:

#include <pthread.h>

第 1 步:定义一个我们将传递给线程参数的结构

Ex. struct thread_Arguments {
int GPU_id;
std::string Model;
std::vector<std::string> list;
};

第 2 步:创建一个将执行您想要的任何操作的函数

 void *MultiscriptInvoke(void *threadarg) {
struct thread_Arguments *Newthread;
Newthread = (struct thread_Arguments *) threadarg;
std::string modelFile = Newthread->Model;
int GPU_ID = Newthread->GPU_ID;
// Terminate thread using
pthread_exit(NULL);
}

第三步:定义线程创建

pthread_t threads[NUM_THREADS];
pthread_attr_t attr;
void *status;

第四步:初始化线程

pthread_attr_init(&attr);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
struct thread_Arguments td[NUM_THREADS];

第五步:创建线程

for (i = 0; i < NUM_THREADS; i++) {
td[i].GPU_ID = GPU1[i];
td[i].Model = ModelName[i];
rc = pthread_create(&threads[i], NULL, MultiscriptInvoke, (void *)i );
if (rc) {
cout << "Error:unable to create thread," << rc << endl;
exit(-1);
}
}

第六步:WAITING线程完成

   pthread_attr_destroy(&attr);
for( i = 0; i < NUM_THREADS; i++ ) {
rc = pthread_join(threads[i], &status);
if (rc) {
cout << "Error:unable to join," << rc << endl;
exit(-1);
}
}
pthread_exit(NULL);

希望对您有所帮助。根据需要修改结构并创建多个实例。引用:感谢 tutorialspoint

关于c++ - 创建多个 Caffe 实例 - C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44526092/

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