openmp

    0熱度

    1回答

    我是OpenMP和並行編程的新手,試圖嘗試使用它。我有一個簡單的30個元素的循環,每個元素正在處理一個process()函數。但我故意拖延了一個元素(5th元素)。下面的代碼: std::mutex mu; void print_msg(const char* msg, size_t n) { mu.lock(); cout << msg << n << endl;

    0熱度

    2回答

    我在Linux上編譯一個複雜的C++項目,它使用OpenMP,用CMake和GCC 7編譯。 我在這個特定項目中遇到的奇怪問題OpenMP顯然是在工作,但它認爲只有一個線程被支持,應該是8。但是,如果我手動指定線程數,它確實會加速代碼。 logOut << "In parallel? " << omp_in_parallel() << std::endl; logOut << "Num thre

    0熱度

    1回答

    我的機器中的邏輯核心數是8.如果我將線程數增加爲例如16 omp_set_num_threads(16);,那麼缺點是什麼?

    0熱度

    2回答

    我是並行編程的新手,想知道我可以啓動的最大線程數是多少。 我想這 #include<stdio.h> #include<omp.h> void pooh(int id,int a[]) { a[id]=a[id]-1 ; printf("%d\n",id) ; } int main() { int a[1001] ; int i ; f

    0熱度

    1回答

    這是我的代碼,我想使它與OpenMP平行。我有一個主循環來製作並行和一些內部循環。 是內部循環的指數,像p,i或Li私人或共用? 如果我沒有將變量聲明爲私有或共享,會發生什麼情況? 你是否建議在這個並行循環中使用可分配的變量? !$OMP PARALLEL DO do l = 1,n_rep do p = 1,n_l - 1 do q = 1,n_l - 1

    2熱度

    2回答

    我正在使用OpenMP來並行化for循環。我試圖通過線程ID訪問C++ Armadillo向量,但是我想知道是否必須將訪問放在關鍵部分,即使不同線程訪問不相交區域的內存。 這是我的代碼: #include <armadillo> #include <omp.h> #include <iostream> int main() { arma::mat A = arma::ran

    0熱度

    1回答

    我是C中OpenMP的新手。我用它來並行處理函數中的for循環,但事實證明,與單線程相比,它大大減慢了for循環案件。例如,對於每個點(halo),for循環可以在10秒左右完成,但OpenMP需要幾分鐘。 在這個函數中,我試着計算每個點(暈)的許多殼的密度,通過計算殼內的粒子,然後將它們排列成一個數組。有512^3個粒子,我想計算大約200點(光暈)。我想分割不同線程的點(暈)以使其更快。 #d

    1熱度

    3回答

    我有兩個程序,產生多個線程和打印hello <TID> world <TID>標準輸出。 第一個打印它在一個功能: #include <omp.h> #include <stdio.h> int main() { #pragma omp parallel { int ID = omp

    0熱度

    1回答

    我很難理解爲什麼for循環,使用OpenMP並行化,不若VTK代碼在循環內執行使用所有n_threads線程(= 2X #cores)。具體而言,我想用網格相交線條/光線。我通過 建設OBB樹從網格 所有需要的線相交,其中網 因爲我想並行它遵循this tutorial,我創建n_threads樹,使得每個線程可以使用它自己的樹的實例: // Pre-allocate the array int

    1熱度

    1回答

    我編寫了一個小程序來測試OpenMP的性能增益。 我使用Microsoft Visual Studio進行編譯。 void findAllPrimesUntilX() { for (int i = 2; i <= upToXthPrimes; i++) { if (i % 500 == 0) std::cout << "First " << i * 500 << "prime