跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
  • Online Tools
  • 用户
  • 群组
折叠
品牌标识

D2Learn Forums

JFH-CAEJ

JFH-CAE

@JFH-CAE
关于
帖子
5
主题
1
群组
0
粉丝
0
关注
0

帖子

最新 最佳 有争议的

  • 求助 g++15.1使用std::execution对标准库算法加速遇到的问题 - 引入TBB头文件报错
    JFH-CAEJ JFH-CAE

    @SPeak 在 求助 g++15.1使用std::execution对标准库算法加速遇到的问题 - 引入TBB头文件报错 中说:

    如果只是使用C++23, 不一定要使用import std/模块特性 (tbb目前本身没有支持/适配

    谢谢回复,我大概是明白了,看起来错误似乎来源于同时#include 标准库头文件,和import std; 而TBB库中会引入标准库的头文件。


  • 求助 g++15.1使用std::execution对标准库算法加速遇到的问题 - 引入TBB头文件报错
    JFH-CAEJ JFH-CAE

    @JFH-CAE 在 求助 g++15.1使用std::execution对标准库算法加速遇到的问题 - 引入TBB头文件报错 中说:
    https://github.com/JFH-CAE/TBBtest


  • 求助 g++15.1使用std::execution对标准库算法加速遇到的问题 - 引入TBB头文件报错
    JFH-CAEJ JFH-CAE

    谢谢回复,我已经将最小可复现示例工程放入公共仓库https://github.com/JFH-CAE/TBBtest,系统、工具链版本和错误信息已经放在readme中。


  • 求助 g++15.1使用std::execution对标准库算法加速遇到的问题 - 引入TBB头文件报错
    JFH-CAEJ JFH-CAE
    #include <iostream>
    #include <vector>
    #include <tbb/tbb.h>
    
    int main()
    {
    	std::vector<int> foo(1000);
    	tbb::parallel_for(0, 1000, [&](int i) {
    		foo[i] = i;
    		std::cout << i << std::endl;
    	});	
    }
    

    是可以正常工作的。


  • 求助 g++15.1使用std::execution对标准库算法加速遇到的问题 - 引入TBB头文件报错
    JFH-CAEJ JFH-CAE

    参照std::for_each在GCC上和std::execution::par_unseq一起使用无法工作, 但在MSVC上可以工作 ,我按照提供的解决方案进行了尝试

    #CMakeLists.txt
    #指定编译器路径
    set(CMAKE_C_COMPILER gcc) 
    set(CMAKE_CXX_COMPILER g++)
    #设置C++标准
    set(CMAKE_CXX_SCAN_FOR_MODULES ON) ##使用模块
    ##使用std模块
    set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD "d0edc3af-4c50-42ea-a356-e2862fe7a444")
    set(CMAKE_CXX_STANDARD 23)
    #设置项目名
    project(MyProject LANGUAGES CXX)
    set(CMAKE_CXX_STANDARD_REQUIRED ON)
    set(CMAKE_CXX_EXTENSIONS OFF)
    # 启用调试符号
    set(CMAKE_BUILD_TYPE Debug)
    #设置编译器参数
    if(CMAKE_BUILD_TYPE MATCHES "Debug")
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O0")
    elseif(CMAKE_BUILD_TYPE MATCHES "Release")
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3")
    endif()
    
    # 启用C++20模块支持
    if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fmodules")
    endif()
    
    find_package(TBB)
    set(CMAKE_CXX_MODULE_STD 1)
    add_executable(app src/main.cpp)
    
    #添加依赖关系
    target_link_libraries(app fft_module TBB::tbb)
    
    

    我的TBB版本为2021.11.0,执行如下代码

    //main.cpp
    import std;
    
    int main() {
        std::vector<int> foo;
        foo.reserve(1000);
        for (int i = 0; i < 1000; i++) {
            foo.push_back(i);
        }
    
        std::for_each(std::execution::par_unseq,
    									foo.begin(), foo.end(),
    										[](auto &&item) {
    										std::cout << item << std::endl;
    										std::random_device dev;
    										std::mt19937 rng(dev());
    										std::uniform_int_distribution<std::mt19937::result_type> dist6(10, 100);
    										std::this_thread::sleep_for(std::chrono::milliseconds(dist6(rng)));
    										std::cout << "Thread ID: " << std::this_thread::get_id() << std::endl;
    									});
    }	
    

    打印出的线程id都是一致的,但是当我在import std; 前加入#include<tbb/tbb.h>;时 编译器会给我报出一大段类型冲突的错误,我才刚刚尝试使用C++20(仅学习了语言,非计算机专业)进行数值计算程序的开发工作,基础比较薄弱,如果大佬有解决方案,希望能稍微解释的详细些。

  • 登录

  • 没有帐号? 注册

  • 登录或注册以进行搜索。
d2learn forums Powered by NodeBB
  • 第一个帖子
    最后一个帖子
0
  • 版块
  • 最新
  • 标签
  • 热门
  • Online Tools
  • 用户
  • 群组