openmp

    0熱度

    1回答

    我有一個函數可以確定數組是否需要平滑。我有多個陣列需要執行此操作。我想使用OpenMP中的部分構造來完成此操作。不幸的是,只要代碼增長得很快,我就會遇到分段錯誤。這可能是一個內存限制問題,但我希望你的意見。 下面是調用該函數的僞代碼: #pragma omp parallel default(shared) private(i,j,k,memd,memi,mdpmi,mdpme,mipmn,mip

    1熱度

    1回答

    我終於得到了一段與OpenMP並行運行的代碼,沒有錯誤。但是,當我將dll部署到另一臺機器時,它不再平行運行。 記錄顯示omp_in_parallel() == 0在另一臺機器上,但沒有在我的機器上。 我的機器正在使用Intel i5 CPU,其中有2個超線程核心,用於生效omp_get_numProcs() == 4。另一個是在Microsoft Server 2008上爲其分配2個處理器的虛擬

    8熱度

    2回答

    我正在使用OpenMP並需要使用提取並添加操作。但是,OpenMP不提供適當的指令/調用。我想保持最大的可移植性,因此我不想依賴編譯器內在函數。 相反,我正在尋找一種方法來利用OpenMP的原子操作來實現這一點,但我已經陷入死衚衕。這甚至可以完成?注:下面的代碼幾乎做什麼,我想: #pragma omp atomic x += a 差不多 - 但不完全的,因爲我真的需要的x舊值。 fetch

    2熱度

    3回答

    我有一個函數,通過引用傳遞兩個結構。這些結構由動態分配的數組組成。現在,當我嘗試實現OpenMP時,我得到的是一個放緩,而不是加速。我認爲這可以歸因於可能的共享問題。下面是一些代碼,請過目(C): void leap(MHD *mhd,GRID *grid,short int gchk) { /*-- V A R I A B L E S --*/ // Indexes

    5熱度

    2回答

    我有一個數字運算C/C++應用程序。它基本上是不同數據集的主循環。我們可以使用openmp和mpi訪問100個節點的集羣。我想加快應用程序的速度,但我是mpi和openmp的絕對新手。我只是想知道什麼是最簡單的學習和調試,即使性能不是最好的。 我也想知道什麼是最適合我的主循環應用程序。 感謝

    3熱度

    2回答

    我正在嘗試使用OpenMP的不同種類的並行化。因此,我在我的代碼中有幾行#pragma omp parallel for,其中我(un-)註釋交替出現。有沒有辦法讓這些行有條件的像下面這樣的東西,而不是工作代碼? define OMPflag 1 #if OMPFlag pragma omp parallel for for ...

    3熱度

    3回答

    並行化兩個嵌套的for-loops,我遇到了我無法解釋的行爲。我已經在i7 860和Xeon E5540上嘗試了三種使用OpenMP的並行化,我期望代碼在兩個平臺上的行爲或多或少相同,這意味着其中一個平臺在所有三種不同情況下都應該更快我測試過了。但是,這不是這種情況: 對於情況1,至強是〜10%的速度, 對於情況2中,I7是通過因子2和 更快殼體3,至強再次快於因子1,5 你知道什麼可能導致這種情

    1熱度

    2回答

    我有一個C++類庫,使用omp進行並行化。我注意到我的問題,當它總是用完我的處理器上的所有核心沒有什麼omp_set_num_threads(threadCount)作爲輸入。 所以investegating當我意識到讓NUM_THREADS工作的唯一方法是不使用OMP_SET_NUM_THREADS()方法,但設置NUM_THREADS的並行指令,像這樣: #pragma omp paralle

    1熱度

    2回答

    直接問題:我有一個簡單的循環,可以是一個計算密集型函數。讓我們假設每次迭代需要相同的時間量(因此負載均衡應該是很容易)。 #pragma omp parallel { #pragma omp for schedule(dynamic) for (int i=0; i < 30; i++) { MyExpensiveFunction(); } } // parallel b

    0熱度

    2回答

    什麼是並行編程中的理想數據結構,在我的情況下是OpenMP。 #pragma omp parallel for for(int i = 0; i < N; i++) { if(table[i] == true) container.insert(i); // ?? what kind } 在這個例子中,如果我們使用一個相似大小的表格,這可能很簡單。 C++中用於共享