Browse Source

Added dummy MPI support

Adam Kelly 5 years ago
parent
commit
2a64f26d9a

+ 8 - 1
example.c

@@ -1,7 +1,14 @@
 #include "tangle.h"
 
+#include <stdio.h>
+#include "mpi.h"
+
 int main() {
-  say_hi(); 
+  MPI_Init(NULL, NULL);
+
+  count_to(10); 
+
+  MPI_Finalize();
 
   return 0;
 }

+ 20 - 3
tangle/CMakeLists.txt

@@ -1,6 +1,21 @@
 # Builds Tangle as a shared library, libtangle.so
 
 # ------------------------------
+# ---- OPTIONS
+# ------------------------------
+
+option(DISTRIBUTED "Use MPI" ON)
+
+# ------------------------------
+# ---- FIND PACKAGES
+# ------------------------------
+
+if (DISTRIBUTED)
+    find_package(MPI REQUIRED)
+    include_directories(${MPI_INCLUDE_PATH})
+endif()
+
+# ------------------------------
 # ---- COMPILER FLAGS
 # ------------------------------
 
@@ -14,12 +29,14 @@ add_subdirectory(src)
 message("Tangle Source: ${TANGLE_SRC}")
 add_library(tangle SHARED ${TANGLE_SRC})
 
-# Header files
-
+# Header files & linking
 target_include_directories(tangle PRIVATE src PUBLIC include)
+target_link_libraries(tangle ${MPI_C_LIBRARIES})
 
 # ------------------------------
 # ---- DEFINITIONS
 # ------------------------------
 
-add_compile_definitions(_DO_OTHER)
+if (DISTRIBUTED)
+    add_compile_definitions(_DISTRIBUTED)
+endif()

+ 1 - 1
tangle/include/tangle.h

@@ -3,6 +3,6 @@
 #ifndef __TANGLE_H
 #define __TANGLE_H
 
-void say_hi();
+void count_to(int i);
 
 #endif

+ 14 - 4
tangle/src/CMakeLists.txt

@@ -1,4 +1,14 @@
-set(TANGLE_SRC
-    ${CMAKE_CURRENT_SOURCE_DIR}/implementation.c
-    PARENT_SCOPE
-)
+
+
+if (DISTRIBUTED)
+    message("Dis")
+    set(TANGLE_SRC
+        ${CMAKE_CURRENT_SOURCE_DIR}/implementation_mpi.c
+        PARENT_SCOPE
+    )
+else()
+    set(TANGLE_SRC
+        ${CMAKE_CURRENT_SOURCE_DIR}/implementation.c
+        PARENT_SCOPE
+    )
+endif()

+ 4 - 10
tangle/src/implementation.c

@@ -2,14 +2,8 @@
 
 #include <stdio.h>
 
-void say_hi() {
-  printf("Hi!\n");
-
-#ifdef _DO_THING
-  printf("YOU ENTERED POWER MODE!!!1!!\n");
-#endif
-
-#ifdef _DO_OTHER
-  printf("YOU ENTERED OTHER MODE!!!1!!\n");
-#endif
+void count_to(int i) {
+  for (int j = 1; j <= i; j++) {
+    printf("%d\n", j);
+  }
 }

+ 21 - 0
tangle/src/implementation_mpi.c

@@ -0,0 +1,21 @@
+#include "tangle.h"
+
+#include <stdio.h>
+#include "mpi.h"
+
+void count_to(int i) {
+    int rank;
+    int size;
+
+    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
+    MPI_Comm_size(MPI_COMM_WORLD, &size);
+
+    printf("Hai from %d\n", rank);
+
+    for (int j = 1; j <= i; j++) {
+        if (j % size == rank) {
+            printf("%d\n", j);
+        }
+        MPI_Barrier(MPI_COMM_WORLD);
+    }
+}