---
# System prepended metadata

title: Morpher-v2

---

# Morpher-v2

## running steps
```bash=
# run these each time reconnect to the server
source venv/bin/activate
export PATH=$PATH:/home/ycpinlabpc/Desktop/lab-progress/morpher-v2/llvm-project/llvm-build/bin
```
```bash=
python -u run_morpher_llvm16.py morpher_benchmarks/array_add/array_add.c array_add
```
```bash=
# path to c code source file
/home/annyen1113/morpher-v2/dfg_generator/benchmarks/morpher_benchmarks
```
![image](https://hackmd.io/_uploads/r1AtHTQyR.png)

* Change the config directory in **run_morpher_llvm16.py** to run mapping on different cgra type
* Change the morpher_benchmarks/**array_add**/**array_add.c** **array_add** marked parts to run different dfg mapping


---
hpcg successfully mapped with config **config/alu_dependent_stdnoc.yaml**


---
## 2024/4/12
[LISA](https://hackmd.io/DcwC-y0NSlqJptGo8vAVYQ)
### array_cond_no_else

![image](https://hackmd.io/_uploads/S1loR4IgA.png)
```cpp=
__attribute__((noinline))
void array_cond_no_else(){

   int x;
   for (int i=0;i<SIZE; i++){
      #ifdef CGRA_COMPILER
      please_map_me();
      #endif

        if (A[i] > B[i])
                C[i] = A[i] - B[i];
```

### array_cond
![image](https://hackmd.io/_uploads/H1IlXHUg0.png)

```cpp=
__attribute__((noinline))
void array_cond(){

   int x;
   for (int i=0;i<SIZE; i++){
      #ifdef CGRA_COMPILER
      please_map_me();
      #endif

        if (A[i] > B[i])
                C[i] = A[i] - B[i];
        else
                C[i] = A[i] + B[i];
```

### recursion example
```cpp=
#include <string.h>
#include <stdio.h>

#define SIZE  20
int A[SIZE], B[SIZE], C[SIZE];

__attribute__((noinline))
int factorial(int n)
{
   #ifdef CGRA_COMPILER
   please_map_me();
   #endif
   
   return n * factorial(n ‑ 1);
}
int main(){

int result;
result = factorial(10);

printf("%d\n", result);

return 0;

}
```
#### current result
unable to  map recursion
![image](https://hackmd.io/_uploads/HJW1fd8l0.png)
